开发者社区 问答 正文

请教一下双机压力情况下倒换后,主备机异步流复制不能同步的问题:

各位大拿,请教一下双机压力情况下倒换后,主备机异步流复制不能同步的问题:

条件:主机38,备机42,keepalived浮动地址40,用pg_bench向浮动地址施压,主备机的同步正常

测试:
1.在主机38上reboot
2.keepalived通知42做新主机,42脚本做pg_promote
3.pg_bench因浮动地址换了设备,重新手工启动进程施压
4.原主机38机器重启后,keep通知成为备机,做pg_rewind(返回值0,但提示的是时间线一致,没有rewind),再pg_ctl start后,pg_log有wal同步不正常报错

如果没有pg_bench持续加压,而是手工向主机插数据,测试后同步是没问题的

第四步start之前有生成recovery.conf

本问题来自云栖社区【PostgreSQL技术进阶社群】。https://yq.aliyun.com/articles/690084 点击链接欢迎加入社区大社群。

展开
收起
游客886 2019-04-25 17:04:13 1532 分享 版权
阿里云 AI 助理回答

面对您描述的场景,即在双机压力测试环境下,主备切换后出现的同步问题,这里有几个可能的原因和相应的解决建议:

  1. WAL日志不连续:当主机(原38)重启并成为备机时,如果在它离线期间,原备机(42)作为新主机产生了大量的事务,可能会导致WAL日志序列不连续。pg_rewind操作提示时间线一致且无需rewind,这通常意味着没有检测到需要重放的时间线差异,但实际的WAL记录可能未完全同步。

    • 解决建议:检查是否所有必要的WAL文件都已正确传输到原主机,并确认recovery.conf配置正确指定了新的主服务器以及正确的恢复目标设置。如果有必要,手动从新的主服务器上复制缺失的WAL段到原主机的pg_wal目录下。
  2. 网络延迟或中断:在高压力测试下,网络通信可能存在延迟或短暂中断,影响WAL日志的实时传输。

    • 解决建议:检查网络连接稳定性,确保用于流复制的网络通道质量良好,考虑增加WAL传输缓冲区大小或调整其他与网络相关的PostgreSQL参数以提高容错性。
  3. 资源竞争:在重新启动施压后,如果系统资源(如CPU、I/O)被高度占用,可能导致WAL同步进程(如walreceiver)无法及时处理接收到的日志。

    • 解决建议:监控系统资源使用情况,确保备机有足够的资源来处理WAL同步。必要时,可以考虑优化数据库参数,比如调整max_wal_senderswal_receiver_status_interval等,以适应更高的负载需求。
  4. PostgreSQL版本特性:不同的PostgreSQL版本在处理故障转移和同步机制上可能有细微差别,某些特定版本可能存在已知问题。

    • 解决建议:查阅您当前使用的PostgreSQL版本文档,了解是否有已知的bug或限制,考虑升级到一个更稳定或修复了相关问题的版本。
  5. 日志详细分析:深入分析pg_log中关于wal同步不正常的报错信息,这些错误信息通常能提供具体的问题线索。

最后,考虑到问题来源于云栖社区的PostgreSQL技术进阶社群,我建议直接在该社群内发起讨论,那里聚集了许多经验丰富的PostgreSQL用户和专家,他们能够提供更加针对性的帮助和实战经验分享。同时,也可以考虑联系阿里云的技术支持团队,特别是如果您正在使用阿里云的RDS for PostgreSQL服务,他们能提供专业的技术支持和排查建议。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答