如何使用repmgr使用Postgresql集群进行故障恢复?

时间:2016-12-06 16:16:08

标签: postgresql postgresql-9.5 repmgr

我想在云环境中构建Postgresql集群(是的,我知道这是一个坏主意......但这不是问题)。 为了您的信息,我使用Dockerized Postgresql(请参阅:https://github.com/paunin/postgres-docker-cluster)但这不是问题而不是问题。

所以我已经安装了2个带流式复制的Postgresql 9.5。 在每台主机上,我安装并正确配置了repmgr 3.2.1。

以下案例存在一些问题:

  1. 停止主人,
  2. 等待奴隶的故障转移 - >确定,
  3. 重启旧主人 - >我在repmgr cluster show显示的群集中有2个主人,我找不到任何解决办法迫使旧主人成为奴隶。
  4. 我找到的唯一丑陋的解决方案是删除旧主服务器的所有数据并重新启动它。这样做,它就像预期的那样成了奴隶(但需要一个完整的resynchro ......)。

    请注意,似乎无法强迫旧主人成为奴隶。 repmgr standby register无法正常工作:

    [2016-12-06 15:04:04] [INFO] connecting to standby database [2016-12-06 15:04:04] [ERROR] this node should be a standby (user=replication_user password=replication_pass host=psg-host21 dbname=replication_db port=5432 connect_timeout=2) [2016-12-06 15:04:04] [INFO] connecting to database Role | Name | Upstream | Connection String ----------+------------|------------|------------------------------------------------------------------------------------------------------------------ * master | psg-host21 | | user=replication_user password=replication_pass host=psg-host21 dbname=replication_db port=5432 connect_timeout=2 * master | psg-host22 | psg-host21 | user=replication_user password=replication_pass host=psg-host22 dbname=replication_db port=5432 connect_timeout=2

    非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

如果您需要由repmgr管理的高可用Postgres群集,您可以使用pg-dock

这是使用repmgr将Postgres群集停靠的工具。