# 先决条件

在登陆或复制数据之前，请确保达成以下先决条件：

* 在 数据移动网关 服务器上安装所需的 driver

  信息注释

  只有当您选择使用 数据移动网关 时，才需要这样。有关 数据移动网关 的优势和何时需要它的信息，请参阅 [Qlik 数据网关 - 数据移动](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/replication-gateway.htm)。

  请注意，Qlik Talend Cloud Starter 订阅不可使用 数据移动网关。

* 授予数据源所需的权限

* 配置数据源连接器

## 驱动程序设置

您可以使用驱动程序安装实用程序（推荐）安装 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，请运行 update 命令。

下载并更新 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，请运行 uninstall 命令。

卸载 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

在 数据移动网关 服务器上，打开 shell 提示符并执行以下操作：

1. 停止 数据移动网关 服务：

   sudo systemctl stop repagent

2. 可选择确认服务已停止：

   sudo systemctl status repagent

   状态应如下所示：

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

3. 安装 RPM 文件。

4. 将工作目录更改为 &lt;数据移动网关\_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. 启动 数据移动网关 服务：

   sudo systemctl start repagent

9. 可选择确认服务已启动：

   sudo systemctl status repagent

   状态应如下所示：

   Active: active (running) since &lt;timestamp&gt; ago

## 端口

默认情况下，需要打开端口 5432 以便在 数据移动网关 服务器上进行出站通信。您可以在连接器设置中更改此项。

## 从客户安装的 PostgreSQL 数据库捕获更改

* 必须将 Data Movement gateway 计算机的 IP 地址添加到 pg\_hba.conf 配置文件，其在数据库字段中具有 "replication" 关键字。

  示例：

  `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 秒。要禁用超时机制（可选），请将此参数设置为零。

  信息注释

  默认情况下，服务器将 `wal_sender_timeout` 参数的值解释为毫秒。要显式指定秒数，请在值后面加上 “s”，如下例所示：

  `wal_sender_timeout=60s`

有关配置参数的更多信息，请参阅 [PostgreSQL 联机帮助](https://www.postgresql.org/docs/)中服务器配置下的 Replication 部分。

## 从 Amazon RDS for PostgreSQL 捕获更改

您可以将 PostgreSQL 数据库实例的 AWS 主用户帐户用作 Amazon RDS for PostgreServer 源端点的用户。主用户帐户具有所需的角色，允许其设置更改数据捕获 (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 捕获更改

为了能够从 Microsoft Azure for PostgreSQL 捕获更改，您需要将“Replication”属性设置为“逻辑”，如下面步骤所述。

1. 打开 Azure CLI 并运行以下命令：

   信息注释

   您可以下载 CLI 或通过 Azure 门户上的 shell 命令进行连接。

   语法：

   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;