当前位置: 首页 > 工具软件 > Orchestrator > 使用案例 >

orchestrator的failover

颜河
2023-12-01

一、自动切换

orchestrator自动切换需要满足以下条件:

  • 主库是downtime的集群不进行故障切换。如果希望忽略集群故障,可以设置downtime。
  • 处于故障活跃期的集群不进行故障切换(即in_active_period=1)
  • 只对配置项RecoverMasterClusterFilters匹配的集群进行故障切换
    会周期检测主库状态。
    自动切换,会周期进行故障扫描,如果发现故障,条件满足就会进行故障切换。

二、手动切换

2.1 recover

  以故障主库以及候选实例进行故障切换;指定的故障主库必须是故障的,也就是已确认发生故障,如果不是故障的,不进行切换。

2.2 force-master-failover

  不论集群主库是否故障,都会进行切换操作,需要用户确认已发生故障;不指定候选主库,原主库成为单独的DB 实例。

2.3 force-master-takeover

  force-master-takeover,唯一不同于force-master-failover的点是,force-master-takeover带候选主库,并且候选主库必须是集群主库的直连从库。

2.4 graceful-master-takeover

  graceful-master-takeover切换逻辑是原主库是正常的,需要提升新主库,老主库可作为从库。

具体操作步骤包括:

(1)检查候选主库

  • 候选主库必须是集群的主库的直连从库
  • 候选主库,没有被禁止提升为主库(即promotion rule 不是must not)
  • 候选主库,没有延迟过大(超过20s)

(2) 故障扫描
(3) 调用hooks:PreGracefulTakeoverProcesses

(4) 如果集群中不只一个副本,将老主库的从库移动到候选主库之下

(5) 停止候选主库的复制,在候选主库上执行stop slave

(6) 设置老主库只读

(7) 使候选主库追上老主库(start slave until)

(8) 进行故障恢复
(9) 将老主库变成新主库的从库

(10) 调用hooks: PostGracefulTakeoverProcesses

  该方式首先会让候选主库追上老主库。最后,将老主库作为新主库的从库(但没有执行start slave)。

 类似资料: