如何在AWS RDS PostgreSQL中配置同步复制以解决索引丢数问题?
如何将RDS PostgreSQL只读副本设置为同步复制
前提说明
RDS PostgreSQL支持同步复制,但有两个关键限制:
- 仅能设置一个同步副本(RDS不支持多同步副本配置)
- 同步复制会增加主库写入延迟,因为主库必须等待同步副本确认接收日志后,才会向客户端返回写入成功
具体配置步骤
1. 修改主库的参数组
需要调整两个核心参数,且必须使用自定义参数组(RDS不允许修改默认参数组):
synchronous_commit:设为on(默认值即为on,若之前被修改过需恢复)synchronous_standby_names:指定目标只读副本的实例标识符,比如my-read-replica;也可以用FIRST让RDS自动选择第一个符合条件的候选副本
操作流程:
- 登录AWS控制台进入RDS服务
- 找到主库对应的参数组,创建自定义参数组(选择与主库PostgreSQL版本匹配的参数组类型)
- 在自定义参数组中搜索并修改上述两个参数
- 将参数组应用到主库,重启主库(参数修改需重启生效)
2. 验证同步状态
配置完成后,在主库执行以下SQL查询,确认副本的同步状态:
SELECT application_name, state, sync_state FROM pg_stat_replication;
若结果中目标副本的sync_state字段显示为sync,则说明该副本已成功切换为同步副本。
注意事项
- 若同步副本不可用,主库会暂停写入操作,直到副本恢复或手动切换回异步模式。可以将
synchronous_commit设为remote_write作为折中方案:主库只需等待副本接收日志即可,无需等待写入磁盘,延迟更低且仍有一定数据保障 - 同步复制能确保副本数据与主库完全一致,但会影响主库性能,建议先在测试环境验证后再应用到生产环境
- 若存在多个只读副本,仅指定的那个会成为同步副本,其余副本仍保持异步复制模式
内容的提问来源于stack exchange,提问作者Balakrishnan
相关产品推荐
相关产品推荐

