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多平台公布