一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种数据库切换方法、装置和存储介质与流程

2022-06-08 21:56:00 来源:中国专利 TAG:


1.本发明涉及数据库领域,具体涉及一种数据库切换方法、装置和存储介质。


背景技术:

2.目前的跨机房容灾设计中,都是假设本机房的服务器到其他机房的服务器的连接为网络通或者网络不通的情形,并以此来设计相应的解决方案。但是,在实际的应用中,容易出现短暂的半网场景,例如本机房的服务器到其他机房的服务器的连接一会通一会不通的情况。半网场景一般都是分钟级抖动,在现有技术中大都是通过加固底层网络设施来避免这种半网故障。因此,一直都没有对半网故障提出一些彻底的、可以广泛推广的方案。
3.由于金融业务是社会的基础设施,其稳定性弥足重要,稍微不稳定就会影响到许多用户的正常使用,因此,对于这种极端故障也需要考虑并解决。这种半网故障给整个系统增加了很多随机性,增加了业务实现跨机房容灾的难度,数据库高可用的切换效率有待提高。


技术实现要素:

4.本技术实施例提供一种数据库切换方法、装置和存储介质,可以提高数据库高可用的切换效率。
5.本技术实施例提供了一种数据库切换方法,该方法包括:
6.通过管理组件获取每一状态响应组件的响应信息,所述状态响应组件部署在每一数据库节点上,所述数据库节点包括主数据库节点和从数据库节点;
7.记录所述从数据库节点上的第一状态响应组件上报主数据库节点宕机的响应信息,并根据所述响应信息统计上报主数据库节点宕机的从数据库节点的数量;
8.根据从数据库节点的总数量确定预设阈值;
9.当所述统计上报主数据库节点宕机的从数据库节点的数量不小于预设阈值时,通过管理组件将主数据库节点更改到任一从数据库节点上。
10.相应的,本技术实施例还提供了一种数据库切换装置,包括:
11.获取单元,用于通过管理组件获取每一状态响应组件的响应信息,所述状态响应组件部署在每一数据库节点上,所述数据库节点包括主数据库节点和从数据库节点;
12.记录单元,用于记录所述从数据库节点上的第一状态响应组件上报主数据库节点宕机的响应信息,并根据所述响应信息统计上报主数据库节点宕机的从数据库节点的数量;
13.确定单元,用于根据从数据库节点的总数量确定预设阈值;
14.第一更改单元,用于当所述统计上报主数据库节点宕机的从数据库节点的数量不小于预设阈值时,通过管理组件将主数据库节点更改到任一从数据库节点上。
15.在一实施例中,所述记录单元,包括:
16.第一记录子单元,用于当在第一预设时间段内,记录所述从数据库节点上的第一
状态响应组件上报主数据库节点宕机的响应信息;
17.第一统计子单元,用于根据所述响应信息统计第一状态响应组件上报主数据库节点宕机的从数据库节点的第一数量,所述第一数量为上报主数据库节点宕机的从数据库节点的数量。
18.在一实施例中,所述记录单元,包括:
19.第二记录子单元,用于当在第二预设时间段内,记录所述从数据库节点上的第一状态响应组件上报主数据库节点宕机的响应信息;
20.第二统计子单元,用于获取每一从数据库节点上的第一状态响应组件上报主数据库节点状态的响应信息的总次数,统计每一从数据库节点上的第一状态响应组件上报主数据库节点宕机的响应信息的第二数量;
21.第一计算子单元,用于将所述第二数量除以所述总次数,得到每一从数据库节点到主数据库节点的失败率;
22.第二计算子单元,用于计算所述失败率大于预设概率值的从数据库节点的第三数量,所述第三数量为上报主数据库节点宕机的从数据库节点的数量。
23.在一实施例中,所述确定单元,包括:
24.第一确定子单元,用于根据所述从数据库节点的总数量确定所述总数量的奇偶性;
25.第二确定子单元,用于根据所述奇偶性计算得到预设阈值。
26.在一实施例中,所述第二确定子单元,包括:
27.当从数据库节点数量为奇数时,将所述总数量进行奇数扩充,得到第一结果;
28.将所述第一结果除以预设数值,得到预设阈值。
29.在一实施例中,所述第二确定子单元,包括:
30.当从数据库节点数量为偶数时,将所述总数量进行偶数扩充,得到第二结果;
31.将所述第二结果除以预设数值,得到预设阈值。
32.在一实施例中,所述数据库切换装置,还包括:
33.第二更改单元,用于当检测到所述主数据库节点上的第二状态响应组件上报主数据库节点宕机时,通过管理组件将主数据库节点更改到任一从数据库节点上。
34.在一实施例中,所述第一更改单元,包括:
35.第一确认子单元,用于通过管理组件接收更换指令,确认目标从数据库节点;
36.第一设置子单元,用于将主数据库节点设置为从数据库节点,将所述目标从数据库节点设置为当前主数据库节点。
37.在一实施例中,所述第二更改单元,包括:
38.第二确认子单元,用于通过管理组件接收更换指令,确认目标从数据库节点;
39.第二设置子单元,用于将主数据库节点设置为从数据库节点,将所述目标从数据库节点设置为当前主数据库节点。
40.相应的,本技术还提供一种计算机设备,包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现本技术实施例提供的任一种数据库切换方法中的步骤。
41.此外,本技术实施例还提供一种可读存储介质,其上存储有计算机程序,其中,所
述计算机程序被处理器执行时实现本技术实施例提供的任一种数据库切换方法中的步骤。
42.本技术实施例采用通过管理组件获取每一状态响应组件的响应信息,所述状态响应组件部署在每一数据库节点上,所述数据库节点包括主数据库节点和从数据库节点;记录所述从数据库节点上的第一状态响应组件上报主数据库节点宕机的响应信息,并根据所述响应信息统计上报主数据库节点宕机的从数据库节点的数量;根据从数据库节点的总数量确定预设阈值;当所述统计上报主数据库节点宕机的从数据库节点的数量不小于预设阈值时,通过管理组件将主数据库节点更改到任一从数据库节点上。以此,本技术通过根据上报主数据库节点宕机的从数据库节点的数量与预设阈值的关系进行半网故障判断,在上报主数据库节点宕机的从数据库节点的数量不小于预设阈值时,进行主数据库节点切换,能防止半网故障情况下的误切换操作,相对加固底层网络设施的方案,有效的解决了半网故障的问题,提高了数据库高可用的切换效率。
附图说明
43.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
44.图1是本发明实施例提供的数据库切换方法实施场景示意图;
45.图2是本发明实施例提供的数据库切换方法的流程示意图;
46.图3是本发明实施例提供的数据库切换方法的另一流程示意图;
47.图4是本发明实施例提供的一种跨机房容灾架构图;
48.图5是本发明实施例提供的数据库切换装置的结构示意图;
49.图6是本发明实施例提供的终端的结构示意图。
具体实施方式
50.下面将结合本技术实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
51.本技术实施例提供一种数据库切换方法、装置和存储介质。其中,该搜索服务漏洞的处理装置可以集成在计算机设备中,该计算机设备可以是服务器,也可以是终端等设备。
52.为了更好的说明本技术实施例,请参照以下名词进行参考:
53.其中,半同步复制是指主数据库节点事务执行完成以后,不立即返回给用户,而是等待日志发送给其他从数据库节点以后,再返回给用户。半同步复制虽然会增加事务的响应时间,但是可以提高数据的安全性和可靠性。
54.其中,跨机房容灾指的是机房之间具备跨机房切换的能力,得以实现机房级别的服务高可用。也即是整个机房即使出现宕机、断电、网线被挖断等严重异常情况,依然可以保证数据库服务的可用性。
55.其中,数据库高可用指的是数据库层的高可用设计,用以在数据库主机出现故障
时进行快速切换,减少停工时间,从而保持数据库服务的高度可用性。
56.请参阅图1,图1为本技术实施例所提供的数据库切换方法的实施环境场景示意图,包括:服务器丙、机房甲、机房乙、服务器a、服务器b以及交换机。每个机房中可以存放多个服务器,数据库存放在服务器上,每一个存放数据库的服务器也可以理解为一个数据库节点,机房甲和机房乙之间通过交换机进行通信连接,数据库之间的复制架构可以设置为半同步复制模式。服务器丙可以通过与机房甲、乙进行通信连接,并获取机房甲与机房乙之间的通信连接状态对机房进行设置。其中,服务器之间的通信,可以通过通信网络连接,该通信网络,包括无线网络以及有线网络,其中无线网络包括无线广域网、无线局域网、无线城域网、以及无线个人网中的一种或多种的组合。网络中包括路由器、网关、光纤等等网络实体,图中并未示意出。
57.其中,服务器丙可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、网络加速服务(content delivery network,cdn)、以及大数据和人工智能平台等基础云计算服务的云服务器。其中,服务器丙可以通过管理组件获取每一状态响应组件的响应信息,该状态响应组件部署在每一数据库节点上,该数据库节点包括主数据库节点和从数据库节点;记录该从数据库节点上的第一状态响应组件上报主数据库节点宕机的响应信息,并根据该响应信息统计上报主数据库节点宕机的从数据库节点的数量;根据从数据库节点的总数量确定预设阈值;当该统计上报主数据库节点宕机的从数据库节点的数量不小于预设阈值时,通过管理组件将主数据库节点更改到任一从数据库节点上。
58.其中,交换机是一种网络硬件,用于机房之间的网络通信。在实际应用中,一般都会在每个机房中部署两台交换机,避免交换机故障导致网络完全不可用的情况。在常态情况下的通信请求,会随机且均匀地分发到两台交换机中。在现有技术的所有跨机房方案中,都是假设交换机的高可用非常可靠,例如,请继续参阅图1,假设机房甲的交换机1发生了故障,则以后所有的通信请求,都会通过机房甲的交换机2到达机房乙。但是,在实际的应用中,当一个交换机发生故障之后,并不能保证服务器中所有的通信请求都成功切换到另一个交换机,此时便会导致服务器之间的通信连接时通时不通,这种现象称为半网故障。本技术实施例提供的一种数据库切换方法、装置和存储介质可以很好的应对这种半网故障现象,进一步提高机房间的跨机房容灾的能力,提高了实现数据库高可用的切换效率。
59.需要说明的是,图1所示的数据库切换方法的实施环境场景示意图仅仅是一个示例,本技术实施例描述的数据库切换方法的实施环境场景是为了更加清楚的说明本技术实施例的技术方案,并不构成对于本技术实施例提供的技术方案的限定。
60.以下分别进行详细说明。需说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。
61.实施例一、
62.本实施例中,将从数据库切换装置的角度进行描述,该数据库切换装置具体可以集成在服务器,比如数据库服务器等设备中,其中,该服务器可以是单台服务器,也可以是由多个服务器组成的服务器集群。
63.请参阅图2,图2是本技术实施例提供的数据库切换方法的流程示意图。该数据库
切换方法包括:
64.在步骤101中,通过管理组件获取每一状态响应组件的响应信息。
65.在一实施例中,服务器通过管理组件(manager)获取每一状态响应组件(agent)的响应信息,状态响应组件部署在每一数据库节点上,可以用以上报数据库节点的状态,数据库节点包括主数据库节点和从数据库节点。在一实施例中,可以将主数据库节点和从数据库节点设置在不同的机房中,数据库节点上的状态响应组件通过交换机将响应信息发送到管理组件中。
66.其中,管理组件是管理数据库节点的组件,可以用来实现数据库节点发生故障之后的切换与自动恢复。在一实施例中,可以将管理组件设置在集群中的每个机房中,也可以设置在部分机房中,例如,可以在三个机房中分别设置一个管理组件,其中,为了便于管理数据库节点,可以设置管理组件的数量为奇数。其中,管理组件是一个集群,管理组件之间可以进行信息交流,当一个管理组件能够发送相应的信息到达其他大多数管理组件时,则认为这个管理组件是正在提供服务的管理组件,执行管理数据库节点的任务;当正在对外提供服务的管理组件无法发送相应的信息到达其他大多数管理组件时,则认为正在提供服务的管理组件发生故障,此时,正在提供服务的管理组件将会发生切换,让其他正常的管理组件来执行对外提供服务的任务。在一实施例中,一般不会将管理组件设置在主数据库节点所在的机房,避免在主数据库节点所在机房的网络发生故障时,利用一个异常的管理组件去管理数据库节点,因此,可以将管理组件设置在从数据库节点所在的机房中。
67.在一实施例中,每一状态响应组件的响应信息可以是部署在主数据库节点上的状态响应组件上报主数据库节点状态的响应信息,也可以是部署在从数据库节点上的状态响应组件上报主数据库节点状态的响应信息等等。其中,每一状态响应组件上报到管理组件的响应信息,可以是每个数据库节点的心跳信息,例如,可以是正常或者宕机等等,也可以是从数据库节点上的状态响应组件上报主数据库节点宕机或者正常的响应信息等等。
68.在一实施例中,数据库节点的状态可以利用心跳机制获取,其中,心跳机制是指定时发送一个自定义的结构体,也即是一个心跳包,让对方知道自己还活着,以确保连接的有效性的机制。其中,通过心跳机制,可以设置数据库节点定时上报心跳,例如,可以设置为每一秒上报一次等等,部署在数据库节点上的状态响应组件获取对应的数据库节点的心跳,状态响应组件将获取到的心跳信息上报到管理组件,管理组件通过接收到的心跳信息获取数据库节点的状态。在一实施例中,可以通过设置部署在从数据库节点上的状态响应组件定时探测主数据库节点的状态,例如,部署在从数据库节点上的状态响应组件通过定时向主数据库节点发送心跳ping(packet internet groper),根据主数据库节点的回应来获取从数据库节点到主数据库节点的状态,例如,当部署在从数据库节点上的状态响应组件接收到主数据库节点的回应为错误或者在设定的时间段内没有接收到主数据库节点的回应时,部署在从数据库节点上的状态响应组件判断主数据库节点的状态为宕机。
69.在步骤102中,记录从数据库节点上的第一状态响应组件上报主数据库节点宕机的响应信息,并根据响应信息统计上报主数据库节点宕机的从数据库节点的数量。
70.在一实施例中,服务器通过管理组件获取的每一状态响应组件的响应信息,记录获取的所有响应信息中从数据库节点上的第一状态响应组件上报主数据库节点宕机的响应信息,并根据这些响应信息统计上报主数据库节点宕机的从数据库节点的数量。其中,当
从数据库节点上的第一状态响应组件无法与主数据库节点连接时,例如,从数据库节点上的状态响应组件可以通过定时向主数据库节点发送心跳ping,进而根据主数据库节点的回应来获取从数据库节点到主数据库节点的状态,例如,当第一状态响应组件接收到主数据库节点的回应为错误或者在设定的时间段内没有接收到主数据库节点的回应时,第一状态响应组件判断主数据库节点的状态为宕机,进而第一状态响应组件上报主数据库节点宕机。
71.在一实施例中,在管理组件获取每一状态响应组件的响应信息的过程中,无论从数据库节点是否能与主数据库节点进行连接,每一第一状态响应组件都会定时向管理组件上报主数据库节点的状态。在一实施例中,管理组件可以记录在一定的时间段内每一第一状态响应组件上报主数据库节点的响应信息,根据记录的响应信息获得在一定时间段内上报主数据库节点宕机的第一状态响应组件的数量,也即得到在一定时间段内上报主数据库节点宕机的从数据库节点的数量。
72.在一实施例中,管理组件可以记录在一定时间段内每一第一状态响应组件上报主数据库节点的响应信息,根据记录的响应信息获得在一定时间段内每一第一状态响应组件上报主数据库节点状态的总次数以及上报主数据库节点宕机的次数,从而得到每一第一状态响应组件在一定时间段内连接主数据库节点的失败率,进而统计失败率大于预设概率值的第一状态响应组件的数量,也即得到上报主数据库节点宕机并且失败率大于预设概率值的从数据库节点的数量。其中,概率,亦称“或然率”,它是反映随机事件出现的可能性大小,而随机事件是指在相同条件下,可能出现也可能不出现的事件。假设对某一随机事件进行了n次试验与观察,其中a事件出现了m次,即其出现的频率为m/n,也就是概率为m/n,其中,失败率就是第一状态响应组件上报主数据库节点宕机的概率,而预设概率值为判断从数据库节点到主数据库节点的链路是否发生半网故障的临界值,是为了避免从数据库节点发生半网故障而上报主数据库节点发生宕机,进而发生在业务可用的情况下切换主数据库节点的误操作而设定的。由于发生半网故障时,任何网络通信的失败率都是50%,在实际情况中要求失败率达到50%比较困难,因此该预设概率值可以比50%小一些,例如可以是40%,45%等等。
73.在步骤103中,根据从数据库节点的总数量确定预设阈值。
74.在一实施例中,可以根据从数据库节点的总数量的奇偶性计算得到预设阈值。其中,当从数据库节点的总数量为奇数时,可以将从数据库节点的总数量进行奇数扩充,得到第一结果,进而将第一结果除以预设数值,得到得到预设阈值,例如,当从数据库节点的总数量为奇数时,可以将从数据库节点的总数量进行加一,得到第一结果,进而将第一结果除以二,得到预设阈值;当从数据库节点的总数量为偶数时,可以将从数据库节点的总数量进行偶数扩充,得到第二结果,进而将第二结果除以预设数值,得到预设阈值,例如,当从数据库节点的总数量为偶数时,可以将从数据库节点的总数量进行加二,得到第二结果,进而将第二结果除以二,得到预设阈值。
75.在步骤104中,当统计上报主数据库节点宕机的从数据库节点的数量不小于预设阈值时,通过管理组件将主数据库节点更改到任一从数据库节点上。
76.在目前的跨机房容灾方案中,实现数据库高可用的切换方法是当主数据库节点上报主数据库节点宕机,或者当在预设时间内,主数据库节点没有心跳,并且存在有任何从数
据库节点上报主数据库节点宕机,则就认为主数据库节点宕机,发起主数据库节点的切换操作。其中,为了避免机房发生网络抖动导致的误操作,预设时间可以是15秒。这种现有的切换方法是针对网络全断的场景而设计的,即假设本机房的服务器到其他机房的服务器的连接为网络通或者网络不通的情形,而对于半网故障的场景,这种切换方法已经无法适用。为此,本技术实施例提供了一种数据库切换方法,通过管理组件获取的每一状态响应组件的响应信息,统计上报主数据库节点宕机的从数据库节点的数量,当统计上报主数据库节点宕机的从数据库节点的数量不小于预设阈值时,进行主数据库节点的切换,有效的解决了半网故障场景下的跨机房容灾问题。
77.在一实施例中,当该统计上报主数据库节点宕机的从数据库节点的数量不小于预设阈值时,触发主数据库节点更换指令,服务器通过管理组件接收更换指令,确认目标从数据库节点,将主数据库节点设置为从数据库节点,将该目标从数据库节点设置为当前主数据库节点,恢复数据库服务的可用性。
78.在一实施例中,可以在第一预设时间段内,获取每一状态响应组件的响应信息,并记录在第一预设时间段内从数据库节点上的第一状态响应组件上报主数据库节点宕机的响应信息,管理组件记录的第一状态响应组件上报主数据库节点宕机的响应信息,包括每一状态响应组件上报主数据库节点宕机的零次、一次或者多次的响应信息,进而根据记录的第一状态响应组件上报主数据库节点宕机的响应信息,统计在第一预设时间段内上报主数据库节点宕机的第一状态响应组件的数量,得到上报主数据库节点宕机的从数据库节点的数量,当该数量不小于预设阈值时,通过管理组件将主数据库节点更改到任一从数据库节点上。其中,第一预设时间段是由本领域技术人员根据经验得到的一个时间段,是为了避免机房发生网络抖动导致的误操作而设定的,由于机房发生网络抖动的时间一般低于10秒,因此,为了可以更好的避免这种误操作的发生,解决半网故障的问题,可以将第一预设时间段设置为大于10秒的一个时间值,例如,可以是15秒等等。
79.在一实施例中,也可以在第二预设时间段内,记录从数据库节点上的第一状态响应组件上报主数据库节点宕机的响应信息,根据记录的响应信息获得在一定时间段内每一第一状态响应组件上报主数据库节点状态的总次数以及上报主数据库节点宕机的次数,将每一第一状态响应组件上报主数据库节点宕机的次数除以每一第一状态响应组件上报主数据库节点状态的总次数,从而得到每一第一状态响应组件在一定时间段内连接主数据库节点的失败率,进而统计失败率大于预设概率值的第一状态响应组件的数量,得到上报主数据库节点宕机并且失败率大于预设概率值的从数据库节点的数量,当上报主数据库节点宕机并且失败率大于预设概率值的从数据库节点的数量不小于预设阈值时,通过管理组件将主数据库节点更改到任一从数据库节点上。其中,该第二预设时间段是由本领域技术人员根据经验得到的一个时间段,是为了避免机房发生网络抖动导致的误操作以及在半网故障场景中发生误操作而设定的,因此,该第二预设时间段大于第一预设时间段。
80.由上可知,本技术实施例采用通过管理组件获取每一状态响应组件的响应信息;记录该从数据库节点上的第一状态响应组件上报主数据库节点宕机的响应信息,并根据该响应信息统计上报主数据库节点宕机的从数据库节点的数量;根据从数据库节点的总数量确定预设阈值;当该统计上报主数据库节点宕机的从数据库节点的数量不小于预设阈值时,通过管理组件将主数据库节点更改到任一从数据库节点上。以此,通过统计上报主数据
库节点宕机的从数据库节点的数量,当统计上报主数据库节点宕机的从数据库节点的数量不小于预设阈值时,进行主数据库节点的切换,有效的解决了半网故障场景下的跨机房容灾问题,提高了数据库高可用的切换效率。
81.实施例二、
82.根据实施例一所描述的方法,以下将举例作进一步详细说明。
83.在本实施例中,将数据库切换方法以服务器为执行主体,以此来进行描述。
84.请参阅图3,图3为本技术实施例提供的数据库切换方法的另一流程示意图。该方法流程可以包括:
85.在步骤201中,服务器通过管理组件获取每一状态响应组件的响应信息。
86.在一实施例中,每一状态响应组件获取数据库节点的状态,将获取到的数据库节点的状态的响应信息上报给管理组件,服务器通过管理组件获取每一状态响应组件的响应信息,得到各个数据库节点的状态。其中,该响应信息可以是数据库节点上报自身心跳状态的响应信息,也可以是从数据库节点上报主数据库节点状态的响应信息。
87.在步骤202中,当在第二预设时间段内,服务器记录从数据库节点上的第一状态响应组件上报主数据库节点宕机的响应信息。
88.在一实施例中,服务器记录在第二预设时间段内从数据库节点上的第一状态响应组件上报主数据库节点宕机的响应信息,其中,该第二预设时间段大于第一预设时间段。该第二时间段包括了第一预设时间段的时间,用来避免机房发生网络暂时故障导致误操作的问题;若在第一预设时间段内从数据库节点都无法与主数据库节点连接,则判断此时为全网故障,为了排除故障是机房发生全网故障的可能,需要再等待第一预设时间段,再进行切换数据库的操作,因此该第二预设时间段可以是两倍的第一预设时间段,例如,可以是30秒等等。
89.在步骤203中,服务器获取每一从数据库节点上的第一状态响应组件上报主数据库节点状态的响应信息的总次数,并根据响应信息统计每一从数据库节点上的第一状态响应组件上报主数据库节点宕机的响应信息的第二数量。
90.在一实施例中,服务器获取每一第一状态响应组件上报主数据库节点状态的响应信息的总次数,其中,无论从数据库节点能否与主数据库节点进行连接,第一状态响应组件都会定时上报主数据库节点的状态,可以设置第一状态响应组件每次上报的时间间隔。根据获取到的每一第一状态响应组件上报主数据库节点状态的响应信息,统计每一从数据库节点上的第一状态响应组件上报主数据库节点宕机的响应信息的第二数量。
91.在步骤204中,服务器将该第二数量除以总次数,得到每一从数据库节点到主数据库节点的失败率,计算失败率大于预设概率值的从数据库节点的第三数量,该第三数量为上报主数据库节点宕机的从数据库节点的数量。
92.其中,服务器将第一状态响应组件上报主数据库节点宕机的响应信息的第二数量除以第一状态响应组件上报主数据库节点状态的响应信息的总次数,从而得到每一从数据库节点到主数据库节点的失败率,计算失败率大于预设概率值的从数据库节点的第三数量,而失败率大于预设概率值的从数据库节点的第三数量就是得到了上报主数据库节点宕机的从数据库节点的数量。其中,失败率大于预设概率值的从数据库节点可以判定为从数据库节点到主数据库节点的链路出现了半网故障,但是无法确定是主数据库节点发生半网
故障还是从数据库节点发生了半网故障。由于从数据库节点发生半网故障时并不影响主数据库节点与其他从数据库节点的通信,因此从数据库节点发生半网故障时不需要进行主数据库节点的切换;而主数据库节点发生半网故障时正常业务已经不可用,因此,为了确定主数据库节点是否发生半网故障,可以通过统计失败率大于预设概率值的从数据库节点的第三数量,当该第三数量满足所有从数据库节点数量的大多数的条件时,则可以确定为主数据库节点发生了半网故障。因此,通过失败率进行判定,可以更好的避免因为短暂失败的从数据库节点误上报主数据库节点状态而导致发生误操作,从而通过失败率进行判定,可以更准确的获取数据库节点的状态。其中,由于发生半网故障时,任何网络通信的失败率都是50%,综合考虑其他可能导致误差的因素,该预设概率值可以小于或者等于50%,例如,可以是40%等等。
93.在步骤205中,服务器根据从数据库节点的总数量确定总数量的奇偶性。
94.其中,服务器根据从数据库节点的总数量确定该总数量的奇偶性,该奇偶性即为判定该总数量为奇数或者偶数,例如1为奇数,2为偶数。
95.在步骤206中,当从数据库节点数量为奇数时,服务器将总数量进行奇数扩充,得到第一结果,将第一结果除以预设数值,得到预设阈值。
96.在一实施例中,当从数据库节点的数量为奇数时,服务器将总数量进行奇数扩充,例如,可以加一,得到第一结果,将第一结果除以预设数值,例如,该预设数值可以是二,从而得到预设阈值,当从数据库节点数量不小于预设阈值,从数据库节点数量就满足了大多数从数据库节点为认定主数据库节点发生宕机的条件。
97.在步骤207中,当从数据库节点数量为偶数时,服务器将总数量进行偶数扩充,得到第二结果,将第二结果除以预设数值,得到预设阈值。
98.在一实施例中,当从数据库节点数量为偶数时,服务器将总数量进行偶数扩充,例如,可以加二,得到第二结果,将第二结果除以预设数值,例如,该预设数值可以是二,从而得到预设阈值。当从数据库节点数量不小于预设阈值,从数据库节点数量就满足了大多数从数据库节点为认定主数据库节点发生宕机的条件。
99.在步骤208中,当统计上报主数据库节点宕机的从数据库节点的数量不小于预设阈值时,服务器通过管理组件将主数据库节点更改到任一从数据库节点上。
100.在一实施例中,当该统计上报主数据库节点宕机的从数据库节点的数量不小于预设阈值时,也就是大多数的从数据库节点到主数据库节点的失败率大于预设概率值,此时,管理组件判断主数据库节点发生半网故障,触发主数据库节点更换指令,服务器通过管理组件接收更换指令,确认目标从数据库节点,将主数据库节点设置为从数据库节点,将该目标从数据库节点设置为当前主数据库节点,恢复数据库服务的可用性。
101.目前,现有技术中的跨机房容灾方案都是针对网络全断的场景进行设计的,但是在考虑半网故障场景的情况下,这种现有的切换方法已经无法很好的保持数据库服务的高度可用性。在半网故障的场景下,交换机发生故障,任何网络通信的失败率都是50%,在这种情况下,现有的切换方法可能会发生数据库节点应该切换但是没有发生切换的情况,也可能发生不应该切换却发生切换的情况。例如,请参阅图4,图4为一种经典的一主二从的跨机房容灾架构图,其中,主数据库节点设置在机房b中,正在提供服务的管理组件设置在机房a中,第一状态响应组件与从数据库节点部署在一起,第二状态响应组件与主数据库节点
部署在一起,应当说明的是,每个机房中设置有两个交换机,在图中并没有表示出来,机房之间通过交换机进行通信连接。其中,本技术实施例提供的一种数据库切换方法适用于具有主从逻辑关系的集群,在图4中的一主二从架构只是本技术提供的数据库切换方法适用范围中的一个举例,对于其他的一主三从、一主四从等等的架构也同样适用于本技术实施例提供的数据库切换方法。
102.请继续参阅图4,假设主数据库节点所在的机房b出现半网故障,即机房b中有一个交换机发生故障而不可用,假设其他两个机房中的从数据库节点无法与主数据库节点连接,上报主数据库节点宕机,而主数据库节点到管理组件的链路是通的,实际上此时的业务已经不可用,但是主数据库节点上的第二状态响应组件上报主数据库节点有心跳,因此,对于现有的切换方法不会发起数据库节点的切换,这就出现了半网故障场景下该发起数据库节点的切换却没有切换的第一种情况。
103.请继续参阅图4,假设机房a发生半网故障,主数据库节点到管理组件的链路不通,因此管理组件将会判断主数据库节点没有心跳,机房a中的从数据库节点上的第一状态响应组件上报主数据库节点宕机。在现有的切换算法中,主数据库节点没有心跳,并且有从数据库节点上报主数据库节点宕机,则会发起主数据库节点的切换。但是,由于机房b与机房c之前的通信连接是正常的,对业务没有影响,并不需要切换主数据库节点。因此,这就出现了半网故障场景下不必发起数据库节点的切换却发生切换的第二种情况。
104.本技术实施例提供的数据库切换方法,考虑了半网故障的场景,解决了半网故障导致的数据库该切换未切换以及数据库不必切换而发生切换的问题。例如,针对上述的该发起数据库节点的切换却没有切换的第一种情况,请继续参阅图4,假设主数据库节点所在的机房b出现半网故障,假设其他两个机房中的从数据库节点无法与主数据库节点连接,上报主数据库节点宕机,当使用本技术实施例提供的数据库切换方法时,由于在半网故障场景下,任何网络通信的失败率都是50%,则在第二预设时间段内,且大多数从数据库节点会上报主数据库节点宕机,服务器通过管理组件正常发起数据库切换,解决了现有的切换方法在半网故障场景下应该切换数据库而未切换的问题。
105.例如,针对上述的不必发起数据库节点的切换却发生切换的第二种情况,请继续参阅图4,假设机房a出现半网故障,主数据库节点到管理组件的链路不通,因此管理组件将会判断主数据库节点没有心跳,机房a中的从数据库节点上的第一状态响应组件上报主数据库节点宕机,由于只有机房a中的第一状态响应组件上报数据库节点宕机,不满足大多数从数据库节点上报主数据库节点宕机的条件,因此,此时不发起数据库切换,解决了现有的切换方法在半网故障场景下不必切换数据库而发生切换的问题。
106.在一实施例中,当检测到主数据库节点上的第二状态响应组件上报主数据库节点宕机时,则此时主数据库节点发生故障,数据库业务已经不可用,需要进行数据库切换以实现数据库的高可用,此时,触发主数据库节点更换指令,服务器通过管理组件接收更换指令,确认目标从数据库节点,将主数据库节点设置为从数据库节点,将目标从数据库节点设置为当前主数据库节点,恢复数据库服务的可用性。
107.由上可知,本技术实施例利用服务器通过管理组件获取每一状态响应组件的响应信息;当在第二预设时间段内,服务器记录从数据库节点上的第一状态响应组件上报主数据库节点宕机的响应信息;服务器获取每一从数据库节点上的第一状态响应组件上报主数
据库节点状态的响应信息的总次数,并根据该响应信息统计每一从数据库节点上的第一状态响应组件上报主数据库节点宕机的响应信息的第二数量;服务器将第二数量除以该总次数,得到每一从数据库节点到主数据库节点的失败率,计算失败率大于预设概率值的从数据库节点的第三数量,该第三数量为上报主数据库节点宕机的从数据库节点的数量;服务器根据从数据库节点的总数量确定总数量的奇偶性;当从数据库节点数量为奇数时,服务器将总数量进行奇数扩充,得到第一结果,将第一结果除以预设数值,得到预设阈值;当从数据库节点数量为偶数时,服务器将总数量进行偶数扩充,得到第二结果,将第二结果除以预设数值,得到预设阈值;当统计上报主数据库节点宕机的从数据库节点的数量不小于预设阈值时,服务器通过管理组件将主数据库节点更改到任一从数据库节点上。以此,通过管理组件获取的每一状态响应组件的响应信息,根据获取的响应信息统计上报主数据库节点宕机的从数据库节点的数量,当从数据库节点到主数据库节点的失败率大于预设概率值的从数据库节点的数量不小于预设阈值时,进行主数据库节点的切换,解决了半网故障的情况下服务可能不可用的问题,提高了数据库高可用的切换效率。
108.实施例三、
109.为便于更好的实施本技术实施例提供的数据库切换方法,本技术实施例还提供一种基于上述数据库切换方法的装置,该装置具体可以集成在服务器中。其中名词的含义与上述数据库切换方法中相同,具体实现细节可以参考上述实施例中的说明。
110.请参阅图5,图5为本技术实施例提供的数据库切换装置的结构示意图,其中该数据库切换装置可以包括获取单元301、记录单元302、确定单元303以及第一更改单元304。
111.获取单元301,用于通过管理组件获取每一状态响应组件的响应信息,状态响应组件部署在每一数据库节点上,数据库节点包括主数据库节点和从数据库节点;
112.记录单元302,用于记录从数据库节点上的第一状态响应组件上报主数据库节点宕机的响应信息,并根据该响应信息统计上报主数据库节点宕机的从数据库节点的数量;
113.确定单元303,用于根据从数据库节点的总数量确定预设阈值;
114.第一更改单元304,用于当统计上报主数据库节点宕机的从数据库节点的数量不小于预设阈值时,通过管理组件将主数据库节点更改到任一从数据库节点上。
115.在一实施例中,记录单元302,包括:
116.第一记录子单元,用于当在第一预设时间段内,记录从数据库节点上的第一状态响应组件上报主数据库节点宕机的响应信息;
117.第一统计子单元,用于并根据该响应信息统计第一状态响应组件上报主数据库节点宕机的从数据库节点的第一数量,该第一数量为上报主数据库节点宕机的从数据库节点的数量。
118.在一实施例中,记录单元302,包括:
119.第二记录子单元,用于当在第二预设时间段内,记录从数据库节点上的第一状态响应组件上报主数据库节点宕机的响应信息;
120.第二统计子单元,用于获取每一从数据库节点上的第一状态响应组件上报主数据库节点状态的响应信息的总次数,统计每一从数据库节点上的第一状态响应组件上报主数据库节点宕机的响应信息的第二数量;
121.第一计算子单元,用于将第二数量除以该总次数,得到每一从数据库节点到主数
据库节点的失败率;
122.第二计算子单元,用于计算失败率大于预设概率值的从数据库节点的第三数量,该第三数量为上报主数据库节点宕机的从数据库节点的数量。
123.在一实施例中,确定单元303,包括:
124.第一确定子单元,用于根据该从数据库节点的总数量确定该总数量的奇偶性;
125.第二确定子单元,用于根据奇偶性计算得到预设阈值。
126.在一实施例中,第二确定子单元,包括:
127.当从数据库节点数量为奇数时,将总数量进行奇数扩充,得到第一结果;
128.将第一结果除以预设数值,得到预设阈值。
129.在一实施例中,第二确定子单元,包括:
130.当从数据库节点数量为偶数时,将总数量进行偶数扩充,得到第二结果;
131.将第二结果除以预设数值,得到预设阈值。
132.在一实施例中,数据库切换装置,还包括:
133.第二更改单元,用于当检测到该主数据库节点上的第二状态响应组件上报主数据库节点宕机时,通过管理组件将主数据库节点更改到任一从数据库节点上。
134.在一实施例中,第一更改单元304,包括:
135.第一确认子单元,用于通过管理组件接收更换指令,确认目标从数据库节点;
136.第一设置子单元,用于将主数据库节点设置为从数据库节点,将目标从数据库节点设置为当前主数据库节点。
137.在一实施例中,第二更改单元,包括:
138.第二确认子单元,用于通过管理组件接收更换指令,确认目标从数据库节点;
139.第二设置子单元,用于将主数据库节点设置为从数据库节点,将目标从数据库节点设置为当前主数据库节点。
140.以上各个单元的具体实施可参见前面的实施例,在此不再赘述。
141.由上可知,本技术实施例采用获取单元301通过管理组件获取每一状态响应组件的响应信息,状态响应组件部署在每一数据库节点上,数据库节点包括主数据库节点和从数据库节点;记录单元302记录从数据库节点上的第一状态响应组件上报主数据库节点宕机的响应信息,并根据该响应信息统计上报主数据库节点宕机的从数据库节点的数量;确定单元303根据从数据库节点的总数量确定预设阈值;第一更改单元304当统计上报主数据库节点宕机的从数据库节点的数量不小于预设阈值时,通过管理组件将主数据库节点更改到任一从数据库节点上。以此,通过管理组件获取的每一状态响应组件的响应信息,统计上报主数据库节点宕机的从数据库节点的数量,当统计上报主数据库节点宕机的从数据库节点的数量不小于预设阈值时,进行主数据库节点的切换,解决了半网故障的情况下数据库服务不可用的问题,提高了数据库高可用的切换效率。
142.实施例四、
143.本技术实施例还提供一种计算机设备,该计算机设备可以是一种服务器,如图6所示,其示出了本发明实施例所涉及的计算机设备的结构示意图,具体来讲:
144.该计算机设备可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、电源403和输入单元404等部件。本领域技术人员可以
理解,图6中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
145.处理器401是该计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行计算机设备的各种功能和处理数据,从而对计算机设备进行整体监控。可选的,处理器401可包括一个或多个处理核心;优选的,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。
146.存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。
147.计算机设备还包括给各个部件供电的电源403,优选的,电源403可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源403还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
148.该计算机设备还可包括输入单元404,该输入单元404可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
149.尽管未示出,计算机设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,计算机设备中的处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能,如下:
150.通过管理组件获取每一状态响应组件的响应信息,状态响应组件部署在每一数据库节点上,数据库节点包括主数据库节点和从数据库节点;记录从数据库节点上的第一状态响应组件上报主数据库节点宕机的响应信息,并根据该响应信息统计上报主数据库节点宕机的从数据库节点的数量;根据从数据库节点的总数量确定预设阈值;当统计上报主数据库节点宕机的从数据库节点的数量不小于预设阈值时,通过管理组件将主数据库节点更改到任一从数据库节点上。
151.实施例五、
152.本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
153.为此,本发明实施例提供一种存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本发明实施例所提供的任一种数据库切换方法中的步骤。例如,该指令
可以执行如下步骤:
154.通过管理组件获取每一状态响应组件的响应信息,状态响应组件部署在每一数据库节点上,数据库节点包括主数据库节点和从数据库节点;记录从数据库节点上的第一状态响应组件上报主数据库节点宕机的响应信息,并根据该响应信息统计上报主数据库节点宕机的从数据库节点的数量;根据从数据库节点的总数量确定预设阈值;当统计上报主数据库节点宕机的从数据库节点的数量不小于预设阈值时,通过管理组件将主数据库节点更改到任一从数据库节点上。
155.根据本技术的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例提供的各种可选实现方式中提供的方法。
156.以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
157.其中,该存储介质可以包括:只读存储器(rom,read only memory)、随机存取记忆体(ram,random access memory)、磁盘或光盘等。
158.由于该存储介质中所存储的指令,可以执行本发明实施例所提供的任一种数据库切换方法中的步骤,因此,可以实现本发明实施例所提供的任一种数据库切换方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
159.以上对本发明实施例所提供的一种数据库切换方法、装置和系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上该,本说明书内容不应理解为对本发明的限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献