【问题标题】:POSTGRES REPLICATION for new master新主人的 POSTGRES REPLICATION
【发布时间】:2016-09-04 07:15:22
【问题描述】:
我们正在整合一个架构来支持我们的 Postgres 9.5 数据库的高可用性。我们有 1 个 master 和 3 个 slave 复制 master 的数据。当主节点宕机时,从节点 1 被提升为新主节点,但从节点 2 和从节点 3 仍指向前一个主节点,而不是更新后的主节点。
有没有办法让奴隶动态地从新的主人那里读取。还是需要手动更改配置并重新启动从站?
【问题讨论】:
标签:
postgresql
replication
high-availability
failover
pgpool
【解决方案2】:
没有简短的答案,但我会尝试:
- 当主服务器出现故障时,您将提升一个从属服务器,并重新配置所有其他从属服务器以定位新的主服务器。但是,有一种情况可能不需要重新配置其他从属服务器:如果您使用“WAL 归档”,并且您的归档存储在共享驱动器上,该驱动器在旧主服务器故障后幸存下来。如果新的主节点继续使用相同的共享存储,您可能不需要重新配置其他从节点。再说一次,我从来没有尝试过 - 你可以试试。
- 如果您的复制机制基于“复制槽”(在 PostgreSQL 9.4 中引入),那么您必须重新配置所有从站。在这种情况下,实际上您必须从头开始重建所有其他从属服务器上的复制(就好像它们根本就不是从属服务器一样)。不过,在我看来,“复制槽”是更好的选择。
关于自动化:您曾询问是否可以自动重新配置其他从属服务器,但您没有提及的是您是否实施了任何故障转移自动化。我想说的是,PostgreSQL 本身不会自动执行故障转移(当主服务器失败时提升其中一个从服务器)。至少您必须在要提升的从属设备上创建“触发文件”,并且您必须手动或使用其他产品(例如 pgpool2)来执行此操作。
如果您使用 pgpool2 - 您可以通过设置 follow_master_command pgpool.conf 值来设置自动从属重新配置。
最后我强烈推荐阅读this tutorial - 它会让你的生活更轻松。
编辑:
我忘了说两件事:
- 在提升新主节点后立即自动重新配置所有其他从节点可能不是一个好主意,尤其是在您有很多从节点的情况下。它会给您的新主节点和网络带来额外的压力,因此在某些情况下,最好将其推迟到夜间。上述教程中的更多信息。
- 我已经编写了教程。