# 必要條件

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

* 在 資料移動閘道 伺服器安裝必要 driver

  資訊備註

  只有在您選擇使用 資料移動閘道 時，才需要此。如需關於 資料移動閘道 福利以及何時需要的資訊，請參閱 [Qlik Data Gateway - Data Movement](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/replication-gateway.htm)。

  請注意，資料移動閘道 無法用於 Qlik Talend Cloud 啟動器 訂閱。

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

* 設定資料來源連接器

## 驅動程式的設定

您可以使用驅動程式安裝公用程式 (建議) 或手動安裝 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。

   將會安裝 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。

   將會解除安裝舊版 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.yaml 的 binary-artifacts 之下找到檔案的直接下載連結。下載完成後，將檔案複製到 資料移動閘道 機器。

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

* postgresql&lt;version&gt;-libs-&lt;version&gt;PGDG.rhel9.x86\_64.rpm
* postgresql&lt;version&gt;-&lt;version&gt;PGDG.rhel9.x86\_64.rpm
* postgresql&lt;version&gt;-odbc-&lt;version&gt;PGDG.rhel9.x86\_64。

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

* postgresql&lt;version&gt;-libs-&lt;version&gt;PGDG.rhel8.x86\_64.rpm
* postgresql&lt;version&gt;-&lt;version&gt;PGDG.rhel8.x86\_64.rpm
* postgresql&lt;version&gt;-odbc-&lt;version&gt;PGDG.rhel8.x86\_64.rpm

在 Data Movement gateway 伺服器上，開啟 shell prompt 並進行以下項目：

1. 停止 Data Movement gateway 服務：

   sudo systemctl stop repagent

2. 可自選，確認服務已停止：

   sudo systemctl status repagent

   狀態應如下所示：

   Active: inactive (dead) since &lt;timestamp&gt; ago

3. 安裝 RPM 檔案。

4. 變更任務目錄至 &lt;Data Movement gateway-Install-Dir&gt;/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. 開始 Data Movement gateway 服務：

   sudo systemctl start repagent

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

   sudo systemctl status repagent

   狀態應如下所示：

   Active: active (running) since &lt;timestamp&gt; 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 = 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 線上說明](https://www.postgresql.org/docs/)中伺服器設定下的複寫區段。

## 從 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;