数据库配置
用于捕获的数据库软件
要从 PostgreSQL 数据库捕获,Oracle GoldenGate 要求为数据库安装 test_decoding 数据库插件。安装数据库时,默认情况下可能未安装此插件。
确保数据库服务器上安装了 postgresqlversion#-contrib 软件包,如示例中所示:
sudo yum install postgresql14-contrib
PostgreSQL 数据库配置文件中的参数
对于 Oracle GoldenGate,请在 PostgreSQL 数据库配置文件 $PGDATA/postgresql.conf 中配置以下参数:
注:对于 Oracle GoldenGate 将从中捕获的主 PostgreSQL 数据库以及 Oracle GoldenGate 在主数据库失败时可以从中捕获的任何备用数据库,都需要进行这些更改。
-
对于提取或复制的远程连接,请将 PostgreSQL
listen_addresses设置为允许远程数据库连接。例如:listen_addresses=remotehost_ip_address注:通过配置
pg_hba.conf文件,确保将客户机验证设置为允许从 Oracle GoldenGate 主机进行连接。有关更多信息,请参阅以下文档: The pg_hba.conf File -
要支持 Oracle GoldenGate Extract,必须将提前写入日志记录设置为
logical,这会添加支持事务处理记录解码所需的信息。必须设置最大复制插槽数,以容纳每个提取一个打开的插槽,并且通常每个数据库不需要多个提取。例如,如果 PostgreSQL 本机复制已在使用并且正在使用当前配置的所有复制插槽,请增大该值以允许注册提取。
应将最大提前写入发送器设置为与最大复制插槽值匹配。
(可选)可以在预写日志中启用提交时间戳,当在启用逻辑预写日志的同时设置时,将使用正确的时间戳值从该点跟踪第一个 DML 提交记录。否则,Oracle GoldenGate 捕获遇到的第一个记录将具有错误的提交时间戳。
wal_level = logical # set to logical for Capture max_replication_slots = 1 # max number of replication slots, # one slot per Extract/client max_wal_senders = 1 # one sender per max repl slot track_commit_timestamp = on # optional, correlates tx commit time # with begin tx log record (useful for # timestamp-based positioning) -
进行上述任何更改后,重新启动数据库。
使用这些说明管理 Azure for PostgreSQL、Amazon Aurora PostgreSQL、Amazon RDS for PostgreSQL、Google AlloyDB for PostgreSQL 和 Google Cloud SQL for PostgreSQL 的数据库设置。
适用于 PostgreSQL 的 Azure 数据库
在针对 Azure Database for PostgreSQL 为 PostgreSQL 提取配置 Oracle GoldenGate 时,必须启用逻辑解码并将其设置为 LOGICAL。
有关说明,请阅读 Microsoft 文档:
https://learn.microsoft.com/en-us/azure/postgresql/
Azure Database for PostgreSQL 的其他数据库设置可以通过数据库实例的“服务器参数”部分进行管理。
对于与 Azure Database for PostgreSQL 实例的连接,默认的 Azure 连接安全设置需要 SSL 连接。要满足此要求,需要执行更多步骤来支持与 Oracle GoldenGate 的 SSL 连接。
有关更多信息,请遵循 Configuring SSL Support for PostgreSQL 下列出的内容。
Amazon Aurora PostgreSQL 和 Amazon RDS(适用于 PostgreSQL)
对于 Amazon Aurora PostgreSQL 和 Amazon RDS for PostgreSQL,将在参数组中修改数据库设置。
有关如何编辑新参数组中的数据库设置并将其分配给数据库实例的信息,请查看 Amazon AWS 文档:
https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html
-
通过在分配给实例的参数组中验证之前列出的数据库配置设置,确保这些设置正确无误。
-
Amazon 数据库服务的
wal_level设置配置了一个名为rds.logical_replication的参数,该参数的默认值为0,如果要将数据库用于 Oracle GoldenGate Extract,则应将其设置为1。 -
Amazon RDS 不支持在复制插槽名称前面或以字符串
rds开头。如果复制插槽名称以字符串rds开头,则 Oracle GoldenGate Extract 用于创建复制插槽的命令将返回错误。例如,您可以将复制插槽命名为ordscdc而不是rdscdc以避免此错误,如以下示例中所示:select slot_name from pg_create_logical_replication_slot('ordscdc', 'test_decoding');此命令将添加
ordscdc复制插槽。但是,如果将复制插槽名称用作rdscdc,则会发生以下错误:ERROR: must be superuser or replication role to use logical replication slots in the 'rds' namespace
限制:
在 Amazon Aurora PostgreSQL 版本 12.17 上,如果执行大写 SHOW 命令,则会报告以下错误:
"ERROR: must be superuser or replication role to run this operation."
必须使用小写 SHOW 命令以避免此错误。
适用于 PostgreSQL 的 Google AlloyDB
从 Oracle GoldenGate 发行版 21.14 开始,Oracle GoldenGate 支持 Google AlloyDB for PostgreSQL。为 Google PostgreSQL 的 PostgreSQL 提取配置 Oracle GoldenGate 时,需要将 alloydb.logical_decoding configuration 参数(标志)设置为 ON。
适用于 PostgreSQL 的 Google Cloud SQL
为 Google Cloud SQL for PostgreSQL 数据库的 Oracle GoldenGate 配置 Oracle GoldenGate 时,必须设置逻辑解码,并通过将 cloudsql.logical_decoding 变量设置为 ON 来完成解码。按照 Google 提供的有关如何启用此数据库标志的说明进行操作。有关更多信息,请参见 https://cloud.google.com/sql/docs/postgres/flags#postgres-l 。