You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

停止PostgreSQL复制并将从库转为独立可读写服务器的咨询

停止PostgreSQL复制并将从库升级为主库的完整操作指南

嘿,你的核心思路是对的,但还有几个关键细节需要补充,确保整个过程平稳且数据安全:

操作步骤

  • 第一步:确认从库状态
    在原从库上执行SQL命令,确认当前处于复制状态:

    SELECT pg_is_in_recovery();
    

    如果返回true,说明确实是只读从库,符合操作前提。如果主库还能正常访问,也可以在主库上执行SELECT * FROM pg_stat_replication;,确认复制连接已经停止(因为主库停更了,这一步可选)。

  • 第二步:修改pg_hba.conf并重启服务
    你提到的删除复制权限行是正确的操作:

    host replication replicator x.x.x.x/32 md5
    

    在主库和从库的pg_hba.conf中都删除这一行,然后重启两台服务器的PostgreSQL服务(不同系统命令可能略有差异,以下是systemd环境示例):

    sudo systemctl restart postgresql
    

    这一步的目的是彻底切断两台服务器之间的复制连接通道,避免后续误触发复制操作。

  • 第三步:将从库升级为可读写主库
    你可以选择两种更灵活的方式完成提升:

    1. 使用pg_ctl命令(需要指定数据目录):
      pg_ctl -D /target_directory promote
      
    2. 使用SQL命令(无需操作服务,更便捷):
      SELECT pg_promote();
      

    执行完成后,再次在原从库上执行SELECT pg_is_in_recovery();,如果返回false,说明已经成功升级为可读写主库。

关键注意事项

  • 确认数据同步完整性:在提升从库之前,最好确认从库已经同步了主库的所有最终数据。如果主库还能访问,对比两边的WAL位置:
    • 主库执行:SELECT pg_current_wal_lsn();
    • 从库执行:SELECT pg_last_wal_receive_lsn();
      只要两个值一致,就说明数据完全同步,不会有丢失。
  • 调整PostgreSQL配置(可选):原从库的postgresql.conf中wal_level可能设置为replica,提升为主库后可以保持这个值(方便后续可能的新复制需求),也可以改为minimal以减少WAL日志生成量。
  • 主库后续处理:如果原主库不再使用,务必先做好全量备份再进行停机或删除操作,避免数据意外丢失。

内容的提问来源于stack exchange,提问作者user2099762

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 16:15:57