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

发布时间:2021-11-03 15:05:53 作者:柒染
来源:亿速云 阅读:232

本篇文章给大家分享的是有关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如何进行拓扑恢复,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

推荐阅读:
  1. orchestrator 高可用yum快速安装过程
  2. 代数拓扑\集合拓扑\代数拓扑\拓扑关系\拓扑结构_笔记

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mysql orchestrator

上一篇:ADO.NET中SqlCommand对象怎么用

下一篇:如何创建使用VB.NET线程访问数据库

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》