前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >orchestrator系列(二)--故障检测与恢复

orchestrator系列(二)--故障检测与恢复

作者头像
DBA札记
发布2023-09-08 17:12:29
3070
发布2023-09-08 17:12:29
举报
文章被收录于专栏:MySQL参数系列MySQL参数系列

Orchestrator实现了自动Failover,现在来看看自动Failover的大致流程是怎么样的。

1、故障检测(Failure detection)

orchestrator使用整体性方法来检测主节点和中间主节点的故障。

在原始的检测方法中,监控工具会探测主节点,并在无法联系或查询主服务器时发出警报。这种方法容易受到网络故障引起的误报的影响。为了减少误报的几率,简单方法通过以t长时间间隔运行n个测试来缓解这个问题。这在某些情况下减少了误报的几率,但也增加了在真正故障事件发生时的响应时间。

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

无法连接主节点 ; 能够连接到主节点的副本,并确认它们也无法看到主节点

orchestrator不是按时间来排查错误,而是通过多个观察者,即复制拓扑中的服务器。实际上,当一个主节点的所有副本都一致认为它们无法联系到主节点时,复制拓扑实际上已经出现故障,此时进行故障转移是合理的。

orchestrator的整体性故障检测方法在生产环境中被认为非常可靠。

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

检测并不总是导致恢复。有一些情况下不希望进行恢复:

*集群没有被列为自动故障转移的候选项; 管理员指示不应在特定服务器上进行恢复; 管理员全局禁用了恢复操作; 在之前的故障转移完成后不久,进行了反复操作; 故障类型被认为不值得进行恢复;

在期望的情况下,恢复会立即跟随检测。在其他情况下,例如被阻止的恢复,恢复可能在检测后的几分钟内进行。*

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

3、故障检测相关配置

故障检测的配置:

代码语言:javascript
复制
{
  "FailureDetectionPeriodBlockMinutes": 60,
}

组织发送时间,orchestrator每秒检测一次。

hooks:

代码语言:javascript
复制
{
  "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秒)。对于短暂的网络问题,此设置尝试快速恢复复制,如果成功,将避免由协调器执行的一般故障/恢复操作。

故障检测场景

以下是潜在故障列表:

代码语言:javascript
复制
- 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 支持以下恢复方式:

  • 自动恢复(在意外故障时采取行动)。
  • 优雅、计划的主库提升。
  • 手动恢复。
  • 手动、强制/紧急切换。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-09-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DBA札记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、故障检测(Failure detection)
  • 2、检测和恢复(Detection and recovery)
  • 3、故障检测相关配置
  • 4 拓扑恢复
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档