如何从AWS RDS Postgres只读副本开启逻辑复制?
AWS RDS只读副本开启逻辑复制的正确配置步骤
核心问题说明
AWS RDS只读副本默认继承主实例的参数组,无法直接修改rds.logical_replication这类关键参数,必须通过自定义副本参数组来完成配置。
具体操作步骤
创建自定义副本参数组
在AWS RDS控制台进入「参数组」页面,点击「创建参数组」:- 参数组家族选择与副本B匹配的PostgreSQL版本
- 参数组类型选择副本(而非主实例类型)
- 填写名称、描述后完成创建
配置参数组关键项
进入刚创建的自定义参数组,找到rds.logical_replication参数,将其值设为1。注意:无需手动修改
wal_level,AWS RDS会自动将其调整为logical(开启逻辑复制的必要条件)关联参数组到副本B并重启
选中RDS实例B,点击「修改」:- 在「数据库选项」中选择刚创建的自定义参数组
- 选择「立即应用」(需评估业务停机影响,或安排在维护窗口执行)
- 等待实例重启完成
验证参数生效状态
连接到副本B,执行以下SQL查询:SHOW rds.logical_replication; SHOW wal_level;预期结果:
rds.logical_replication返回on,wal_level返回logical配置从B到C的逻辑复制
在副本B上创建发布:-- 示例:为指定表创建发布,可替换为FOR ALL TABLES发布全库 CREATE PUBLICATION pub_to_c FOR TABLE your_target_table;在目标实例C上创建订阅(需确保C能访问B的网络,且有B的数据库账号权限):
CREATE SUBSCRIPTION sub_from_b CONNECTION 'host=<B的RDS端点> port=5432 dbname=<目标库名> user=<授权账号> password=<账号密码>' PUBLICATION pub_to_c;
内容的提问来源于stack exchange,提问作者mbsouksu
相关产品推荐
相关产品推荐

