管理 RDS for PostgreSQL 的逻辑插槽同步 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

管理 RDS for PostgreSQL 的逻辑插槽同步

从社区 PostgreSQL 17 开始,已通过 sync_replication_slots 参数或相关的函数 pg_sync_replication_slots() 引入了一项新功能(即自动将逻辑复制插槽从主服务器同步到备用服务器),该功能可在执行时手动同步插槽。

从 RDS for PostgreSQL 17 开始提供这些功能。典型的设置将具有主实例及其只读副本,以及主实例的逻辑复制订阅用户。

确保在创建订阅时将失效转移选项设置为 true:

CREATE SUBSCRIPTION subname CONNECTION 'host=...' PUBLICATION pubname WITH (failover = true);

这将在发布者上创建一个启用失效转移的逻辑插槽。

postgres=> SELECT slot_name, slot_type, failover FROM pg_catalog.pg_replication_slots; slot_name | slot_type | failover -----------+-----------+---------- subname | logical | t (1 row)

通过启用插槽同步,主实例上的所有失效转移逻辑复制插槽都将在物理备用实例上自动创建并定期同步。确保已通过参数组设置以下值:

  • rds.logical_replication 必须为 1 才能启用逻辑复制

  • 在备用实例上,hot_standby_feedback 必须为 1

  • 备用实例上的 rds.logical_slot_sync_dbname 必须设置为有效的数据库名称

    此参数的默认值为 postgres。如果逻辑发布实例有 postgres 数据库,则无需更改默认参数。

  • 主实例上的 synchronized_standby_slots 必须设置为要同步的备用实例的物理复制插槽

  • sync_replication_slots 必须为 1 才能启用自动同步

使用启用失效转移的订阅插槽和上述参数值,当提升备用实例时,订阅用户可以更改其对这个新提升实例的订阅,并继续无缝地进行逻辑复制。