共计 2484 个字符,预计需要花费 7 分钟才能阅读完成。
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 多平台公布