必要條件
在您可以登陸或複寫資料之前,確認完成下列先決條件:
-
在 資料移動閘道 伺服器安裝必要 driver
資訊備註只有在您選擇使用 資料移動閘道 時,才需要此。如需關於 資料移動閘道 福利以及何時需要的資訊,請參閱 Qlik 資料閘道 - 資料移動。
請注意,資料移動閘道 無法用於 Qlik Talend Cloud 啟動器 訂閱。
-
在資料來源授予必要權限
-
設定資料來源連接器
驅動程式的設定
您可以使用驅動程式安裝公用程式 (建議) 或手動安裝 driver。只能在不太可能發生的事件 (您在使用驅動程式安裝公用程式時遇到問題) 中嘗試手動安裝。
使用驅動程式安裝公用程式來安裝驅動程式
此區段描述如何安裝所需的 driver。該流程涉及執行將會自動下載、安裝並設定所需 driver 的指令碼。您也可以執行指令碼,以根據需求更新並解除安裝 driver。
準備安裝
-
確認 Python 3.6 或更高版本安裝於 資料移動 閘道伺服器。
Python 會預先安裝在大部分的 Linux 發行版。您可以執行下列命令,以查看哪個 Python 版本安裝在您的系統上:
python3 --version
安裝 driver
若要下載並安裝 driver:
-
在 資料移動 閘道機器上,將工作目錄變更為:
opt/qlik/gateway/movement/drivers/bin
-
執行下列命令:
語法:
./install postgres
若無法下載 driver (由於存取限制或技術問題),將會顯示訊息,指示您到哪裡下載 driver 以及在 資料移動 閘道機器上的何處複製。完成後,再次執行 install postgres 命令。
否則,就會顯示 driver 的 EULA。
-
執行下列其中一個動作:
- 重複按下 [Enter] 以緩慢瀏覽 EULA。
- 重複按下空格鍵以快速瀏覽 EULA。
- 按下 q 以結束授權文字並呈現 EULA 接受選項。
-
執行下列其中一個動作:
- 輸入「y」並按下 [Enter] 以接受 EULA 並開始安裝。
- 輸入「n」並按下 [Enter] 以拒絕 EULA 並退出安裝。
-
輸入「v」並按下 [Enter] 以再次檢視 EULA。
將會安裝 driver。
更新 driver
若您想要在安裝提供的 driver 之前解除安裝先前的 driver 版本,請執行更新命令。
若要下載並更新 driver:
-
在 資料移動 閘道機器上,將工作目錄變更為:
opt/qlik/gateway/movement/drivers/bin
-
執行下列命令:
語法:
./update postgres
若無法下載 driver (由於存取限制或技術問題),將會顯示訊息,指示您到哪裡下載 driver 以及在 資料移動 閘道機器上的何處複製。完成後,再次執行 update postgres 命令。
否則,就會顯示 driver 的 EULA。
-
執行下列其中一個動作:
- 重複按下 [Enter] 以緩慢瀏覽 EULA。
- 重複按下空格鍵以快速瀏覽 EULA。
- 按下 q 以結束授權文字並呈現 EULA 接受選項。
-
執行下列其中一個動作:
- 輸入「y」並按下 [Enter] 以接受 EULA 並開始安裝。
- 輸入「n」並按下 [Enter] 以拒絕 EULA 並退出安裝。
- 輸入「v」並按下 [Enter] 以從頭檢閱 EULA。
將會解除安裝舊版 driver,並安裝新版 driver。
解除安裝 driver
若您想要解除安裝 driver,請執行解除安裝命令。
若要解除安裝 driver:
-
停止設定為使用此連接器的所有任務。
-
在 資料移動 閘道機器上,將工作目錄變更為:
opt/qlik/gateway/movement/drivers/bin
-
執行下列命令:
語法:
./uninstall postgres
將會解除安裝 driver。
手動安裝驅動程式
只有在自動驅動程式安裝無法成功完成時,才能嘗試手動安裝 driver。
安裝 資料移動閘道 後,下載下列 RPM 檔案。您可以在 /opt/qlik/gateway/movement/drivers/manifests/postgres.yaml 的 binary-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
在 Data Movement gateway 伺服器上,開啟 shell prompt 並進行以下項目:
-
停止 Data Movement gateway 服務:
sudo systemctl stop repagent
-
可自選,確認服務已停止:
sudo systemctl status repagent
狀態應如下所示:
Active: inactive (dead) since <timestamp> ago
-
安裝 RPM 檔案。
-
變更任務目錄至 <Data Movement gateway-Install-Dir>/bin。
-
複製驅動程式位置至 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 檔案的驅動程式位置。
-
可自選,確認已複製驅動程式位置:
cat site_arep_login.sh
-
確定 /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
-
開始 Data Movement gateway 服務:
sudo systemctl start repagent
-
可自行選擇確認服務已開始:
sudo systemctl status repagent
狀態應如下所示:
Active: active (running) since <timestamp> ago
連接埠
依照預設值,在 Data Movement gateway 伺服器上需開啟連接埠 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 = logicalmax_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 資料庫執行個體啟用邏輯複寫:
- 使用下列設定建立新的參數群組:
- 將資料庫參數群組中的 rds.logical_replication 參數設為 1。
- max_wal_senders – 可平行執行的任務數量。
- max_replication_slots – 每個連線 (亦即任務) 會建立新的槽;此參數設定可對資料庫建立的同時連線數量。
-
將 Amazon RDS 執行個體連結至參數群組。
從 Microsoft Azure for PostgreSQL 擷取變更
為了能夠從 PostgreSQL 的 Microsoft Azure 擷取變更,您需要將「Replication」屬性設定為「邏輯」,如以下步驟所述。
-
開啟 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
- 重新啟動資料庫 (使用命令列或透過入口網站)。
從 Google Cloud SQL for PostgreSQL 擷取變更
為了能夠從資料庫擷取變更,您需要設定邏輯複寫。
若要設定邏輯複寫:
-
在 Google Cloud 平台上,在 PostgreSQL 設定中設定下列旗標:
- cloudsql.logical_decoding=on
- max_replication_slots: 每個連線 (亦即任務) 會建立新的槽;此參數設定可對資料庫建立的同時連線數量。若您遇到效能問題,增加此值可能有幫助。
- max_wal_senders: 可平行執行的任務數量。若您遇到效能問題,增加此值可能有幫助。
如需更多關於這些參數的資訊,請參閱 https://www.postgresql.org/docs/current/runtime-config-replication.html
-
在資料庫上,改變 connector 設定 (username) 中指定的使用者以支援複寫:
ALTER USER username WITH REPLICATION;