repmgr switchover

请注意,repmgr.conf中的以下参数与切换操作相关:

reconnect_attempts:执行shutdown命令之后,在中止之前检查原始主节点是否进行干净关闭的次数
reconnect_interval:执行shutdown命令后检查原始主节点是否执行干净关闭的间隔(以秒为单位)(最多可尝试reconnect_attempts)
replication_lag_critical:如果备用数据库的复制滞后(以秒为单位)超过此值,则切换将被中止(除非提供了-F / - force选项)
standby_reconnect_timeout:重新启动后,尝试重新连接到降级主节点的秒数。

以下退出代码可以通过repmgr备用切换发出:

SUCCESS(0)
切换成功完成。

ERR_SWITCHOVER_FAIL(18)
切换无法执行。

ERR_SWITCHOVER_INCOMPLETE(22)
切换已执行但遇到问题。通常这意味着前者不能作为备用服务器重新连接。

主从切换命令目前只能在 slave服务器上执行
[[email protected] ~]$ repmgr standby switchover -f /etc/repmgr/9.6/repmgr.conf --siblings-follow --dry-run

repmgr switchover

使用 --dry-run选项执行repmgr备用切换 ; 这将执行任何必要的检查并通知您有关成功/失败的信息,并在第一个实际命令运行之前停止(这将关闭当前的主要命令);
重要提示: 请注意--dry-run会检查执行切换的先决条件以及可能会影响切换操作的数据库状态(如复制延迟)的一些基本完整性检查; 但不能保证切换操作会成功。特别是,如果当前的主节点没有完全关闭,repmgr将无法可靠地执行切换(因为在前节点和新节点之间存在分歧的危险)。

将 vlnx107002节点切换为 primary
[[email protected] ~]$ repmgr -f /etc/repmgr/9.6/repmgr.conf standby switchover
repmgr switchover
[[email protected] ~]$ repmgr -f /etc/repmgr/9.6/repmgr.conf cluster  show
repmgr switchover

改变 vlnx107003节点的同步源 为 vlnx107002(即新primary节点)
[[email protected] ~]$ repmgr -f /etc/repmgr/9.6/repmgr.conf standby follow
repmgr switchover
[[email protected] ~]$ repmgr -f /etc/repmgr/9.6/repmgr.conf standby switchover --siblings-follow
repmgr switchover

可见 如果在切换的时候- 如果 加了  --siblings-follow 参数选项,则所有的备份从节点的新的同步数据源都会自动改为最新的 primary节点。

如果降级的原primary节点没不顺利,或无法附加(同步数据源指向新的 primary节点)到新的primary,解决这种情况无需要重新登录旧primary服务器,可以使用 pg_rewind程序,该实用程序通常可以重新同步两台服务器。
如果在提升新主服务器后检测到这种情况,请 让repmgr执行pg_rewind,请添加--force-rewind 选项。

注意: 
如果repmgr检测到需要执行pg_rewind的情况,它将在执行pg_rewind之前在新主节点上 执行CHECKPOINT。

pg_rewind 启动的前提是必须 启动 wal_log_hints=on 参数选项在 postgresql.conf中
注意:注意:注意:
在切换时 repmgrd 不应该在 repmgr.conf中启用 failover=automatic,否则 repmgrd守护进程可能尝试并自行提升备用数据库。