POSTGRES REPLICATION为新主人

时间:2016-05-09 15:15:53

标签: postgresql replication high-availability failover pgpool

我们正在整合一个架构来支持Postgres 9.5数据库的高可用性。我们有1个主服务器和3个从服务器复制主服务器的数据。当主设备发生故障时,从设备1将升级为新主设备,但从设备2和从设备3仍指向前一主设备而不是更新的主节点。  有没有办法使从属设备动态地从新主设备读取。或者是否需要手动更改配置并重新启动从属设备?

2 个答案:

答案 0 :(得分:1)

没有简短的答案,但我会尝试:

  • 当主服务器出现故障时,您将提升一个从属服务器,并重新配置所有其他服务器以定位新服务器。但是,有一种情况可能不需要重新配置其他从站:如果您使用“WAL归档”,并且您的归档存储在共享驱动器上,该驱动器在旧主站故障后仍然存在。如果新主服务器继续使用相同的共享存储,则可能不需要重新配置其他从服务器。我再也没试过 - 你可以试试。
  • 如果您的复制机制基于“复制槽”(PostgreSQL 9.4中引入) - 那么您必须重新配置所有从站。在这种情况下,实际上你必须从头开始在所有其他从属服务器上重建复制(就像它们从来就不是奴隶一样)。不过,在我看来,“复制槽”是更好的选择。

关于自动化:您已经询问是否可以自动重新配置其他从站,但是您错过了提到的是您是否实施了任何故障转移自动化。我想说的是PostgreSQL本身不会自动执行故障转移(当主设备发生故障时提升其中一个从设备)。至少你必须在要升级的slave上创建“触发器文件”,你必须手动或使用其他产品(例如pgpool2)。

如果您使用pgpool2 - 您可以通过设置follow_master_command pgpool.conf值来设置自动从站重新配置。

最后,我强烈建议您阅读this tutorial - 这会让您的生活更轻松。

修改: 我忘了说两件事:

  • 一旦提升新主服务器,自动重新配置所有其他从服务器可能不是一个好主意,特别是如果您有许多从服务器。它会对您的新主服务器和网络造成额外压力,因此在某些情况下最好将其推迟到夜间工作。在上述教程中有更多相关内容。
  • 我写过教程。

答案 1 :(得分:0)

如e4c5所述,您可以使用repmgr来管理此类任务。我尝试过repmgr,我没有遇到任何问题。

我已经按照教程进行了操作,这里是链接:

http://jensd.be/591/linux/setup-a-redundant-postgresql-database-with-repmgr-and-pgpool

我希望按照本教程,你可以毫无问题地做你想做的事。