本技术涉及数据库存储,尤其涉及一种数据库集群脑裂预防方法、装置、电子设备及存储介质。
背景技术:
1、数据库集群脑裂故障是指在数据库集群系统中由于网络分区或其他原因导致集群中的节点无法正确通信,使得集群分裂成多个独立的子集群,而每个子集群都认为自己是整个集群的唯一领导者,从而引发数据不一致和冲突的问题。
2、目前,数据库集群脑裂故障的预防主要通过第三方集群管理工具来实现,当第三方集群管理工具出现故障时,可能会成为数据库集群系统中的单点故障,影响整个数据库集群系统,进而影响数据库集群系统的稳定性。
3、因此,如何提高数据库集群系统的稳定性,成为了亟待解决的技术问题。
技术实现思路
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、本技术提出的数据库集群脑裂预防方法、装置、电子设备及存储介质,其通过获取共享存储信息;其中,共享存储信息用于反映数据库集群各个节点对应的节点特征;基于共享存储信息将数据库集群进行集群划分,得到集群分区信息;其中,集群分区信息用于表征各个集群分区的属性信息;基于集群分区信息对原始主节点所在的集群分区进行解析处理,得到主节点分区信息;基于集群分区信息和主节点分区信息进行脑裂预防。数据库集群自身能够处理网络分区引起的脑裂故障,无需依赖第三方集群管理工具,减少系统复杂度的同时,可以降低与第三方集群管理工具相关的风险,提高数据库集群系统的稳定性。