Orchestrator实现了主动Failover,当初来看看主动Failover的大抵流程是怎么样的。

1、故障检测(Failure detection)

orchestrator应用整体性办法来检测主节点和两头主节点的故障。

在原始的检测办法中,监控工具会探测主节点,并在无奈分割或查问主服务器时收回警报。这种办法容易受到网络故障引起的误报的影响。为了缩小误报的几率,简略办法通过以t长时间距离运行n个测试来缓解这个问题。这在某些状况下缩小了误报的几率,但也减少了在真正故障事件产生时的响应工夫。

orchestrator利用了复制拓扑。它不仅察看master server自身,还察看其正本。例如,为了诊断一个主节点生效的状况,orchestrator必须同时满足以下两个条件:

*无奈连贯主节点
可能连贯到主节点的正本,并确认它们也无奈看到主节点*

orchestrator不是按工夫来排查谬误,而是通过多个观察者,即复制拓扑中的服务器。实际上,当一个主节点的所有正本都统一认为它们无奈分割到主节点时,复制拓扑实际上曾经呈现故障,此时进行故障转移是正当的。

orchestrator的整体性故障检测办法在生产环境中被认为十分牢靠。

2、检测和复原(Detection and recovery)

检测并不总是导致复原。有一些状况下不心愿进行复原:

集群没有被列为主动故障转移的候选项;
管理员批示不应在特定服务器上进行复原;
管理员全局禁用了复原操作;
在之前的故障转移实现后不久,进行了重复操作;
故障类型被认为不值得进行复原;

在冀望的状况下,复原会立刻追随检测。在其余状况下,例如被阻止的复原,复原可能在检测后的几分钟内进行。

检测是独立于复原的,并且始终处于启用状态。依据检测执行OnFailureDetectionProcesses钩子函数,具体配置看下文故障检相干测配置。

3、故障检测相干配置

故障检测的配置:

{  "FailureDetectionPeriodBlockMinutes": 60,}

组织发送工夫,orchestrator每秒检测一次。

hooks:

{  "OnFailureDetectionProcesses": [    "echo 'Detected {failureType} on {failureCluster}. Affected replicas: {countReplicas}' >> /tmp/recovery.log"  ],}

MySQL 侧设置:

  • set global slave_net_timeout = 4

在从库和主库之间设置一个较短(2秒)的心跳距离,使从库可能疾速辨认故障。如果没有进行此设置,某些状况可能须要长达一分钟能力检测到故障。

  • CHANGE MASTER TO MASTER_CONNECT_RETRY=1, MASTER_RETRY_COUNT=86400

在复制失败的状况下,使从库每秒尝试从新连贯(默认为60秒)。对于短暂的网络问题,此设置尝试疾速复原复制,如果胜利,将防止由协调器执行的个别故障/复原操作。

故障检测场景

以下是潜在故障列表:

- DeadMaster  主节点故障- DeadMasterAndReplicas 主节点和正本节点故障- DeadMasterAndSomeReplicas 主节点和局部正本节点故障- DeadMasterWithoutReplicas 主节点没有正本节点- UnreachableMasterWithLaggingReplicas 无法访问的主节点且存在滞后的正本节点- UnreachableMaster 无法访问的主节点- LockedSemiSyncMaster 被锁定的半同步主节点- MasterWithTooManySemiSyncReplicas 主节点具备过多的半同步正本- AllMasterReplicasNotReplicating 所有主节点正本均未进行复制- AllMasterReplicasNotReplicatingOrDead 所有主节点正本未进行复制或进行工作- DeadCoMaster 协同主节点故障- DeadCoMasterAndSomeReplicas 协同主节点和局部正本节点故障- DeadIntermediateMaster 两头主节点故障- DeadIntermediateMasterWithSingleReplicaFailingToConnect 两头主节点故障且单个正本无奈连贯- DeadIntermediateMasterWithSingleReplica 两头主节点故障且只有一个正本节点- DeadIntermediateMasterAndSomeReplicas 两头主节点和局部正本节点故障- DeadIntermediateMasterAndReplicas 两头主节点和正本节点故障- AllIntermediateMasterReplicasFailingToConnectOrDead 所有两头主节点正本无奈连贯或进行工作- AllIntermediateMasterReplicasNotReplicating 所有两头主节点正本未进行复制- UnreachableIntermediateMasterWithLaggingReplicas 无法访问的两头主节点且存在滞后的正本节点- UnreachableIntermediateMaster 无法访问的两头主节点- BinlogServerFailingToConnectToMaster Binlog服务器无奈连贯到主节点

4 拓扑复原

拓扑复原

orchestrator 可能从一系列故障场景中进行复原。特地是,它能够从主服务器或两头主服务器的故障中复原。

主动和手动复原

orchestrator 反对以下复原形式:

  • 主动复原(在意外故障时采取行动)。
  • 优雅、打算的主库晋升。
  • 手动复原。
  • 手动、强制/紧急切换。

欲知后事如何,且听下回分解。
欢送关注公众号:DBA札记,一起交换数据库技术。后盾回复“交换群”可增加技术交换群。欢送感觉读完本文有播种,能够转发给其余敌人,大家一起学习提高!

本文由mdnice多平台公布