具体实施方式
下面将详细描述本发明的各个方面的特征和示例性实施例,为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细描述。应理解,此处所描述的具体实施例仅被配置为解释本发明,并不被配置为限定本发明。对于本领域技术人员来说,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明更好的理解。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
图1为本说明书披露的一个实施例的实施场景示意图。如图1所示,数据库包括节点11、节点12和节点13;若内核从节点11、节点12和节点13中选择节点11作为主节点,那么节点12和节点13为从节点;若主节点发生故障时,内核从节点12和节点13中选择节点12作为新的主节点。其中,数据库包括的节点的数目大于或等于3,在图1中以三个节点为示例。
在本发明实施例中,内核监测到数据库的主节点发生了故障,就断开与主节点的连接,并在数据库的多个从节点中确定新的主节点后,就与新的主节点建立连接,在建立连接的过程中如果连接时碰到故障节点,则跳过故障节点连接下一节点,能够解决数据库故障时切换时间长、可靠性不高和精确度不高的问题。
为了更好地理解本发明,下面结合图2对本发明实施例的数据库故障处理方法进行详细描述。
图2为本发明实施例提供了一种数据库故障处理方法的流程图。如图2所示,该数据库故障处理方法可包括:
步骤S201:监测到数据库的主节点发生故障,断开与主节点的连接,在数据库的多个从节点中确定新的主节点;
步骤S202:建立与新的主节点之间的连接,其中,若连接时碰到故障节点,则跳过故障节点连接下一节点。
在本发明实施例中,内核监测到数据库的主节点发生了故障,就断开与主节点的连接,并在数据库的多个从节点中确定新的主节点后,就与新的主节点建立连接,在建立连接的过程中如果连接时碰到故障节点,则跳过故障节点连接下一节点,能够解决数据库故障时切换时间长、可靠性不高和精确度不高的问题。
在本发明实施例中,步骤201所述的数据库的主节点发生故障,包括:如果数据库的多个从节点在预设时间内Election Timeout(Election Timeout为150ms~300ms)内均没有接收到主节点发送的心跳信息,则确定数据库的主节点发生故障。
需要说明的是,在本发明实施例中,主节点通过定期(heart timeout,hearttimeout必须小于150ms)向多个从节点发送心跳信息维持其统治,每次多个从节点收到主节点心跳信息后,重置随机超时时间(Election Timeout)。如果多个从节点ElectionTimeout内未收到主节点的心跳信息则认为主节点可能发生故障了,其中,预设时间为随机超时时间Election Timeout(Election Timeout为150ms~300ms)。
在本发明实施例,主节发生故障包括:主节点无法提供业务服务。
在确定数据库的主节点发生故障之前,数据库故障处理方法,还包括:根据Raft协议从数据库的多个从节点中确定新的主节点。
需要说明的是,数据库包括的多个节点,开始都是从节点,没有主节点;内核根据Raft协议从多个从节点中选出新的主节点;其中,第一从节点,是指随机超时时间内获得票数最多的节点。
本发明实施例通过内核切换完毕即能恢复数据库的使用,相比现有技术,能减小切换时间。另外,内核能精准的确定发生故障的主节点,并选择出新的主节点,相比现有技术,提高了精确度。
在本发明实施例中,步骤S202所述的建立与新的主节点之间的连接,其中,若连接时碰到故障节点,则跳过故障节点连接下一节点,包括以下几种方式:
第一种方式:直接通过SDK建立与新的主节点之间的连接;
第二种方式:间接通过SDK建立与新的主节点之间的连接,包括:若连接的节点不是新的主节点,则从至少一个从节点获取新的主节点的信息,用于建立与新的主节点之间的连接。
需要说明的是,通过SDK与第二从节点发生连接,是指SDK与第二从节点的IP地址进行连接。
第三种方式:如果连接的是故障节点,跳过该故障节点连接下一节点,也就是在遇到故障节点的时候,按照顺序重连即可,最终内核通过SDK建立与新的主节点之间的连接;此种连接方式,不涉及域名系统(Domain Name System,DNS)解析的调整,唯一的影响可能会增加数据库连接的耗时,因为需要多次进行连接,但是不会影响数据库使用时相关的SQL性能。
上述三种方式,在内核通过SDK建立与新的主节点之间连接之后,向新的主节点写入数据,以供新的主节点将数据传输给从节点;并在接收至少一个从节点发送的响应信息,其中,响应信息用于确定至少一个从节点已接收到数据。
上述三种方式,在选择出新的主节点之后,该新的主节点即可使用,进一步恢复数据库的使用,相比现有技术,提高了精确度和可靠性。
本发明实施例中,数据库中节点的集群上挂载了DNS链路,每一DNS链路一直指向对应节点的IP地址,如果通过SDK连接,可能会连接到故障节点上,此时跳过该故障节点,顺序重连即可,会导致数据库连接的时间加大,但不影响数据库的正常使用。其中,内核通过数据库内连接装置建立与新的主节点之间的连接,即可通过SDK建立与新的主节点之间的连接。
在本发明实施例中,数据库中的节点发生故障之后,该节点会发生重建,节点的重建会会改变DNS链路的指向,其他情况下不做调整。
节点发生重建,包括:多个从节点上的域名系统DNS指向多个从节点的IP地址;若监测到至少一个从节点发生重建,则使DNS指向重建后的IP地址。
在上述第二种方式中,间接通过SDK建立与新的主节点之间的连接,还包括:如果SDK与发生重建的从节点发生连接(即,连接装置与重建后的IP地址进行连接),则从发生重建的从节点获取新的主节点的信息,以建立与新的主节点连接。
在本发明实施例中,新的主节点的信息包括新的主节点的IP地址。
下面结合图3(a)-图3(b)对本发明实施例的数据库故障处理方法进行详细描述。
如图3(a)所示,数据库包括:主节点、从节点1和从节点2;其中,主节点、从节点1和从节点2上的DNS链路(主、1、2),一直对应指向主节点、从节点1和从节点2的IP地址;用户在操作应用程序的时候,内核通过数据库的连接装置(SDK)连接主节点、从节点1或从节点2,如果连接到的就是主节点,则从主节点写入的数据,从节点1和从节点2至少有一个接收到数据才会返回写入成功,进而实现应用程序对数据库的访问;如果连接到的是从节点1或从节点2,则从从节点1或从节点2上获取主节点的IP地址,然后重连主节点,在重连主节点之后,从主节点写入的数据,从节点1和从节点2至少有一个接收到数据才会返回写入成功,保证数据不丢失。
如图3(b)所示,主节点发生故障,通过Raft协议选主,内核选择出从节点1作为新的主节点新的主节点。通过数据库的连接装置(SDK)连接主节点(故障节点)、新的主节点或从节点,如果连接到的就是新的主节点,则从新的主节点写入的数据,从节点接收到数据才会返回写入成功,保证数据不丢失;如果连接到的是从节点,则从从节点上获取新的主节点的IP地址,然后重连新的主节点在重连新的主节点之后,从新的主节点写入的数据,从节点接收到数据才会返回写入成功,保证数据不丢失;如果连接到的是主节点,则跳过主节点,顺序重连即可,顺序重连的过程会导致数据库连接的时间加大,但不影响数据库使用时相关的SQL性能。
需要说明的是,当内核切换完毕,即恢复对数据库的使用,无额外干预的措施和步骤;且故障时不涉及DNS解析的调整。
图4为本发明实施例提供了一种数据库故障处理装置的示意图。如图4所示,该数据库故障处理装置,包括:
主节点确定模块41,用于在监测到数据库的主节点发生故障时断开与主节点的连接,在数据库的多个从节点中确定新的主节点;以及
主节点连接模块42,用于建立与新的主节点之间的连接,若连接时碰到故障节点,主节点连接模块跳过故障节点连接下一节点。
在本发明实施例中,内核监测到数据库的主节点发生了故障,就断开与主节点的连接,并在数据库的多个从节点中确定新的主节点后,就与新的主节点建立连接,在建立连接的过程中如果连接时碰到故障节点,则跳过故障节点连接下一节点,能够解决数据库故障时切换时间长、可靠性不高和精确度不高的问题。
可选的,该数据库故障处理装置,还包括:
写入模块,用于向新的主节点写入数据,以供新的主节点将数据传输给从节点;
接收模块,用于接收至少一个从节点发送的响应信息,其中,响应信息用于确定至少一个从节点已接收到数据。
可选的,该数据库故障处理装置,还包括:
指向模块,用于若监测到至少一个从节点发生重建,则使DNS指向重建后的IP地址;其中,多个从节点上的域名系统DNS指向多个从节点的IP地址。
可选的,该数据库故障处理装置,还包括:
获取模块,用于若监测到与重建的从节点发生连接,则从发生重建的从节点获取主节点的信息,以与主节点建立连接。
可选的,主节点连接模块42,具体用于:
若连接的节点不是新的主节点,则从至少一个从节点获取新的主节点的信息,以建立与新的主节点之间的连接。
可选的,该数据库故障处理装置,还包括:
第二确定模块,用于若监测到在预设时长内从节点未接收到主节点发送的心跳信息,则确定主节点发生故障。
主节点确定模块41,具体用于根据Raft协议在多个从节点中确定新的主节点。
另外,结合图2描述的本发明实施例的数据库故障处理方法可以由计算设备来实现。图5示出了本发明实施例提供的计算设备的硬件结构示意图。
计算设备可以包括处理器501以及存储有计算机程序指令的存储器502。
具体地,上述处理器501可以包括中央处理器(CPU),或者特定集成电路(Application Specific Integrated Circuit,ASIC),或者可以被配置成实施本发明实施例的一个或多个集成电路。
存储器502可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器502可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器502可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器502可在数据处理装置的内部或外部。在特定实施例中,存储器502是非易失性固态存储器。在特定实施例中,存储器502包括只读存储器(ROM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可改写ROM(EAROM)或闪存或者两个或更多个以上这些的组合。
处理器501通过读取并执行存储器502中存储的计算机程序指令,以实现上述实施例中的任意一种数据库故障处理方法。
在一个示例中,计算设备还可包括通信接口503和总线510。其中,如图5所示,处理器501、存储器502、通信接口503通过总线510连接并完成相互间的通信。
通信接口503,主要用于实现本发明实施例中各模块、装置、单元和/或设备之间的通信。
总线510包括硬件、软件或两者,将计算设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(AGP)或其他图形总线、增强工业标准架构(EISA)总线、前端总线(FSB)、超传输(HT)互连、工业标准架构(ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、外围组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线510可包括一个或多个总线。尽管本发明实施例描述和示出了特定的总线,但本发明考虑任何合适的总线或互连。
另外,结合上述实施例中的数据库故障处理方法,本发明实施例可提供一种计算机可读存储介质来实现。该计算机可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种数据库故障处理方法。
需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
还需要说明的是,本发明中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本发明不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
以上所述,仅为本发明的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。