首页> 中国专利> 一种数据库集群防脑裂的方法、存储介质与设备

一种数据库集群防脑裂的方法、存储介质与设备

摘要

本发明提供了一种数据库集群防脑裂的方法、存储介质与设备,该方法包括:获取到当前数据库所在集群内任一其他数据库发生异常事件;获取当前数据库的主备状态;向数据库集群的信任网关发送探测报文,根据信任网关的响应确认当前数据库与信任网关的连通状态;根据连通状态执行与主备状态相对应的故障处理操作。本发明的数据库集群防脑裂的方法引入信任网关概念,数据库集群会通过向数据库集群的信任网关发送探测报文,根据信任网关的响应确认当前数据库与信任网关的连通状态进而判断当前数据库的网络状态,从而采取相应的措施,防止脑裂的发生,无需第三方服务来做仲裁,节约了设备成本。

著录项

  • 公开/公告号CN114840495A

    专利类型发明专利

  • 公开/公告日2022-08-02

    原文格式PDF

  • 申请/专利号CN202210593418.2

  • 发明设计人 刘建康;李翔;

    申请日2022-05-27

  • 分类号G06F16/21(2019.01);G06F9/455(2006.01);G06F16/27(2019.01);H04L41/06(2022.01);H04L67/10(2022.01);H04L67/1095(2022.01);

  • 代理机构北京智汇东方知识产权代理事务所(普通合伙) 11391;

  • 代理人刘长江

  • 地址 100102 北京市朝阳区容达路7号院5号楼1至3层101内二层201

  • 入库时间 2023-06-19 16:14:25

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-08-19

    实质审查的生效 IPC(主分类):G06F16/21 专利申请号:2022105934182 申请日:20220527

    实质审查的生效

说明书

技术领域

本发明涉及数据库技术领域,特别是涉及一种数据库集群防脑裂的方法、存储介质与设备。

背景技术

集群技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能、可靠性、灵活性等方面的相对较高的收益,其任务调度则是集群系统中的核心技术。集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用性和可缩放性。

在数据库主备集群中,主数据库是唯一对外提供完成读写服务的节点,其他都是备数据库并且只能提供读服务。当主数据库发生故障无法提供服务后,需要做故障转移(failover),使备数据库提升为主数据库继续提供服务。因为故障发生是不确定的,为了让主数据库故障对应用的影响最小化,一般都需要自动执行故障转移(auto-failover)。

自动故障转移的判断标准是主数据库故障。在网络故障中,如果备数据库所在服务器出现网络故障就会导致备数据库认为是主数据库发生了故障,触发自动故障转移,进而导致脑裂。所以,在数据库主备集群中,如果需要自动故障转移,都会引入第三方服务(observer、仲裁节点等)来做仲裁,防止网络问题导致脑裂。

图1是现有技术中主备集群部署架构的示意图。其中示出了网关设备300、主数据库服务器100、备数据库服务器200以及第三方服务服务器400。在传统的主备集群部署架构中,引入第三方服务(例如:Observer),第三方服务位于单独服务器,和主备集群位于同一网络分区下,所有数据库和第三方服务建立TCP连接来交换信息。当某个数据库发生网络故障后,其和第三方服务的TCP连接也会断开,备数据库在无第三方服务介入的情况下无法完成升主——这样就可以防止脑裂。

第三方服务需要单独占用一台设备,并且和集群的设备在同一组网下。但在实际应用场景中,不是所有的客户都可以提供多余的设备来部署第三方服务,在这种情况下客户也需要自动故障转移功能。

基于上述考虑,如何在无第三方服务的情况下提供自动故障转移功能,并能够预防网络问题导致的脑裂就是本领域关心的技术问题。

发明内容

本发明的一个目的是要提供一种能够解决上述任一问题的集群防脑裂的方法。

本发明一个进一步的目的是要防止数据库集群发生脑裂。

本发明另一个进一步的目的是要减少防脑裂所需的设备。

特别地,本发明提供了一种数据库集群防脑裂的方法,该数据库集群防脑裂的方法包括:

获取到当前数据库所在数据库集群内任一其他数据库发生异常事件;

获取当前数据库的主备状态;

向数据库集群的信任网关发送探测报文,根据信任网关的响应确认当前数据库与信任网关的连通状态;

根据连通状态执行与主备状态相对应的故障处理操作。

可选地,根据连通状态执行与主备状态相对应的故障处理操作的步骤包括:

在当前数据库为主数据库的情况下,若连通状态为正常连通,将其他数据库踢出数据库集群;

若连通状态为连接异常,关闭当前数据库。

可选地,根据连通状态执行与主备状态相对应的故障处理操作的步骤还包括:

在当前数据库为备数据库的情况下,若连通状态为正常连通,设置当前数据库为主数据库;

若连通状态为连接异常,将当前数据库降级为异常模式,并尝试将当前数据库踢出数据库集群。

可选地,异常事件包括发现数据库集群内任一其他数据库发生故障。

可选地,异常事件还包括发现所在数据库集群内任一其他数据库无法与当前数据库进行数据同步。

可选地,信任网关的响应包括正常响应和故障响应,故障响应包括错误响应、超时响应、未响应,并且

根据信任网关的响应确认当前数据库与信任网关的连通状态的步骤包括:

在信任网关的响应为正常响应的情况下,确定连通状态为正常连通;

在信任网关的响应为故障响应的情况下,确定连通状态为连接异常。

可选地,信任网关为数据库集群所在网段的网关设备。

可选地,网关设备为路由器或交换机。

根据本发明的另一方面,还提供了一种机器可读存储介质,其上存储有机器可执行程序,机器可执行程序被处理器执行时实现根据上述任一种数据库集群防脑裂的方法。

根据本发明的另一方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并在处理器上运行的机器可执行程序,并且处理器执行机器可执行程序时实现根据上述任一种数据库集群防脑裂的方法。

本发明的数据库集群防脑裂的方法引入信任网关概念,数据库集群会通过向所述数据库集群的信任网关发送探测报文,根据所述信任网关的响应确认所述当前数据库与所述信任网关的连通状态进而判断当前数据库的网络状态,从而采取相应的措施,防止脑裂的发生,本发明的数据库集群防脑裂的方法无需第三方服务(observer、仲裁节点等)来做仲裁,节约了设备成本。

根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。

附图说明

后文将参照附图以示例性而非限制性的方式详细描述本发明的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。附图中:

图1是现有技术中主备集群部署架构的示意图;

图2是根据本发明一个实施例的数据库集群防脑裂的方法的数据库集群的示意性架构图;

图3是根据本发明一个实施例的数据库集群防脑裂的方法的示意性流程图;

图4是根据本发明一个实施例的数据库集群防脑裂的方法在当前数据库为主数据库的情况下的示意性流程图;

图5是根据本发明一个实施例的数据库集群防脑裂的方法在当前数据库为备数据库的情况下的示意性流程图;

图6是根据本发明一个实施例的机器可读存储介质的示意图;以及

图7是根据本发明一个实施例的计算机设备的示意图。

具体实施方式

图2是根据本发明一个实施例的数据库集群防脑裂的方法的数据库集群的示意性架构图。本发明的数据库集群的架构包括主数据库服务器100、备数据库服务器200以及信任网关300。信任网关300为数据库集群所在网段的网关设备。网关设备为路由器或交换机。数据库集群首先须认定其所在网段内的任意网关设备为信任网关300,主数据库与备数据库都依靠信任网关300进行交互。在后续的检查中一旦发现同信任网关300断开连接,也即同时和本网络其他所有设备断开连接。

数据库集群会将本网段已有设备当做信任网关300,提供信任网关300的IP或host之后,数据库集群内的所有数据库都会通过ping向信任网关300发送ICMP(InternetControl Message Protocol,因特网控制报文协议)报文并通过报文返回判断与信任网关300的连通状态。当ping返回正常的应答报文,则此时信任网关300为正常响应。当ping返回差错报文,则此时信任网关300为错误响应。当ping返回超时信息,则此时信任网关300为超时响应。当ping超时未收到任何报文,则此时信任网关300为未响应。在信任网关300的响应为正常响应的情况下,确定连通状态为正常连通;在信任网关300的响应为异常响应的情况下,确定所述连通状态为连接异常。

图3是根据本发明一个实施例的数据库集群防脑裂的方法的示意性流程图。本实施例的数据库集群防脑裂的方法一般性地可包括:

步骤S202,获取到当前数据库所在集群内任一其他数据库发生异常事件。异常事件包括发现数据库集群内任一其他数据库发生故障和所在数据库集群内的任一其他数据库与当前数据库无法进行数据同步。当前数据库为数据库集群内的数据库。当前数据库可以为主数据库,也可以为备数据库。

步骤S204,获取当前数据库的主备状态。主备状态指当前数据库为主数据库或备数据库。

步骤S206,向数据库集群的信任网关发送探测报文,根据信任网关的响应确认当前的数据库与信任网关的连通状态。

信任网关可以为数据库集群所在网段的网关设备。网关设备可以为路由器或交换机,上述设备不需要做任何修改,只需要提供IP地址。信任网关的响应可以包括正常响应和故障响应。

故障响应可以包括错误响应、超时响应、未响应。数据库集群可以将本网段已有设备当做信任网关,提供信任网关的IP或host之后,数据库集群内的所有数据库都会通过ping向信任网关发送ICMP报文并通过报文返回判断与信任网关的连通状态。当ping返回正常的应答报文,则此时信任网关为正常响应。当ping返回差错报文,则此时信任网关为错误响应。当ping返回超时信息,则此时信任网关为超时响应。当ping超时未收到任何报文,则此时信任网关为未响应。在信任网关的响应为正常响应的情况下,确定连通状态为正常连通;在信任网关的响应为异常响应的情况下,确定所述连通状态为连接异常。

步骤S208,根据连通状态执行与主备状态相对应的故障处理操作。

在其他实施例中,在当前数据库未发现异常事件时,间隔预设时间进行网络检查,来判断是否是本设备网络出现问题和其他数据库断开,从而出现的错误判断。

本实施例的数据库集群防脑裂的方法引入信任网关概念,数据库集群会通过向所述数据库集群的信任网关发送探测报文,根据所述信任网关的响应确认所述当前数据库与所述信任网关的连通状态进而判断当前数据库的网络状态,从而采取相应的措施,防止脑裂的发生。本发明的数据库集群防脑裂的方法无需第三方服务(observer、仲裁节点等)来做仲裁,节约了设备成本。

在传统的主备集群部署架构中,引入第三方服务(例如:Observer),第三方服务位于单独服务器,和主备集群位于同一网络分区下,所有数据库和第三方服务建立TCP连接来交换信息。当某个数据库发生网络故障后,其和第三方服务的TCP连接也会断开,备数据库在无第三方服务介入的情况下无法完成升主——这样就可以防止脑裂。与传统的主备集群部署架构比对,本实施例的数据库集群防脑裂的方法引入信任网关概念,数据库集群会将本网段已有设备当做信任网关,提供信任网关的IP或host之后,数据库集群内的所有数据库都会通过ping向信任网关发送ICMP报文并通过报文返回判断与信任网关的连通状态,从而判断数据库的网络状态,避免因为网络问题导致的脑裂现象。相比于引入第三方服务的架构,实施例的数据库集群防脑裂的方法减少了应用设备,同样可以完成故障转移,而不会发生脑裂。

图4是根据本发明一个实施例的数据库集群防脑裂的方法在当前数据库为主数据库的情况下的示意性流程图。本实施例的数据库集群防脑裂的方法中根据所述连通状态执行与主备状态相对应的故障处理操作的步骤包括:

步骤S302,确认当前数据库为主数据库。

步骤S304,确认当前数据库与信任网关的连通状态。在连通状态为正常连通时,执行步骤S306。在连通状态为连接异常时,执行步骤S308。

步骤S306,将其他数据库提出数据库集群。

步骤S308,关闭当前数据库。

在当前数据库(主数据库)和其他数据库(备数据库)同步中断时,初步判断为其他数据库(备数据库)故障,同时进行信任网关检测,连通状态为连接异常时,判断为本地网络故障,关闭当前数据库(主数据库)。其他数据库可择优选择出一个提升为主数据库。

在当前数据库(主数据库)和其他数据库(备数据库)同步中断时,初步判断为其他数据库(备数据库)故障,同时进行信任网关检测,连通状态为连通正常。不对当前数据库进行状态变化,尝试将故障的其他数据库(备数据库)踢出集群。

图5是根据本发明一个实施例的数据库集群防脑裂的方法在当前数据库为备数据库的情况下的示意性流程图。本实施例的数据库集群防脑裂的方法中根据所述连通状态执行与主备状态相对应的故障处理操作的步骤包括:

步骤S402,确认当前数据库为备数据库。

步骤S404,确认当前数据库与信任网关的连通状态。在连通状态为正常连通时,执行步骤S406。在连通状态为连接异常时,执行步骤S408。

步骤S406,设置当前数据库为主数据库。

步骤S408,将当前数据库降级为异常模式,并尝试将当前数据库踢出数据库集群。将当前数据库降级以避免影响数据库集群的其他数据库正常运行。

在当前数据库(备数据库)和其他数据库(主数据库)同步中断时,初步判断为其他数据库(主数据库)故障,同时进行信任网关检测,连通状态为正常连通。执行自动故障转移,提升当前数据库为主数据库。

在当前数据库(备数据库)和其他数据库(主数据库)同步中断时,初步判断为其他数据库(主数据库)故障,同时进行信任网关检测,连通状态为连接异常时,判断为本地网络故障。无法执行自动故障转移,当前数据库降级为异常模式,并尝试将自己踢出集群,并且后续无法执行任何故障处理,仅保证数据库集群的运行。

在网络故障中,如果备数据库所在服务器出现网络故障就会导致备数据库认为是主数据库发生了故障,触发自动故障转移,进而导致脑裂。在数据库主备集群中,如果需要自动故障转移,都会引入第三方服务(observer、仲裁节点等)来做仲裁,防止网络问题导致脑裂。第三方服务需要单独用一台设备,并且和集群的设备在同一组网下。但在实际应用场景中,不是所有的客户都可以提供多余的设备来部署第三方服务,在这种情况下客户也需要故障转移功能。

如表1所示,三个方案的对比可体现本实施例的数据库集群防脑裂的方法(方案③)的效果。方案①:主备数据库集群,且拥有自动故障转移功能。方案②:主备数据库集群以及第三方服务(observer或仲裁节点),拥有自动故障转移功能。方案③:主备数据库集群以及信任网关,拥有自动故障转移功能。

表1

由上表可见,本实施例的数据库集群防脑裂的方法(方案③)相对于方案①,在主数据库或备数据库发生网络问题的时候避免了脑裂的发生;相对于方案②减少了第三方服务设备,同样可以完成自动故障转移,而不会发生脑裂。

本实施例的数据库集群防脑裂的方法相比传统无任何外部服务或设备的主备集群,可以预防脑裂的发生。本实施例的数据库集群防脑裂的方法相比与设置有第三方服务(observer或仲裁),在减少了需要独占设备的第三方服务的情况下,拥有和其一样的防脑裂能力。

本实施例还提供了一种机器可读存储介质和计算机设备。图6是根据本发明一个实施例的机器可读存储介质的示意图,图7是根据本发明一个实施例的计算机设备的示意图。

机器可读存储介质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)或因特网等等。远程设备可以通过网络连接到计算设备。

本实施例提供的流程图并不旨在指示方法的操作将以任何特定的顺序执行,或者方法的所有操作都包括在所有的每种情况下。此外,方法可以包括附加操作。在本实施例方法提供的技术思路的范围内,可以对上述方法进行附加的变化。

至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号