將資料從 PostgreSQL 複製到 Snowflake

瞭解如何使用 OCI GoldenGate 將資料從 PostgreSQL 複製到 Snowflake。

開始之前

若要順利完成此快速啟動,您必須具備下列項目:

環境設定:PostgreSQL

設定此「快速啟動」的環境:

  1. 執行下列命令以安裝 PostgreSQL 。

    1. 安裝 PostgreSQL 伺服器 :

      sudo yum install postgresql-server
    2. 安裝 postgresql-contrib 模組以避免此 SQL 異常狀況:

      sudo yum install postgresql-contrib
    3. 建立新的 PostgreSQL 資料庫叢集:

      sudo postgresql-setup --initdb
    4. 啟用 postgresql.service:

      sudo systemctl enable postgresql.service
    5. 啟動 postgresql.service:

      sudo systemctl start postgresql.service
  2. PostgreSQL 預設只允許本機連線。允許遠端連線至 PostgreSQL 。

    1. 在 /var/lib/pgsql/data/postgresql.conf 中,準備資料庫以進行複製。

    2. 尋找和取消註釋 listen_addresses = 'localhost',並將 localhost 變更為星號 (`):

      listen_addresses = '*'
    3. 將下列參數設定如下:

      • wal_level = logical

      • max_replication_slots = 1

      • max_wal_senders = 1

      • track_commit_timestamp = on

      注意:

      設定 /var/lib/pgsql/data/pg_hba.conf 以確定將從屬端認證設為允許來自 Oracle GoldenGate 主機的連線。例如,新增下列項目:

      #Allow connections from remote hosts
      
      host all all 0.0.0.0/0 md5

      請參閱 pg_hba.conf 檔案瞭解詳細資訊。

      1. 重新啟動 PostgreSQL 伺服器 :
      sudo systemctl restart postgresql.service
      1. 如果使用 Oracle Cloud Compute 代管 PostgreSQL,請開啟連接埠 5432:
      sudo firewall-cmd --permanent --add-port=5432/tcp
      sudo firewall-cmd --reload
      sudo firewall-cmd --list-all
    4. 在 VCN 的安全清單中開啟連接埠 5432。

    5. 連接到 PostgreSQL 。

      > sudo su - postgres
      > psql

      注意:如果上述範例沒有作用,您也可以輸入 sudo su - postgres psql。

    6. 設定 PostgreSQL。

      1. 下載並執行 seedSRCOCIGGLL_PostgreSQL.sql ,以設定資料庫並載入範例資料。

      2. 執行下列命令來設定使用者 (請確定以實際密碼取代 <password>):

      create user ggadmin with password '<password>';
      alter user ggadmin with SUPERUSER;
      GRANT ALL PRIVILEGES ON DATABASE ociggll TO ggadmin;

環境設置:雪花

  1. 在 Snowflake 中建立 GoldenGate 使用者,並具備適當權限。

  2. 使用範例綱要建立目標表格。

請確定表格和使用者已順利建立。

作業 1:建立 OCI GoldenGate 資源

此快速啟動範例需要來源和目標的部署和連線。

  1. 建立部署來源 PostgreSQL 資料庫。

  2. 建立大數據部署目標 Snowflake 資料庫。

  3. 使用下列值建立 PostgreSQL 連線:

    1. 對於類型,請從下拉式清單中選取 PostgreSQL 伺服器。

    2. 對於資料庫名稱,請輸入 ociggll。

    3. 在主機中,輸入 PostgreSQL 執行所在運算執行處理的公用 IP。

    4. 在連接埠中,輸入 5432。

    5. 在使用者名稱中,輸入 ggadmin。

    6. 在密碼中,輸入您的密碼。

    7. 若為安全協定,請從下拉式清單中選取純文字。

  4. 建立具有下列值的 Snowflake 連線:

    1. 若為連線 URL,請輸入 jdbc:snowflake://<account_identifier>.snowflakecomputing.com/?warehouse=<warehouse name>&db=OCIGGLL。

      注意:請確定將 <account_identifier> 和 <warehouse name> 取代為適當的值。

    2. 若為認證類型,請從下拉式清單中選取基本認證。

    3. 在使用者名稱中,輸入名稱。

    4. 在密碼中,輸入密碼。

  5. (選擇性) 如果您的大數據部署沒有公用端點,請建立 GoldenGate 連線,然後將此連線指派給來源 PostgreSQL 部署。

  6. 指定來源 PostgreSQL 連線至 PostgreSQL 部署。

  7. 指派 Snowflake 連線至目標 Big Data 部署。

任務 2:啟用補充記錄

若要啟用補充日誌記錄:

  1. 啟動 PostgreSQL GoldenGate 部署主控台:

    1. 從「部署」頁面中,選取 PostgreSQL 部署以檢視其詳細資訊。

    2. 在 PostgreSQL 部署詳細資訊頁面上,選取啟動主控台。

    3. 在建置主控台登入頁面中,輸入「工作 1」步驟 1 中提供的 GoldenGate 管理證明資料。

      注意:如果在建立部署時未選取 IAM 作為證明資料存放區,則必須登入。

  2. 在建置主控台中,選取左導覽中的 DB 連線,接著選取來源 PostgreSQL 資料庫,然後選取 Trandata 。

  3. 在 TRANDATA 頁面的「TRANDATA 資訊」旁邊,選取新增 TRANDATA (加號圖示)。

  4. 在 Trandata 面板中,針對綱要名稱,輸入 src_ociggll,然後選取提交。

    注意:使用搜尋欄位來搜尋 src_ociggll,並確認已新增表格。

任務 3:建立擷取

  1. 新增「變更資料擷取」擷取:

    1. 在左側導覽中,選取擷取,

    2. 在「擷取」頁面上,選取新增擷取 (加號圖示),然後完成欄位,如下所示:

      • 在「擷取資訊」頁面上:

        1. 對於擷取類型,請選取變更資料擷取擷取。

        2. 在程序名稱中,輸入 Extract 的名稱,例如 ECDC。

        3. 選取下一步。

      • 在「擷取選項」頁面上:

        1. 若為「來源」證明資料,請從網域下拉式清單中選取 Oracle GoldenGate

        2. 從別名下拉式清單中選取來源 PostgreSQL 資料庫。

        3. 對於「擷取歷程檔名稱」,請輸入兩個字元的歷程檔名稱,例如 C1。

        4. 選取下一步。

      • 在「擷取參數」頁面上,使用下列項目取代 MAP *.*, TARGET *.*;:

        TABLE SRC_OCIGGLL.*;
    3. 選取建立並執行。

  2. 新增初始載入摘錄:

    1. 在「擷取」頁面上,選取新增擷取,然後完成「新增擷取」表單,如下所示:

      • 在「擷取資訊」頁面上:

        1. 對於「擷取」類型,請選取初始載入擷取。

        2. 在處理名稱中,輸入名稱,例如 EIL。

        3. 選取下一步。

      • 在「擷取選項」頁面上:

        1. 若為「來源」證明資料,請從網域下拉式清單中選取 Oracle GoldenGate 。

        2. 從別名下拉式清單中選取 PostgreSQL 資料庫。

        3. 在擷取歷程檔名稱中輸入兩個字元的歷程檔名稱,例如 I1。

        4. 選取下一步。

      • 在「擷取參數」頁面上,以下列項目取代文字區域的內容:

        EXTRACT EIL
        USERIDALIAS PostgreSQL_Compute, DOMAIN OracleGoldenGate
        EXTFILE I1, PURGE
        TABLE src_ociggll.*;

        注意:請確定先移除 USERIDALIAS 前面的 SOURCEDB 參數,再繼續進行。

    2. 選取建立並執行。

您可返回「摘錄」頁面,在此您可以觀察「摘錄」的開始。

任務 4:建立初始載入擷取的分配路徑

若要建立初始載入擷取的分配路徑,請執行下列動作:

  1. 在 Oracle Cloud 主控台的「部署」頁面中,選取目標大數據部署。

  2. 在部署詳細資料頁面上,選取啟動主控台,然後以管理員使用者身分登入。

  3. 如果使用 IAM 證明資料存放區,請繼續執行「建立分送路徑」步驟。如果使用 GoldenGate 證明資料存放區,請建立來源 GoldenGate 用來連線至目標 GoldenGate 的使用者。

    1. 在導覽功能表中,選取使用者管理。

    2. 選取新增使用者 (加號圖示)、依下列方式完成欄位,然後選取提交:

      • 在使用者名稱中,輸入 ggsnet。

      • 在角色中,選取運算子。

      • 輸入密碼兩次以進行驗證。

  4. 在來源 PostgreSQL 建置主控台中,為在上一個步驟中建立的使用者建立「路徑連線」。

    1. 在導覽功能表中,選取路徑連線。

    2. 選取新增路徑連線 (加號圖示)、依下列方式完成欄位,然後選取送出:

      • 在「證明資料別名」中輸入 dpuser。

      • 對於使用者 ID,請輸入 ggsnet

      • 若為「密碼」,請輸入上一個步驟所使用的相同密碼。

  5. 建立分配路徑。

    1. 在服務功能表列中,選取路徑,然後選取新增分送路徑 (加號)。

    2. 完成「新增路徑」表單,如下所示:

      • 在「路徑資訊 (Path Information)」頁面上:

        1. 在路徑名稱中,輸入此路徑的名稱。

        2. 選取下一步。

      • 在「來源選項 (Source Options)」頁面上:

        1. 對於來源擷取,請保留空白。

        2. 在歷程檔名稱中,輸入「起始載入擷取」歷程檔名稱 (I1)。

        3. 選取下一步。

      • 在「目標選項 (Target Options)」頁面上:

        1. 在目標中,選取 wss 。

        2. 針對目標主機,輸入不含 https:// 或任何尾端斜線的目標部署 URL。

        3. 在連接埠號碼中,輸入 443。

        4. 在歷程檔名稱中,輸入 I1。

        5. 在目標認證方法中,選取 UserID 別名。

        6. 在網域中,輸入在上一個步驟中建立的網域名稱。

        7. 在別名中,輸入在上一個步驟中建立的別名 (dpuser)。

        8. 選取下一步。

    3. 選取建立並執行。

    您可返回「分送服務」頁面,複查建立的路徑。

  6. 在目標建置主控台中,複查因「分送」路徑而建立的「接收者」路徑:

    1. 選取路徑。

    2. 複查「路徑」詳細資訊。

作業 5:新增初始載入的 Replicat

  1. 在目標大數據建置主控台中,新增「起始載入 Replicat」。

    1. 在導覽功能表中,選取複製,然後選取新增 Replicat (加號圖示)。

    2. 在「複本」頁面上,依下列方式完成「新增複本」欄位:

      1. 在「複製資訊 (Replication Information)」頁面上:

        1. 對於複製類型,請選取傳統或協調。

        2. 在程序名稱中輸入名稱,例如 RIL。

        3. 選取下一步。

      2. 在「Replicat 選項」頁面上:

        1. 在複製追蹤名稱中,輸入任務 2 (I1) 的追蹤名稱。

        2. 在目標證明資料中,選取 Snowflake 連線的網域和別名。

        3. 對於可用的別名,請從下拉式清單中選取別名,例如 Snowflake。

        4. (選用) 啟用外部儲存,從下拉式清單中選取可用的暫存位置。

        5. 選取下一步。

      3. 在「參數檔」頁面上,新增下列對應:

        INSERTALLRECORDS
        MAP src_ociggll.src_city, TARGET SRCMIRROR_OCIGGLL.SRC_CITY;
        MAP src_ociggll.src_region, TARGET SRCMIRROR_OCIGGLL.SRC_REGION;
        MAP src_ociggll.src_customer, TARGET SRCMIRROR_OCIGGLL.SRC_CUSTOMER;
        MAP src_ociggll.src_orders, TARGET SRCMIRROR_OCIGGLL.SRC_ORDERS;
        MAP src_ociggll.src_order_lines, TARGET SRCMIRROR_OCIGGLL.SRC_ORDER_LINES;
        MAP src_ociggll.src_product, TARGET SRCMIRROR_OCIGGLL.SRC_PRODUCT;
      4. 在「特性」頁面上複查特性,然後選取建立並執行。

        您可以返回「複本」頁面,複查 Replicat 詳細資訊。

  2. 若要驗證「初始載入」,請連線至 Snowflake 資料庫並執行下列查詢:

    select * from SRCMIRROR_OCIGGLL.SRC_CITY;
    select * from SRCMIRROR_OCIGGLL.SRC_CUSTOMER;

輸出應傳回因為「起始載入」而載入至目標資料庫表格的資料。

作業 6:建立變更資料擷取的分配路徑

  1. 在來源 PostgreSQL 建置主控台中,選取分配服務。

  2. 選取新增分配路徑。

  3. 完成「新增路徑」表單,如下所示:

    1. 在「路徑資訊 (Path Information)」頁面上:

      1. 在路徑名稱中,輸入名稱。

      2. 選取下一步。

    2. 在「來源選項 (Source Options)」頁面上:

      1. 對於來源擷取,請選取「變更資料擷取擷取擷取」(ECDC)。

      2. 針對歷程檔名稱,選取「變更資料擷取」歷程檔 (C1)。

      3. 選取下一步。

    3. 在「目標選項 (Target Options)」頁面上:

      1. 在目標中,選取 wss 。

      2. 在目標主機中,輸入目標建置主控台 URL (您可以在建置詳細資訊頁面上找到此 URL,而不需要 https:// 或任何尾端斜線)。

      3. 在連接埠號碼中,輸入 443。

      4. 在歷程檔名稱中,輸入 C1。

      5. 在目標認證方法中,選取 UserID 別名。

      6. 針對網域,輸入網域的名稱。

      7. 在別名輸入別名。

    4. 選取建立路徑並執行。

  4. 在目標 Big Data 部署主控台中,選取接收者服務,然後複查建立的接收者路徑。

作業 7:新增變更資料擷取的 Replicat

執行來源 PostgreSQL 資料庫更新,以驗證對 Snowflake 的複寫。

  1. 新增 Replicat。

    1. 在目標 Big Data 部署主控台中,選取管理服務,然後從導覽功能表中選取複製。

    2. 在複製頁面上,選取新增 Replicat (加號圖示),然後完成「新增 Replicat」表單,如下所示:

      • 在 Replicat 資訊頁面上:

        1. 對於複製類型,請選取傳統或協調。

        2. 在處理名稱中,輸入名稱,例如 RCDC。

        3. 選取下一步。

      • 在「Replicat 選項」頁面上:

        1. 在複製追蹤名稱中,輸入任務 3 (C1) 的追蹤名稱。

        2. 在目標證明資料中,選取 Snowflake 連線的「網域」和「別名」。

        3. (選用) 啟用外部儲存,從下拉式清單中選取可用的暫存位置。

      • 在「參數檔」頁面上,新增下列對應,然後選取下一步:

        MAP src_ociggll.src_city, TARGET SRCMIRROR_OCIGGLL.SRC_CITY;
        MAP src_ociggll.src_region, TARGET SRCMIRROR_OCIGGLL.SRC_REGION;
        MAP src_ociggll.src_customer, TARGET SRCMIRROR_OCIGGLL.SRC_CUSTOMER;
        MAP src_ociggll.src_orders, TARGET SRCMIRROR_OCIGGLL.SRC_ORDERS;
        MAP src_ociggll.src_order_lines, TARGET SRCMIRROR_OCIGGLL.SRC_ORDER_LINES;
        MAP src_ociggll.src_product, TARGET SRCMIRROR_OCIGGLL.SRC_PRODUCT;
      • 在「特性」頁面上複查特性,然後選取建立並執行。

        您可以返回「複本」頁面,複查 Replicat 詳細資訊。

  2. 驗證資料交換資料:

    1. 執行來源 PostgreSQL 資料庫更新,以驗證對 Snowflake 的複寫。執行下列命令檔以執行 PostgreSQL 資料庫的插入:

      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1000,'Houston',20,743113);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1001,'Dallas',20,822416);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1002,'San Francisco',21,157574);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1003,'Los Angeles',21,743878);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1004,'San Diego',21,840689);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1005,'Chicago',23,616472);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1006,'Memphis',23,580075);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1007,'New York City',22,124434);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1008,'Boston',22,275581);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1009,'Washington D.C.',22,688002);
  3. 在來源 PostgreSQL 建置主控台中,選取 RCDC,然後選取統計資料。確認 src_ociggll.src_city 有 10 個插入。

    注意:如果 Extract 未擷取任何插入,請重新啟動 ECDC Extract。

  4. 在目標 Big Data 部署主控台中,選取 RCDC,複查其詳細資訊和統計資料來驗證插入數目。

工作 8:監督和維護處理作業

  1. 監督複製處理作業。

  2. 管理歷程檔。