Orchestrator介绍四-失败/故障检测

目录

Orchestrator-失败/故障检测

传统监控主库方法

Orchestrator检测主库的方法

检测与恢复

故障场景

一些失败场景的详细解释

DeadMaster:(会发生切换)

DeadMasterAndSomeReplicas:(会发生切换)

UnreachableMaster:(不会发生切换)

DeadIntermediateMaster:(会发生切换)

UnreachableMasterWithLaggingReplicas:

LockedSemiSyncMaster

MasterWithTooManySemiSyncReplicas

不会被认为失败/故障的场景

进行失败/故障分析的方法 


Orchestrator-失败/故障检测

orchestrator使用整体方法(orc服务节点和复制拓扑中的从副本)探测主库和中间主库的故障。

传统监控主库方法

例如 监控工具会探测主库 ,当无法连接或者查询主库的时候会发出告警。但是这种方法很容易收到网络故障的影响而误报。这种简单的方法通过进行多次间隔为t的测试来减少误报。在某些情况下,这回减少误报的可能性,但在真正发生故障时会增加响应时间。

Orchestrator检测主库的方法

Orchestrator 会利用复制拓扑监控主库。 它不仅监控master本身,还利用其从库监控主库的存活。 例如,要诊断主库宕机的场景,orchestrator 必须:

  • 连接不上主库
  • 能够联系主的副本,并确认它们也看不到master

Orchestrator不按时间对错误进行分类,而是由多个观察者、复制拓扑服务器本身进行分类。 事实上,当master服务器的所有副本都同意它们无法联系主服务器时,复制拓扑实际上就被破坏了,并且故障转移是合理的。

Orchestrator 的整体故障检测方法在生产中非常可靠。

检测与恢复

并不是所有的 检测到故障后都会进行恢复,以下情况不会进行故障恢复:

  • 该集群在配置文件中 没有进行 自动故障恢复 的配置
  • 管理员账号已经配置在 特定的集群上不进行故障恢复。
  • 管理员账号已经全局禁止故障恢复。
  • 该集群不久前进行了恢复,发了防止抖动。
  • 故障类型被视为不值得被恢复。

在所需的情况下,检测到故障后立即恢复。 在其他情况下,例如恢复受阻,可能会在几分钟后检测到恢复。

检测与恢复无关,检测机制始终启用。 OnFailureDetectionProcesses 挂钩脚本在每次检测时执行,请参阅故障检测配置。

故障场景

  • DeadMaster
  • DeadMasterAndReplicas
  • DeadMasterAndSomeReplicas
  • DeadMasterWithoutReplicas
  • UnreachableMasterWithLaggingReplicas
  • UnreachableMaster
  • LockedSemiSyncMaster
  • MasterWithTooManySemiSyncReplicas
  • AllMasterReplicasNotReplicating
  • AllMasterReplicasNotReplicatingOrDead
  • DeadCoMaster
  • DeadCoMasterAndSomeReplicas
  • DeadIntermediateMaster
  • DeadIntermediateMasterWithSingleReplicaFailingToConnect
  • DeadIntermediateMasterWithSingleReplica
  • DeadIntermediateMasterAndSomeReplicas
  • DeadIntermediateMasterAndReplicas
  • AllIntermediateMasterReplicasFailingToConnectOrDead
  • AllIntermediateMasterReplicasNotReplicating
  • UnreachableIntermediateMasterWithLaggingReplicas
  • UnreachableIntermediateMaster
  • BinlogServerFailingToConnectToMaster

一些失败场景的详细解释

DeadMaster:(会发生主库切换)

  1. MySQL主库无法连接
  2. 主库所有的从副本复制失败

DeadMasterAndSomeReplicas:(会发生切换)

  1. MySQL主库无法连接
  2. 部分从副本无法连接
  3. 其余从副本复制失败

UnreachableMaster:(不会发生切换)

  1. MySQL主库无法连接
  2. 存在复制正常的从副本

原因分析:可能由于网络抖动导致orc节点无法连接主库,或者是正在花费时间去找到复制失败的从副本,从而处于这种中间状态。

orc如何处理:orchestrator 将紧急对从副本的重新读取检测,以确定它们是否真的复制正常

DeadIntermediateMaster:(会发生拓扑恢复)

  1. 级联复制的中间主库连接失败 
  2. 他的所有从副本复制失败

UnreachableMasterWithLaggingReplicas:

  1. MySQL主库无法连接
  2. 所有的非延迟从库(排除sql thread延迟)都有延迟

原因分析:

当主副本“过载”,即连接数过多,客户端会看到 "Too many connections"的提示,但是很久之前已经连接好的从副本连接主副本正常。类似的 ,主库由于元数据锁导致客户端连接被阻塞,而从副本复制正常。然而,由于应用程序无法连接到主服务器,因此不会写入任何实际数据,并且当使用诸如 pt-heartbeat 之类的心跳机制时,我们可以观察到副本上的滞后越来越大。

Orc如何处理这种场景:

Orchestrator 会将所有连接主副本的直接副本重新启动复制来应对这种情况。 这将关闭这些从副本上的旧客户端连接并尝试启动新的连接。 这些现在可能无法连接,导致所有副本上的完全复制失败。  就变为DeadMaster的场景。

LockedSemiSyncMaster

  1. MySQL主库开启了半同步复制(rpl_semi_sync_master_enabled=1
  2. 连接的半同步复制的从副本数量小于rpl_semi_sync_master_wait_for_slave_count参数设置的值
  3. rpl_semi_sync_master_timeout参数设置的足够大从而master 写锁 也不会退化为异步复制

这种情况仅在经过(ReasonableLockedSemiSyncMasterSeconds)时间之后触发。如果未设置 ReasonableLockedSemiSyncMasterSeconds,则在(ReasonableReplicationLagSeconds)时间之后触发。

对于这种情况的纠正措施可以是在主服务器上禁用半同步,或者启动(或启用)足够数量的半同步复制副本。

如果启用了EnforceExactSemiSyncReplicas,orchestrator将确定所需的半同步拓扑,并在副本上启用/禁用半同步,以使其与所需拓扑相匹配。所需的拓扑由优先级顺序(见下文)和主服务器等待副本数定义。

如果启用了RecoverLockedSemiSyncMaster,orchestrator将按照优先级顺序在副本上启用半同步(但永远不会禁用),直到半同步复制副本的数量与主服务器等待副本数匹配。请注意,如果设置了EnforceExactSemiSyncReplicas,则RecoverLockedSemiSyncMaster不会产生任何效果

优先级顺序由DetectSemiSyncEnforcedQuery(数字越大,优先级越高)、晋升规则(DetectPromotionRuleQuery)和主机名(备用)定义。

如果EnforceExactSemiSyncReplicas和RecoverLockedSemiSyncMaster都被禁用(默认情况下),orchestrator不会对此类分析调用任何恢复过程。

请同时查阅半同步复制拓扑文档以获取更多详细信息。

几个参数解释 :

rpl_semi_sync_master_enabled 半同步是否开启 在主库上配置 

rpl_semi_sync_master_wait_for_slave_count 当启用半同步复制时,主服务器等待的从服务器确认的数量

rpl_semi_sync_master_timeout 用于设置主服务器在等待从服务器确认时的超时时间。 

MasterWithTooManySemiSyncReplicas

  1. MySQL主库开启了半同步复制(rpl_semi_sync_master_enabled=1
  2. 部分开启了半同步复制的从副本已经超过了rpl_semi_sync_master_wait_for_slave_count参数设置的值
  3. EnforceExactSemiSyncReplicas 已启用(如果未启用此标志,则不会触发此分析)

待补充 

不会被认为失败/故障的场景

  1. 简单的复制异常
  2. 复制延迟

进行失败/故障分析的方法 

  • 命令行:orchestrator-client -c replication-analysis 或orchestrator -c replication-analysis
  • web API  /api/replication-analysis
  • 网页:/web/clusters-analysis/页面 ( Clusters-> Failure analysis)。这提供了一个不完整的问题列表,仅突出显示可操作的问题。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DBA之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值