先决条件
在登陆或复制数据之前,请确保达成以下先决条件:
-
在 数据移动网关 服务器上安装所需的 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,请运行 update 命令。
下载并更新 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,请运行 uninstall 命令。
卸载 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
在 数据移动网关 服务器上,打开 shell 提示符并执行以下操作:
-
停止 数据移动网关 服务:
sudo systemctl stop repagent
-
可选择确认服务已停止:
sudo systemctl status repagent
状态应如下所示:
Active: inactive (dead) since <timestamp> ago
-
安装 RPM 文件。
-
将工作目录更改为 <数据移动网关_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
-
启动 数据移动网关 服务:
sudo systemctl start repagent
-
可选择确认服务已启动:
sudo systemctl status repagent
状态应如下所示:
Active: active (running) since <timestamp> 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 = 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 秒。要禁用超时机制(可选),请将此参数设置为零。
信息注释默认情况下,服务器将 wal_sender_timeout 参数的值解释为毫秒。要显式指定秒数,请在值后面加上 “s”,如下例所示:
wal_sender_timeout=60s
有关配置参数的更多信息,请参阅 PostgreSQL 联机帮助中服务器配置下的 Replication 部分。
从 Amazon RDS for PostgreSQL 捕获更改
您可以将 PostgreSQL 数据库实例的 AWS 主用户帐户用作 Amazon RDS for PostgreServer 源端点的用户。主用户帐户具有所需的角色,允许其设置更改数据捕获 (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 捕获更改
为了能够从 Microsoft Azure for PostgreSQL 捕获更改,您需要将“Replication”属性设置为“逻辑”,如下面步骤所述。
-
打开 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
- 重新启动数据库(使用命令行或通过门户)。
从 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;