我正在使用repmgr并成功故障转移到备用节点。但是,当我尝试恢复失败的主节点时,我现在发现我有两个主节点。
我尝试将备用节点重新注册为待机状态。但我发现当repmgr检查节点的模式时,它发现它处于恢复模式并且不允许它。
repmgr -f /var/lib/pgsql/repmgr/repmgr.conf cluster show
=> Role | Connection String
* master | host=<IP Address> user=repmgr dbname=my_db
* master | host=<IP Address> user=repmgr dbname=my_db
repmgr -f /var/lib/pgsql/repmgr/repmgr.conf --verbose master register --force
=> Opening configuration file: /var/lib/pgsql/repmgr/repmgr.conf
repmgr connecting to master database
repmgr connected to master, checking its state
finding node list for cluster 'my_cluster'
checking role of cluster node 'host=<IP Address> user=repmgr dbname=my_db'
There is a master already in cluster my_cluster
Node 2
============
repmgr -f /var/lib/pgsql/repmgr/repmgr.conf standby clone -h <master Node IP> --force
=> repmgr: directory "." exists but is not empty
任何建议都将受到赞赏。
答案 0 :(得分:2)
Trick是关闭要降级的服务器上的postgres守护程序。在完成克隆之前,您无需再次将其重新打开,到那时cluster show
将显示旧主服务器已成功降级。
根据您的连接池逻辑,您可能希望关闭旧主服务器,只需将案例内容写入其中,然后在克隆过程中丢失。