数据库集群的自动故障转移方法、存储介质及设备
文献发布时间:2023-06-19 19:37:02
技术领域
本发明涉及数据库领域,特别是涉及数据库集群的自动故障转移方法、存储介质及设备。
背景技术
在使用仲裁者(观察者)的故障转移系统中,ORACLE方案的自动故障转移流程如图1所示。当主库客观缺席(即活动观察者与所有备库均确认主库缺席)后,活动观察者就会向目标备库发送“故障转移命令”。当目标备库收到来自活动观察者的“故障转移命令”后,就会更新配置状态,并将自己提升为主库;当目标备库成功提升为主库后就会向活动观察者发送“故障转移成功响应”。如果仲裁者接收到来自目标备库的“故障转移成功响应”,就会更新配置状态,进入周期Ping(并且通过进行配置状态传播);如果仲裁者超时未接收到来自目标备库的“故障转移成功响应”,就会自己“死亡”。
在ORACLE方案的自动故障转移流程图中,在主库客观缺席后,如果活动观察者向目标备库发送故障转移命令,并超时未收到来自目标备库的“故障转移成功响应”,就会自己“死亡”。这种操作会带来三种结果:1、目标备库其实已经升主成功,只是活动观察者未收到“故障转移成功响应”,然后活动观察者“死亡”,如果系统存在冗余观察者,冗余观察者向新主库注册成为新活动观察者,此时集群正常可用,并且自动故障转移系统正常可用;2、目标备库其实已经升主成功,只是活动观察者未收到“故障转移成功响应”,然后活动观察者“死亡”,如果系统不存在冗余观察者,无法产生新的活动观察者,此时集群正常可用,但是由于无活动观察者,自动故障转移系统不可用;3、目标备库确实升主失败,然后活动观察者“死亡”,由于集群无主,即使系统存在冗余者,冗余观察者也无法得到主库授权而成为新的活动观察者,此时由于无主库,集群不可用,并且由于无活动观察者,自动故障转移系统也不可用。
发明内容
本发明的一个目的是要提供一种能够解决上述任一问题的数据库集群的自动故障转移方法、存储介质及设备。
本发明一个进一步的目的是要加强自动故障转移系统的稳定性。
特别地,本发明提供了一种数据库集群的自动故障转移方法,数据库集群包括仲裁者、主库和多个备库,仲裁者用于观察主库与备库的运行状态,自动故障转移方法包括:
获取主库的故障信号;
向多个备库中的目标备库发送故障转移命令;
尝试获取目标备库发送的反馈信息,反馈信息包括目标备库对故障转移命令的执行结果;
若尝试结果为失败,则尝试连接多个备库中除目标备库外的其他备库;
在尝试连接其他备库失败的情况下,则停止仲裁者的运行。
进一步地,在尝试获取目标备库发送的反馈信息的步骤之后还包括:
若尝试结果为成功,则根据反馈信息调整数据库集群的运行状态。
进一步地,根据反馈信息调整数据库集群的运行状态的步骤包括:
判断反馈信息是否为故障转移命令执行失败;
若是,则选择多个备库中位于目标备库下一顺位的同步备库作为新的目标备库,并向新的目标备库发送故障转移命令。
进一步地,判断反馈信息是否为故障转移命令执行失败的步骤之后还包括:
若是,则提升目标备库为主库,并更新仲裁者的配置状态。
进一步地,尝试连接多个备库中除目标备库外的其他备库的步骤之后还包括:
若尝试结果为成功,则获取其他备库的响应信息;
根据响应信息判断目标备库是否成功升级为主库;
若是,则更新仲裁者的配置状态。
进一步地,根据响应信息判断目标备库是否成功升级为主库的步骤之后还包括:
在目标备库未成功升级为主库的情况下,则尝试选择位于目标备库下一个顺位的同步备库作为新的目标备库;
若尝试结果为成功,则向新的目标备库发送故障转移命令。
进一步地,尝试选择下一个顺位的同步备库作为新的目标备库的步骤包括:
若尝试结果为失败,则继续选择位于新的目标备库下一顺位的同步备库为待执行的目标备库,直至获取到可执行的目标备库,并向可执行的目标备库发送故障转移命令。
进一步地,目标备库通过对多个备库中的同步备库分别预设的优先级确定,其中优先级最高的同步备库为目标备库。
根据本发明的另一方面,还提供了一种机器可读存储介质,其上存储有机器可执行程序,机器可执行程序被处理器执行时实现上述任一种数据库集群的自动故障转移方法。
根据本发明的另一方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并在处理器上运行的机器可执行程序,并且处理器执行机器可执行程序时实现上述任一种数据库集群的自动故障转移方法。
本发明的数据库集群的自动故障转移方法,数据库集群包括仲裁者、主库和多个备库,仲裁者用于观察主库与备库的运行状态。自动故障转移方法包括:获取主库的故障信号;向多个备库中的目标备库发送故障转移命令;尝试获取目标备库发送的反馈信息,反馈信息包括目标备库对故障转移命令的执行结果;若尝试结果为失败,则尝试连接多个备库中除目标备库外的其他备库;在尝试连接其他备库失败的情况下,则停止仲裁者的运行。本发明的数据库集群的自动故障转移方法避免了因为仲裁者冲动“死亡”而导致的自动故障转移不可用,很大程度上提高了集群和自动故障转移系统的可用性。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
后文将参照附图以示例性而非限制性的方式详细描述本发明的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。附图中:
图1是现有技术中自动故障转移的步骤图;
图2是根据本发明一个实施例的数据库集群的自动故障转移方法的步骤图;
图3是根据本发明另一个实施例的数据库集群的自动故障转移方法的步骤图;
图4是根据本发明又一个实施例的数据库集群的自动故障转移方法的步骤图;
图5是根据本发明又一个实施例的数据库集群的自动故障转移方法的步骤图;
图6是根据本发明又一个实施例的数据库集群的自动故障转移方法的步骤图;
图7是根据本发明一个实施例的机器可读存储介质的示意图;以及
图8是根据本发明一个实施例的计算机设备的示意图。
具体实施方式
图2是根据本发明一个实施例的数据库集群的自动故障转移方法的步骤图。本实施例的数据库集群包括仲裁者、主库和多个备库。仲裁者用于观察主库与备库的运行状态。如图2所示,本实施例的自动故障转移方法包括:
步骤S102,获取主库的故障信号。主库的故障信号可以为主库客观缺席信号。
步骤S104,向多个备库中的目标备库发送故障转移命令。目标备库通过对多个备库中的同步备库分别预设的优先级确定,其中优先级最高的同步备库为目标备库。
步骤S106,尝试获取目标备库发送的反馈信息。反馈信息包括目标备库对故障转移命令的执行结果。若尝试结果为失败,则执行步骤S108。
步骤S108,尝试连接多个备库中除目标备库外的其他备库。若尝试结果为失败,则执行步骤S110。
步骤S110,停止仲裁者的运行,并进入周期Ping状态,并且通过
本实施例的数据库集群的自动故障转移方法避免了因为仲裁者冲动“死亡”而导致的自动故障转移不可用,很大程度上提高了集群和自动故障转移系统的可用性。
图3是根据本发明另一个实施例的数据库集群的自动故障转移方法的步骤图。如图3所示,本实施例的数据库集群的自动故障转移方法包括:
步骤S202,获取主库的故障信号。
步骤S204,向多个备库中的目标备库发送故障转移命令。
步骤S206,尝试获取目标备库发送的反馈信息。反馈信息包括目标备库对故障转移命令的执行结果。若尝试结果为失败,则执行步骤S208。若尝试结果为成功,则执行步骤S212。
步骤S208,尝试连接多个备库中除目标备库外的其他备库。若尝试结果为失败,则执行步骤S210。
步骤S210,停止仲裁者的运行。
步骤S212,根据反馈信息调整数据库集群的运行状态。
图4是根据本发明另一个实施例的数据库集群的自动故障转移方法的步骤图。如图4所示,本实施例的数据库集群的自动故障转移方法中的根据反馈信息调整数据库集群的运行状态的步骤包括:
步骤S302,判断反馈信息是否为故障转移命令执行失败。若是,则执行步骤S304。若否,则执行步骤S308。
步骤S304,选择多个备库中位于目标备库下一顺位的同步备库作为新的目标备库。
步骤S306,向新的目标备库发送故障转移命令。
步骤S308,提升目标备库为主库,并更新仲裁者的配置状态。
图5是根据本发明另一个实施例的数据库集群的自动故障转移方法的步骤图。如图5所示,本实施例的数据库集群的自动故障转移方法包括:
步骤S402,获取主库的故障信号。
步骤S404,向多个备库中的目标备库发送故障转移命令。
步骤S406,尝试获取目标备库发送的反馈信息。在尝试结果为失败的情况下,执行步骤S408。在尝试结果为成功的情况下,执行步骤S412。
步骤S408,尝试连接多个备库中除目标备库外的其他备库。在尝试结果为失败的情况下,执行步骤S410。
步骤S410,停止仲裁者的运行。
步骤S412,获取其他备库的响应信息。
步骤S414,根据响应信息判断目标备库是否成功升级为主库。若是,则执行步骤S416。
步骤S416,更新仲裁者的配置状态。
图6是根据本发明另一个实施例的数据库集群的自动故障转移方法的步骤图。如图6所示,本实施例的数据库集群的自动故障转移方法包括:
步骤S502,获取主库的故障信号。
步骤S504,向多个备库中的目标备库发送故障转移命令。
步骤S506,尝试获取目标备库发送的反馈信息。在尝试结果为失败的情况下,执行步骤S508。
步骤S508,尝试连接多个备库中除目标备库外的其他备库。在尝试结果为失败的情况下,执行步骤S510。在尝试结果为成功的情况下,执行步骤S512
步骤S510,停止仲裁者的运行。
步骤S512,获取其他备库的响应信息。
步骤S514,根据响应信息判断目标备库是否成功升级为主库。若是,则执行步骤S516。若否,则执行步骤S518。
步骤S516,更新仲裁者的配置状态。
步骤S518,尝试选择位于目标备库下一个顺位的同步备库作为新的目标备库。若尝试结果为成功,则执行步骤S520。若尝试结果为失败,则执行步骤S522。
步骤S520,向新的目标备库发送故障转移命令。
步骤S522,继续选择位于新的目标备库下一顺位的同步备库为待执行的目标备库,直至获取到可执行的目标备库,并向可执行的目标备库发送故障转移命令。
本实施例的数据库集群的自动故障转移方法,在确认主库客观缺席后,仲裁者就会向目标备库收发送“故障转移命令”。当目标备库收到来自仲裁者的“故障转移命令”后,就会更新配置状态,并将自己提升为主库。当目标备库成功提升为主库后就会向仲裁者发送“故障转移成功响应”,当目标备库升主失败后就会想仲裁者发送“故障转移失败响应”。
如果仲裁者接收到来自目标备库的“故障转移成功响应”,就会更新配置状态,进入周期Ping,并且进行配置状态传播。
如果仲裁者接收到来自目标备库的“故障转移失败响应”,就会选择下一个顺位(优先级越高顺位越靠前)的同步备库作为新的目标备库。
如果仲裁者超时未收到“故障转移成功/失败响应”,就会去Ping其他备库,如果Ping不通其他备库,则表示仲裁者客观缺席,则仲裁者自己“死亡”。
如果Ping通其他备库,则通过其他备库的响应判断目标备库是否成功升主。如果该目标备库成功升主,仲裁者就会更新配置状态,进入周期Ping,否则的话,仲裁者就会选择下一个顺位的同步备库作为新的目标备库;如果选到新的目标备库,就向新的目标备库发起故障转移。
本实施例的数据库集群的自动故障转移方法解决了上述ORACLE方案中“活动观察者冲动死亡”所带来的“不良结果2(即自动故障转移系统不可用)”和“不良结果3(即集群不可用,自动故障转移系统不可用)”。本实施例在很大程度上提高了集群和自动故障转移系统的可用性。
本实施例还提供了一种机器可读存储介质和计算机设备。图7是根据本发明一个实施例的机器可读存储介质的示意图,图8是根据本发明一个实施例的计算机设备的示意图。
机器可读存储介质40其上存储有机器可执行程序41,机器可执行程序41被处理器执行时实现上述任一实施例的数据库集群的自动故障转移方法。
计算机设备50可以包括存储器520、处理器510及存储在存储器520上并在处理器510上运行的机器可执行程序41,并且处理器510执行机器可执行程序41时实现上述任一实施例的数据库集群的自动故障转移方法。
需要说明的是,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何机器可读存储介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。
就本实施例的描述而言,机器可读存储介质40可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质40甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。
计算机设备50可以是例如服务器、台式计算机、笔记本式计算机、平板计算机或智能手机。在一些示例中,计算机设备50可以是云计算节点。计算机设备50可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括执行特定的任务或者实现特定的抽象数据类型的例程、程序、目标程序、组件、逻辑、数据结构等。计算机设备50可以在通过通信网络链接的远程处理设备执行任务的分布式云计算环境中实施。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
计算机设备50可以包括适于执行存储的指令的处理器510、在操作期间为所述指令的操作提供临时存储空间的存储器520。处理器510可以是单核处理器、多核处理器、计算集群或任何数量的其他配置。存储器520可以包括随机存取存储器(RAM)、只读存储器、闪存或任何其他合适的存储系统。
处理器510也可以通过系统互连链接到适于将计算机设备50连接到显示设备的显示接口。显示设备可以包括作为计算机设备50的内置组件的显示屏。显示设备还可以包括外部连接到计算机设备50的计算机监视器、电视机或投影仪等。此外,网络接口控制器(network interface controller,NIC)可以适于通过系统互连将计算机设备50连接到网络。在一些实施例中,NIC可以使用任何合适的接口或协议(诸如因特网小型计算机系统接口等)来传输数据。网络可以是蜂窝网络、无线电网络、广域网(WAN))、局域网(LAN)或因特网等等。远程设备可以通过网络连接到计算设备。
本实施例提供的流程图并不旨在指示方法的操作将以任何特定的顺序执行,或者方法的所有操作都包括在所有的每种情况下。此外,方法可以包括附加操作。在本实施例方法提供的技术思路的范围内,可以对上述方法进行附加的变化。
至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。
- 数据库集群数据处理方法及装置、存储介质和终端
- 基于深度学习的上腹部转移淋巴结节自动识别系统、计算机设备、存储介质
- 通信设备电源故障分析的方法、装置、设备及存储介质
- 协调自动驾驶的机动车的充电过程的方法,存储介质,移动终端设备和服务器设备
- 自动驾驶协助方法、驾驶设备、协助设备及可读存储介质
- 一种数据库集群的故障处理方法、存储介质与设备
- 故障设备任务转移方法及系统、电子设备和存储介质