1

我们正在整合一个架构来支持我们的 Postgres 9.5 数据库的高可用性。我们有 1 个 master 和 3 个 slave 复制 master 的数据。当主节点宕机时,从节点 1 被提升为新主节点,但从节点 2 和从节点 3 仍指向前一个主节点,而不是更新后的主节点。有没有办法让奴隶动态地从新的主人那里读取。还是需要手动更改配置并重新启动从站?

4

2 回答 2

1

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

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

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

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

最后,我强烈推荐阅读本教程——它会让你的生活更轻松。

编辑:我忘了说两件事:

  • 提升新主节点后立即自动重新配置所有其他从节点可能不是一个好主意,尤其是在您有很多从节点的情况下。它会给您的新主节点和网络带来额外的压力,因此在某些情况下,最好将其推迟到夜间。更多关于这在提到的教程。
  • 我已经写了教程。
于 2016-05-30T13:56:07.167 回答
0

正如 e4c5 评论的那样,您可以使用 repmgr 来管理此类任务。我已经尝试过 repmgr 并且没有问题。

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

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

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

于 2016-05-18T10:03:15.913 回答