os:ubunbu 16.04
postgresql:9.6.8
repmgr:4.1.1

192.168.56.101 node1
192.168.56.102 node2
192.168.56.103 node3

手动 rejoin

$ sudo pg_ctlcluster 9.6 main stop

$ repmgr -f /etc/repmgr.conf node rejoin -d 'host=192.168.56.103 user=repmgr dbname=repmgr connect_timeout=2' --force-rewind --dry-run --verbose
$ repmgr -f /etc/repmgr.conf node rejoin -d 'host=192.168.56.103 user=repmgr dbname=repmgr connect_timeout=2' --force-rewind --verbose

中间出错或者搞不定的话,就重新做一次 standby clone。
数据库大、网络带宽、IO不行的话,时间比较长。

$ cd /var/lib/postgresql/9.6/main
$ rm -rf ./*

$ repmgr -h 192.168.56.103 -U repmgr -d repmgr -f /etc/repmgr.conf standby clone --dry-run --verbose
$ repmgr -h 192.168.56.103 -U repmgr -d repmgr -f /etc/repmgr.conf standby clone --verbose

$ sudo pg_ctlcluster 9.6 main start

$ repmgr -f /etc/repmgr.conf standby register --upstream-node-id=3 --force --verbose

最后一步 standby register 时的 –upstream-node-id,设置为当前真实的master。

查看cluster

$ repmgr -f /etc/repmgr.conf cluster show

自动 rejoin

还不知道怎么自动rejoin,有路过哥们知道的话,指点下。

参考:
https://repmgr.org
https://repmgr.org/docs/4.1