文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

MySQL高可用工具Orchestrator如何进行拓扑恢复

2024-04-02 19:55

关注

本篇文章给大家分享的是有关MySQL高可用工具Orchestrator如何进行拓扑恢复,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

前言

小编讲一讲orchestrator的拓扑恢复。

拓扑恢复

orch能够从一系列故障场景中进行恢复。尤其是,它能够对主库或者中间主库的故障场景进行恢复。

自动和手动

orch支持:

要求

要运行任何类型的故障转移,拓扑必须支持以下任一种:

什么是恢复

恢复基于故障检测,并且由一系列事件组成:

注意:

恢复场景1:中间主库挂掉

一个简单的恢复案例是DeadIntermediateMaster。它的replicas被孤立了,但是当使用了GTID或者Pseudo GTID的情况下,replicas仍然能够被重连到拓扑中。我们可能会选择这样做:

实际的实现方式很大程度上取决于拓扑设置(哪些实例设置了log-slave-updates、实例是否有延迟、是否存在复制过滤、mysql的版本等等)。你的拓扑很有可能至少支持以上一种方式(特别是,匹配副本是一个简单的解决方案,除非使用了复制过滤)。

恢复场景2:主库挂掉

从挂掉的主库恢复是一个更为复杂的操作,有很多种原因:

主服务发现很大程度上是需要用户去实现的。常见的解决方案有:

orch尝试作为一种通用的解决方案,因此,不限制用户的服务发现方法。

自动恢复

可选。自动恢复可能会应用于所有("*")集群或者特定集群。

恢复是在检测之后进行的,并且假设恢复没有被阻碍(请参阅下文)。

为了更好的解决方案,将不同的配置应用于主恢复和中间主恢复。一下是与恢复相关的配置的详细分类。

分析机制始终运行,并定期检查故障/恢复情况。它将对以下进行自动恢复:

优雅的主库提升

使用这个来按计划、有序地替换主库。

通常,出于升级,主机维护等,会要将主库替换成另一台。这就是优雅的提升主库。

在优雅的接管中:

该操作会花费几秒钟的时间,在此期间应用看到的主库是read-only。

除了标准的hooks,orch提供了专门的hooks来运行graceful takeover:

例如,你可能想在计划的故障转移期间禁用寻呼机。高级的用法是将流量停滞在代理层。

在优雅的提升主库中,必须满足以下任一种:

通过以下方式调用graceful takeover:

手动恢复

当实例被识别为fail但自动恢复被禁用或者被阻塞的情况下,使用手动恢复方式。

可以通过提供一个失败的特定实例来让orch来进行恢复。该实例必须被识别为failure。可以对处于downtime的实例请求恢复(因为这是手动恢复,能够覆盖掉自动的配置)。通过以下方式恢复:

手动恢复不受参数RecoveryPeriodBlockSeconds影响,也不受参数RecoverMasterClusterFilters和RecoverIntermediateMasterClusterFilters的影响。因此,用户总是可以按需要来进行恢复。当一个数据库实例已经有恢复在运行的时候,这个实例的同一时刻的恢复才有可能会阻塞。

手动,强制故障转移

强制故障转移会忽略orch自己的想法。

也许,orch不认为某个实例fail了,或者你的应用逻辑要求master此刻必须change,或者也许orch对fail的类型不是很确定。你希望此刻就进行故障转移,可以这么做:

web,api,命令行

通过以下方式审计恢复情况:

通过以下方式进行审计和控制:

运行手动恢复:

一些相应的命令行调用:

阻塞,确认,防震荡

orch通过引入阻塞时间段来避免发生震荡(连锁故障导致了连续的中断和资源消耗)。在任何给定的集群上,除非用户明确允许,否则orch都不会在小于该阻塞时间段的时间间隔启用自动恢复。

阻塞时间段用参数RecoveryPeriodBlockSeconds表示。它仅用于在同一集群上的恢复。在不同集群上的并行恢复是不受影响的。

处于pending状态中的恢复一旦超过了RecoveryPeriodBlockSeconds时间或者已经被确认(acknowledged),则阻塞就被解除。

可以通过Web API /界面(查看audit/recovery page)或通过命令行界面(orchestrator-client -c ack-cluster-recoveries -alias somealias)确认恢复。

请注意,手动恢复(例如orchestrator-client -c recover或orchstrator-client -c force-master-failover)会忽略阻塞时间段。

添加提升规则

在发生故障转移时,某些服务器更适合被提升为主库,某些服务器则不适合被提升为主库。例如:

可以通过以下方式来设置偏好:

orchestrator -c register-candidate -i ${::fqdn} --promotion-rule ${promotion_rule}
提升规则有:

提升规则默认有效期1个小时(参数:CandidateInstanceExpireMinutes)。这符合orch的动态特质。可以通过设置cron job的方式来指定提升规则:

*/2 * * * * root "/usr/bin/perl -le 'sleep rand 10' && /usr/bin/orchestrator-client -c register-candidate -i this.hostname.com --promotion-rule prefer"
此设置来自生产环境。这个cron会通过puppet来更新,来表示合适的promotion_rule。某个服务器可能在某个时刻会是perfer,但5分钟过后变成了prefer_not。整合你自己的服务发现方法、脚本,来提供最新的promotion_rule。

停机时间(Downtime)

所有的故障/恢复已经分析了。但是,还应该考虑实例的停机状态。某个实例可以通过orchestrator-client -c begin-downtime被停机。自动恢复会跳过停机的服务器。

实际上,停机是专门为此目的而创建的,它使DBA可以阻止自动故障转移到特定服务器。

请注意,手动恢复(例如orchestrator-client -c recover)将覆盖停机时间。

recovery hooks

orch支持hooks——在恢复过程中调用的外部脚本。这些是通过shell调用的命令数组,尤其是bash。

以上就是MySQL高可用工具Orchestrator如何进行拓扑恢复,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯