跳到主要內容 跳至補充內容

必要條件

在您可以登陸或複寫資料之前,確認完成下列先決條件:

  • 在 Data Movement 閘道伺服器安裝必要 driver

  • 在資料來源授予必要權限

  • 設定資料來源連接器

驅動程式的設定

您可以使用驅動程式安裝公用程式 (建議) 或手動安裝 driver。只能在不太可能發生的事件 (您在使用驅動程式安裝公用程式時遇到問題) 中嘗試手動安裝。

使用驅動程式安裝公用程式來安裝驅動程式

此區段描述如何安裝所需的 driver。該流程涉及執行將會自動下載、安裝並設定所需 driver 的指令碼。您也可以執行指令碼,以根據需求更新並解除安裝 driver

準備安裝

  • 確認 Python 3.6 或更高版本安裝於 資料移動 閘道伺服器。

    Python 會預先安裝在大部分的 Linux 發行版。您可以執行下列命令,以查看哪個 Python 版本安裝在您的系統上:

    python3 --version

安裝 driver

若要下載並安裝 driver

  1. 資料移動 閘道機器上,將工作目錄變更為:

    opt/qlik/gateway/movement/drivers/bin

  2. 執行下列命令:

    語法:

    ./install postgres

    若無法下載 driver (由於存取限制或技術問題),將會顯示訊息,指示您到哪裡下載 driver 以及在 資料移動 閘道機器上的何處複製。完成後,再次執行 install postgres 命令。

    否則,就會顯示 driver 的 EULA。

  3. 執行下列其中一個動作:

    • 重複按下 [Enter] 以緩慢瀏覽 EULA。
    • 重複按下空格鍵以快速瀏覽 EULA。
    • 按下 q 以結束授權文字並呈現 EULA 接受選項。
  4. 執行下列其中一個動作:

    • 輸入「y」並按下 [Enter] 以接受 EULA 並開始安裝。
    • 輸入「n」並按下 [Enter] 以拒絕 EULA 並退出安裝。
    • 輸入「v」並按下 [Enter] 以再次檢視 EULA。

  5. 將會安裝 driver

更新 driver

若您想要在安裝提供的 driver 之前解除安裝先前的 driver 版本,請執行更新命令。

若要下載並更新 driver

  1. 資料移動 閘道機器上,將工作目錄變更為:

    opt/qlik/gateway/movement/drivers/bin

  2. 執行下列命令:

    語法:

    ./update postgres

    若無法下載 driver (由於存取限制或技術問題),將會顯示訊息,指示您到哪裡下載 driver 以及在 資料移動 閘道機器上的何處複製。完成後,再次執行 update postgres 命令。

    否則,就會顯示 driver 的 EULA。

  3. 執行下列其中一個動作:

    • 重複按下 [Enter] 以緩慢瀏覽 EULA。
    • 重複按下空格鍵以快速瀏覽 EULA。
    • 按下 q 以結束授權文字並呈現 EULA 接受選項。
  4. 執行下列其中一個動作:

    • 輸入「y」並按下 [Enter] 以接受 EULA 並開始安裝。
    • 輸入「n」並按下 [Enter] 以拒絕 EULA 並退出安裝。
    • 輸入「v」並按下 [Enter] 以從頭檢閱 EULA。
  5. 將會解除安裝舊版 driver,並安裝新版 driver

解除安裝 driver

若您想要解除安裝 driver,請執行解除安裝命令。

若要解除安裝 driver

  1. 停止設定為使用此連接器的所有任務。

  2. 資料移動 閘道機器上,將工作目錄變更為:

    opt/qlik/gateway/movement/drivers/bin

  3. 執行下列命令:

    語法:

    ./uninstall postgres

    將會解除安裝 driver

手動安裝驅動程式

只有在自動驅動程式安裝無法成功完成時,才能嘗試手動安裝 driver

安裝 資料移動閘道 後,下載下列 RPM 檔案。您可以在 /opt/qlik/gateway/movement/drivers/manifests/postgres.yamlbinary-artifacts 之下找到檔案的直接下載連結。下載完成後,將檔案複製到 資料移動閘道 機器。

資料移動閘道 安裝於 Red Hat 9.x:

  • postgresql<version>-libs-<version>PGDG.rhel9.x86_64.rpm
  • postgresql<version>-<version>PGDG.rhel9.x86_64.rpm
  • postgresql<version>-odbc-<version>PGDG.rhel9.x86_64。

資料移動閘道 安裝於 Red Hat 8.x:

  • postgresql<version>-libs-<version>PGDG.rhel8.x86_64.rpm
  • postgresql<version>-<version>PGDG.rhel8.x86_64.rpm
  • postgresql<version>-odbc-<version>PGDG.rhel8.x86_64.rpm

資料移動閘道 伺服器上,開啟 shell prompt 並進行以下項目:

  1. 停止 資料移動閘道 服務:

    sudo systemctl stop repagent

  2. 可自選,確認服務已停止:

    sudo systemctl status repagent

    狀態應如下所示:

    Active: inactive (dead) since <timestamp> ago

  3. 安裝 RPM 檔案。

  4. 變更任務目錄至 <資料移動閘道-Install-Dir>/bin

  5. 複製驅動程式位置至 site_arep_login.sh 檔案,如下所示:

    echo "export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/usr/lib:/usr/lib64:/usr/pgsql-<version>/lib" >> site_arep_login.sh

    這將新增驅動程式至「LD_LIBRARY_PATH」並更新位於 site_arep_login.sh 檔案的驅動程式位置。

  6. 可自選,確認已複製驅動程式位置:

    cat site_arep_login.sh
  7. 確定 /etc/odbcinst.ini 檔案含有 PostgreSQL 的項目,如以下範例所示:

    [PostgreSQL]

    Description = PostgreSQL ODBC driver

    Driver = /usr/pgsql-13/lib/psqlodbc.so

    Setup = /usr/pgsql-13/lib/psqlodbcw.so

    UsageCount = 1

  8. 開始 資料移動閘道 服務:

    sudo systemctl start repagent

  9. 可自行選擇確認服務已開始:

    sudo systemctl status repagent

    狀態應如下所示:

    Active: active (running) since <timestamp> ago

連接埠

依照預設值,在 資料移動閘道 伺服器上需開啟連接埠 5432 才能進行傳出通訊。您可在連接器設定中變更此資訊。

從客戶安裝的 PostgreSQL 資料庫擷取變更

  • Data Movement gateway機器的 IP 位址必須在資料庫欄位使用「複製」關鍵字新增於 pg_hba.conf 組態檔。

    範例:

    host replication all 176.123.1.212/32 trust

  • 請確保安裝 test_decoding 輸出插件(可在 postgresql12-contrib 套裝中找到)。

  • 在連線設定指定的使用者必須被授予來源資料庫的讀取/寫入權限才能允許建立資料庫的「位置」。這些位置為必要才能讀取變更。

  • 以下參數和數值必須設定於postgresql.conf中的組態檔案。

    wal_level = logical
    max_replication_slots = number of replication slots

    在此情況下,number of replication slots必須大於一,且應依據您想要進行的任務數量設定。舉例來說,要進行五項任務,您必須設定max_replication_slots = 5。一但任務開始且維持開啟,位置將自動開啟,即便任務已不在進行中。請注意,開啟的位置必須手動刪除。

    max_wal_senders = number of concurrent tasks

    在此情況下,number of concurrent tasks必須大於一,且應依據您想要進行的任務數量設定。舉例來說,要同時進行三個任務,您必須設定 max_wal_senders = 3

  • wal_sender_timeout參數結束超過指定毫秒數停用的連線。預設逾時為 60 秒。要停用逾時機制(非必要),請將此參數設為 0。

    資訊備註

    預設情況下,伺服器以毫秒讀取wal_sender_timeout參數的數值。要特別指定秒數,在數值後面附加「s」,如以下範例所示:

    wal_sender_timeout=60s

如需更多關於設定參數的資訊,請參閱 PostgreSQL 線上說明中伺服器設定下的複寫區段。

從 Amazon RDS for PostgreSQL 擷取變更

您能以 PostgreSQL 來源端點 Amazon RDS 使用者的身分,對 PostgreSQL 資料庫執行個體使用 AWS 主要使用者帳戶。主要使用者帳戶具有允許設定變更變資料擷取 (CDC) 的所需角色。

若您不想使用主要使用者帳戶,您想要使用的帳戶必須具有 rds_superuser 角色和 rds_replication 角色。rds_replication 角色授予權限以便管理邏輯槽並使用邏輯槽串流資料。

若要為 Amazon RDS PostgreSQL 資料庫執行個體啟用邏輯複寫:

  1. 使用下列設定建立新的參數群組:
    1. 將資料庫參數群組中的 rds.logical_replication 參數設為 1
    2. max_wal_senders – 可平行執行的任務數量。
    3. max_replication_slots – 每個連線 (亦即任務) 會建立新的槽;此參數設定可對資料庫建立的同時連線數量。
  2. 將 Amazon RDS 執行個體連結至參數群組。

從 Microsoft Azure for PostgreSQL 擷取變更

為了能夠從 PostgreSQL 的 Microsoft Azure 擷取變更,您需要將「Replication」屬性設定為「邏輯」,如以下步驟所述。

  1. 開啟 Azure CLI 並執行下列指令:

    資訊備註

    您可以下載 CLI 或在 Azure 入口網站透過殼層命令連線。

    az postgres server configuration set --resource-group resource-group --server-name server-name --name azure.replication_support --value logical

    az postgres server configuration set --resource-group azuredb --server-name qlik-azure-pg --name azure.replication_support --value logical

     

  2. 重新啟動資料庫 (使用命令列或透過入口網站)。

從 Google Cloud SQL for PostgreSQL 擷取變更

資訊備註此功能需要 資料移動閘道 2022.11.42 或更高版本。

為了能夠從資料庫擷取變更,您需要設定邏輯複寫。

若要設定邏輯複寫:

  1. 在 Google Cloud 平台上,在 PostgreSQL 設定中設定下列旗標:

    • cloudsql.logical_decoding=on
    • max_replication_slots: 每個連線 (亦即任務) 會建立新的槽;此參數設定可對資料庫建立的同時連線數量。若您遇到效能問題,增加此值可能有幫助。
    • max_wal_senders: 可平行執行的任務數量。若您遇到效能問題,增加此值可能有幫助。

    如需更多關於這些參數的資訊,請參閱 https://www.postgresql.org/docs/current/runtime-config-replication.html

  2. 在資料庫上,改變 connector 設定 (username) 中指定的使用者以支援複寫:

    ALTER USER username WITH REPLICATION;

此頁面是否對您有幫助?

若您發現此頁面或其內容有任何問題——錯字、遺漏步驟或技術錯誤——請告知我們可以如何改善!