掌桥专利:专业的专利平台
掌桥专利
首页

用于MySQL组复制的故障自恢复方法和装置

文献发布时间:2023-06-19 10:58:46


用于MySQL组复制的故障自恢复方法和装置

技术领域

本发明涉及数据库管理技术领域,尤其涉及一种用于MySQL组复制的故障自恢复方法和装置。

背景技术

为解决基于传统复制方案的数据一致性和业务连续性问题,MySQL官方在5.7.17版本推出组复制(MySQL Group Replication,简称MGR)插件,解决了传统数据复制同步的问题。MGR组复制架构由多个MySQL实例构成,不同实例通过Paxos协议传递消息进行交互。通过Paxos协议实现组内多数节点数据强一致,可用于创建高可用、可扩展、容错的复制拓扑结构,

Paxos协议是一个“多数派”的协议,任何数据的传输都要超过一半成员的应答才算成功。因此,为了使数据能正常传输,要求至少要有半数以上的成员能够正常通信。当多数节点发生故障甚至某个园区发生灾难时,故障导致半数以上的成员不可用,该集群就无法对外提供服务,高可用无法得到保障,此时需要数据库管理员介入去恢复数据库以保障业务的连续性。

发明内容

针对现有技术中的问题,本发明提供一种用于MySQL组复制的故障自恢复方法和装置、电子设备以及计算机可读存储介质,能够至少部分地解决现有技术中存在的问题。

为了实现上述目的,本发明采用如下技术方案:

第一方面,提供一种用于MySQL组复制的故障自恢复方法,包括:

获取当前MySQL组所包含的各MySQL实例的监控信息;

根据各MySQL实例的监控信息得到当前MySQL组的状态;

根据当前MySQL组的状态进行重组控制以实现故障自恢复。

进一步地,所述监控信息包括:MySQL实例的状态,MySQL实例的状态包括:在线、离线和恢复;

所述根据各MySQL实例的监控信息得到当前MySQL组的状态,包括:

判断处于在线状态的MySQL实例的数量是否大于所述当前MySQL组中MySQL实例总数量的预设比例;

若是,则当前MySQL组的状态为正常;

若否,则当前MySQL组的状态为异常。

进一步地,所述监控信息还包括:全局事务标识符编号;

所述根据当前MySQL组的状态进行重组控制,包括:

若当前MySQL组的状态为正常,则不启用重组;

若当前MySQL组的状态为异常,则判断处于在线状态的MySQL实例的数量是否大于预设的MySQL实例数量最小值;

若处于在线状态的MySQL实例的数量大于预设的MySQL实例数量最小值,则将处于在线状态的MySQL实例重组;

若处于在线状态的MySQL实例的数量小于预设的MySQL实例数量最小值,则将处于在线状态的MySQL实例中的全局事务标识符编号最新的MySQL实例降级作为单实例对外提供服务。

进一步地,所述将处于在线状态的MySQL实例重组,包括:

控制前MySQL组所包含的所有MySQL实例退出前MySQL组;

将处于在线状态的MySQL实例中的全局事务标识符编号最新的MySQL实例作为主节点、其他处于在线状态的MySQL实例作为从节点重新调整处于在线状态的MySQL实例的配置信息,形成新的MySQL实例组对外提供服务。

进一步地,将处于在线状态的MySQL实例中的全局事务标识符编号最新的MySQL实例作为单实例对外提供服务,包括:

控制前MySQL组所包含的所有MySQL实例退出前MySQL组;

关闭处于在线状态的MySQL实例中的全局事务标识符编号最新的MySQL实例的只读功能,以便其作为单实例对外提供服务。

进一步地,用于MySQL组复制的故障自恢复方法还包括:

实时监控当前MySQL组所包含的各MySQL实例以便采集监控信息。

进一步地,所述实时监控当前MySQL组所包含的各MySQL实例以便采集监控信息,包括:

通过向各MySQL实例定时发送查询指令以便采集监控信息。

第二方面,提供一种用于MySQL组复制的故障自恢复装置,包括:

监控信息获取模块,获取当前MySQL组所包含的各MySQL实例的监控信息;

当前MySQL组状态判断模块,根据各MySQL实例的监控信息得到当前MySQL组的状态;

重组控制模块,根据当前MySQL组的状态进行重组控制以实现故障自恢复。

第三方面,提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述的用于MySQL组复制的故障自恢复方法的步骤。

第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述的用于MySQL组复制的故障自恢复方法的步骤。

本发明提供的用于MySQL组复制的故障自恢复方法和装置,可用于金融领域或其他领域,该方法包括:获取当前MySQL组所包含的各MySQL实例的监控信息;根据各MySQL实例的监控信息得到当前MySQL组的状态;根据当前MySQL组的状态进行重组控制以实现故障自恢复,其中,根据当前MySQL组的状态进行重组控制,实现故障自恢复,解决MGR在多数节点故障时无法对外提供服务的问题,在数据库以及应用层实现故障情况下不影响业务的正常使用。

为让本发明的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1为本发明实施例中的应用架构示意图;

图2是本发明实施例中的用于MySQL组复制的故障自恢复方法的流程示意图一;

图3是本发明实施例中的用于MySQL组复制的故障自恢复方法的流程示意图二;

图4示出了本发明实施例中的步骤S330的具体步骤;

图5示出了本发明实施例中的步骤S320的具体步骤;

图6是本发明实施例中的用于MySQL组复制的故障自恢复方法的流程示意图三;

图7是本发明实施例中的用于MySQL组复制的故障自恢复装置的结构框图;

图8为本发明实施例电子设备的结构图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

在MGR组复制架构下,当多数节点发生故障甚至某个园区发生灾难时,故障导致半数以上的成员不可用,该集群就无法对外提供服务,高可用无法得到保障,此时需要数据库管理员介入去恢复数据库以保障业务的连续性。

为至少部分解决上述技术问题,本发明实施例提供了一种用于MySQL组复制的故障自恢复技术,能根据当前MySQL组的状态进行重组控制,实现故障自恢复,解决MGR在多数节点故障时无法对外提供服务的问题,在数据库以及应用层实现故障情况下不影响业务的正常使用。

图1为本发明实施例中的应用架构示意图;如图1所示,当前MySQL组由多个MySQL实例构成,各服务器DB分别实现当前MySQL组的各MySQL实例,不同实例通过Paxos协议传递消息进行交互。

其中,在当前MySQL组(也可称为MGR集群)开始服务时,首先启动故障检测,在MGR集群内所有的服务器DB上部署Agent监控模块,监控模块通过Agent实现对MGR集群中每个节点的状态监控和操作,采集方式为向集群定时发送查询指令,并将采集的指标自动上送至监控中心。监控中心记录了各实例的各种状态信息,节点状态主要分为3种:online(在线)、offline(离线)以及recovery(恢复),只有检测到多数节点为online状态时,判断该MGR集群正常;如果检测到集群内超过多数节点异常,无法响应检测脚本,则判定该集群状态异常,无法对外提供服务。

Agent监控主要用于检测数据库节点的状态及数据库的元信息,监控中心用于记录Agent上送的各类信息。

值得说明的是,监控中心用于实施本发明实施例提供的用于MySQL组复制的故障自恢复方法,实现故障自恢复。

图2是本发明实施例中的用于MySQL组复制的故障自恢复方法的流程示意图一;如图2所示,该用于MySQL组复制的故障自恢复方法可以包括以下内容:

步骤S100:获取当前MySQL组所包含的各MySQL实例的监控信息;

具体地,监控信息包括:MySQL实例的状态、全局事务标识符编号(也可称为GTID号)等,MySQL示例的状态主要分为3种:online(在线)、offline(离线)以及recovery(恢复)。

步骤S200:根据各MySQL实例的监控信息得到当前MySQL组的状态;

具体地,当前MySQL组的状态主要分为3种:online(在线)、offline(离线)以及recovery(恢复)。

步骤S300:根据当前MySQL组的状态进行重组控制以实现故障自恢复。

具体地,当前MySQL组的状态分为正常和异常两种,若当前MySQL组的状态为正常,则返回步骤S100,持续对各当前MySQL实例监控;若当前MySQL组的状态为异常,则进行重组控制。

通过采用上述技术方案,当故障导致半数以上的成员不可用时,仍然能使在线的少数成员依旧能够立刻对外提供服务,虽然冗余能力不好,但至少能保障业务不中断,解决MGR组复制中的少数节点甚至单节点无法正常对外提供服务的问题,MGR组复制在多数节点发生故障时,无需人工干预就能够自动检测故障并重新调整剩余节点的配置信息,使其成为单节点对外提供服务,保障了MGR组复制的高可用,实现了无需人工干预的故障自恢复,降低了对业务的影响。

在一个可选的实施例中,参见图3,该步骤S200可以包括以下内容:

步骤S210:判断处于在线状态的MySQL实例的数量是否大于所述当前MySQL组中MySQL实例总数量的预设比例;

若是,执行步骤S220;若否,执行步骤S230。

其中,预设比例可以是50%~80%,比如60%或70%。

步骤S220:当前MySQL组的状态为正常;

其中,若当前MySQL组的状态为正常,则不启用重组,返回步骤S100,持续监控各的MySQL实例的状态。

步骤S230:当前MySQL组的状态为异常。

值得说明的是,若当前MySQL组的状态为异常,则执行后续步骤。

其中,步骤S300可以包括以下内容:

步骤S310:判断处于在线状态的MySQL实例的数量是否大于预设的MySQL实例数量最小值;

若是,执行步骤S320;若否,执行步骤S330。

具体地,该MySQL实例数量最小值可以是3~8,比如5或6,具体根据当前MySQL组的规模确定,本发明实施例对此不作限制。

步骤S320:将处于在线状态的MySQL实例中的全局事务标识符编号最新的MySQL实例降级作为单实例对外提供服务。

步骤S330:将处于在线状态的MySQL实例重组;

通过采用上述技术方案,能够在最大限度维持MySQL组复制技术的优势的基础上,实现故障自恢复。

在一个可选的实施例中,参见图4,该步骤S330可以包括以下内容:

步骤S331:控制前MySQL组所包含的所有MySQL实例退出前MySQL组;

步骤S332:将处于在线状态的MySQL实例中的全局事务标识符编号最新的MySQL实例作为主节点、其他处于在线状态的MySQL实例作为从节点重新调整处于在线状态的MySQL实例的配置信息,形成新的MySQL实例组对外提供服务。

在一个可选的实施例中,参见图5,该步骤S320可以包括以下内容:

步骤S321:控制前MySQL组所包含的所有MySQL实例退出前MySQL组;

步骤S322:关闭处于在线状态的MySQL实例中的全局事务标识符编号最新的MySQL实例的只读功能,以便其作为单实例对外提供服务。

在一个可选的实施例中,参见图6,该用于MySQL组复制的故障自恢复方法还可以包括:

步骤S400:实时监控当前MySQL组所包含的各MySQL实例以便采集监控信息。

具体地,通过向各MySQL实例定时发送查询指令以便采集监控信息。

值得说明的是,当检测到集群(即MySQL组)状态异常时,则触发重组控制,包括两种,一种是在线状态的MySQL实例满足最小值要求时,进行MySQL组重组,利用新组的MySQL组继续基于MySQL组复制技术提供服务,另一种是在MySQL实例不满足最小值要求时,进行单节点降级。

单节点降级时,监控中心首先向MGR集群发送指令,将组内所有成员退出MGR组。为保证数据库能正常对外提供服务,监控中心需要从剩余节点中选取一个节点作为新的单实例对外提供服务,可通过对剩余节点的GTID(全局事务标识符(Global TransactionIdentifier,GTID))号进行逐一对比,找出GTID号最新的节点。由于多数节点故障导致了剩余的节点变成只读状态,新实例上的agent会自动启动关闭只读功能,以保证其可正常对外提供读写服务。

通过采用上述技术方案,能保障MGR组复制在多数节点发生故障时,能够自动检测故障并重新调整剩余节点的配置信息,使其成为单节点对外提供服务,保障了MGR组复制的高可用,实现了无需人工干预的故障自恢复。

基于同一发明构思,本申请实施例还提供了一种用于MySQL组复制的故障自恢复装置,可以用于实现上述实施例所描述的方法,如下面的实施例所述。由于用于MySQL组复制的故障自恢复装置解决问题的原理与上述方法相似,因此用于MySQL组复制的故障自恢复装置的实施可以参见上述方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图7是本发明实施例中的用于MySQL组复制的故障自恢复装置的结构框图。如图7所示,该用于MySQL组复制的故障自恢复装置具体包括:监控信息获取模块10、当前MySQL组状态判断模块20以及重组控制模块30。

监控信息获取模块10获取当前MySQL组所包含的各MySQL实例的监控信息;

当前MySQL组状态判断模块20根据各MySQL实例的监控信息得到当前MySQL组的状态;

重组控制模块30根据当前MySQL组的状态进行重组控制以实现故障自恢复。

通过采用上述技术方案,当故障导致半数以上的成员不可用时,仍然能使在线的少数成员依旧能够立刻对外提供服务,虽然冗余能力不好,但至少能保障业务不中断,解决MGR组复制中的少数节点甚至单节点无法正常对外提供服务的问题,MGR组复制在多数节点发生故障时,无需人工干预就能够自动检测故障并重新调整剩余节点的配置信息,使其成为单节点对外提供服务,保障了MGR组复制的高可用,实现了无需人工干预的故障自恢复,降低了对业务的影响。

上述实施例阐明的装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为电子设备,具体的,电子设备例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。

在一个典型的实例中电子设备具体包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述的用于MySQL组复制的故障自恢复方法的步骤。

下面参考图8,其示出了适于用来实现本申请实施例的电子设备600的结构示意图。

如图8所示,电子设备600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM))603中的程序而执行各种适当的工作和处理。在RAM603中,还存储有系统600操作所需的各种程序和数据。CPU601、ROM602、以及RAM603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。

以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡,调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装如存储部分608。

特别地,根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述的用于MySQL组复制的故障自恢复方法的步骤。

在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

相关技术
  • 用于MySQL组复制的故障自恢复方法和装置
  • 一种针对MySQL组复制的节点识别方法及装置
技术分类

06120112758651