Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 新主机的POSTGRES复制_Postgresql_Replication_High Availability_Failover_Pgpool - Fatal编程技术网

Postgresql 新主机的POSTGRES复制

Postgresql 新主机的POSTGRES复制,postgresql,replication,high-availability,failover,pgpool,Postgresql,Replication,High Availability,Failover,Pgpool,我们正在构建一个体系结构,以支持我们的Postgres 9.5数据库的高可用性。我们有1个主机和3个从机复制主机的数据。当主节点下降时,从节点1升级为新的主节点,但从节点2和从节点3仍指向上一个主节点,而不是更新的主节点。 有没有一种方法可以让从属设备动态地从新的主设备读取数据。还是需要手动更改配置并重新启动从属任务?如e4c5所述,您可以使用repmgr管理此类任务。我已经尝试过repmgr,结果没有问题 我遵循了一个教程来做这件事,下面是链接: 我希望在本教程之后,您可以毫无问题地做任何您

我们正在构建一个体系结构,以支持我们的Postgres 9.5数据库的高可用性。我们有1个主机和3个从机复制主机的数据。当主节点下降时,从节点1升级为新的主节点,但从节点2和从节点3仍指向上一个主节点,而不是更新的主节点。
有没有一种方法可以让从属设备动态地从新的主设备读取数据。还是需要手动更改配置并重新启动从属任务?

如e4c5所述,您可以使用repmgr管理此类任务。我已经尝试过repmgr,结果没有问题

我遵循了一个教程来做这件事,下面是链接:


我希望在本教程之后,您可以毫无问题地做任何您想做的事情。

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

  • 当主服务器出现故障时,您将升级一个从属服务器,并重新配置所有其他从属服务器以定位新的主服务器。但是,有一种情况可能不需要重新配置其他从属设备:如果您使用的是“WAL存档”,并且您的存档存储在一个共享驱动器上,该驱动器在旧的主驱动器发生故障后仍然存在。如果新的主设备继续使用相同的共享存储,则可能不需要重新配置其他从属设备。再说一次,我从来没有试过——你可以试试
  • 如果您的复制机制基于“复制插槽”(在PostgreSQL 9.4中引入),那么您必须重新配置所有从机。在这种情况下,实际上您必须从头开始在所有其他从机上重建复制(就好像它们从来都不是从机一样)。然而,在我看来,“复制槽”是更好的选择
关于自动化:您询问是否可以自动重新配置其他从属设备,但您没有提到的是,是否实现了故障切换自动化。我想说的是,PostgreSQL本身不会自动执行故障切换(当主服务器出现故障时升级其中一个从服务器)。至少您必须在要升级的从机上创建“触发器文件”,并且您必须手动或使用其他产品(例如pgpool2)来执行此操作

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

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

编辑: 我忘了说两件事:

  • 在新主设备升级后自动重新配置所有其他从属设备可能不是一个好主意,尤其是如果您有许多从属设备。这会给你的新的初选和人际网络带来额外的压力,因此在某些情况下,最好将此推迟到晚上。在提到的教程中有更多关于这方面的内容
  • 我已经写了教程

最简单的方法是使用repmgr