支持使用 PostgreSQL 17 及更高版本运行 Oracle GoldenGate
了解如何使用 PostgreSQL 17 及更高版本为 Oracle GoldenGate 配置故障转移。
PostgreSQL 17 引入了对主服务器和备用服务器之间逻辑复制插槽自动同步的支持。与 Oracle GoldenGate 结合使用时,此功能可实现提取进程的无缝故障转移,而无需手动重新创建复制插槽。
此功能可确保连续数据复制,并在故障转移事件期间尽可能减少中断。
为 Oracle GoldenGate 启用 PostgreSQL 17 及更高版本的故障转移支持的先决条件
启用故障转移支持之前,请确保以下各项:
-
部署了 PostgreSQL 版本 17 或更高版本。
-
已设置主和备用(副本)配置。
-
已安装并配置 Oracle GoldenGate。
-
所需的数据库权限可用。
配置故障转移支持
通过在 PostgreSQL 主服务器和备用服务器上执行以下任务,然后在 Oracle GoldenGate 提取端配置故障转移支持。
-
配置 PostgreSQL 主服务器和备用服务器。
在主服务器上:更新 PostgreSQL 配置参数:
wal_level = logical max_replication_slots = *sufficient_value* sync_replication_slots = on synchronized_standby_slots = '*standby_slot_name*'在备用服务器上
更新配置参数:
hot_standby_feedback = on primary_slot_name = '*primary_physical_slot*' -
更新配置后,在主服务器和备用服务器上重新启动 PostgreSQL。
-
注册提取进程时启用故障转移插槽支持。
使用 Oracle GoldenGate Web 界面
为 PostgreSQL 创建提取时,启用故障转移复制插槽切换开关:

使用 AdminClient
REGISTER EXTRACT *extract_name* FAILOVERSLOT;使用 REST API
POST /services/v2/extracts/AT { "credentials": { "alias": "fail1" }, "registration": "default", "failoverSlot": true } -
验证 PostgreSQL 主服务器和备用服务器上的配置:
在主服务器上:运行以下查询:
SELECT slot_name, slot_type, failover FROM pg_replication_slots;输出应显示:
-
插槽类型为
logical -
failover设置为true
在备用服务器上:运行以下查询:
SELECT slot_name, restart_lsn FROM pg_replication_slots;输出应显示:
-
备用数据库上存在相同的插槽
-
LSN 值正在进行中
-
-
通过执行以下步骤执行故障转移:
-
使用配置的高可用性机制将备用服务器提升为主服务器。
-
更新提取配置以连接到新的主数据库。
-
启动或恢复“提取”处理。
复制从上次处理的位置继续,无需重新初始化。
-
-
监视复制插槽状态:
SELECT slot_name, active, restart_lsn FROM pg_replication_slots;请确认以下几点:
-
插槽处于活动状态
-
正在推进重新启动 LSN
-
无过多的 WAL 积累
-
-
删除未使用的复制插槽有助于防止过多的
WAL保留和磁盘使用。SELECT pg_drop_replication_slot('*slot_name*');
故障转移支持配置的最佳实践
要使用 Oracle GoldenGate Extract for PostgreSQL 配置故障转移支持,请考虑以下最佳做法:
-
在提取创建期间启用故障转移插槽
-
定期监视复制插槽状态
-
执行定期故障转移测试
-
确保 WAL 文件有足够的磁盘空间
限制
-
Yugabyte Database Limitation(Yugabyte 数据库限制):Yugabyte 数据库不支持故障转移插槽,因为它仍使用不支持故障转移插槽的较旧 PostgreSQL 版本。
-
Oracle GoldenGate Limitation with MIGRATE 命令:故障转移插槽不适用于
Migrate,因为新创建的插槽不是具有failover = true设置的故障转移插槽。
云特定的准则
-
Amazon RDS for PostgreSQL :设置以下参数:
rds.logical_slot_sync_dbname = '*database_name*' -
Azure Database for PostgreSQL :执行以下操作:
-
自动管理故障转移
-
确保已启用逻辑复制
-
-
PostgreSQL Logical Decoding Details :有关 PostgreSQL 逻辑解码的详细信息,请参见 https://www.postgresql.org/docs/17/logicaldecoding-explanation.html 。