CN117992501A - 数据库集群脑裂预防方法、装置、电子设备及存储介质 - Google Patents

数据库集群脑裂预防方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN117992501A
CN117992501A CN202410398007.7A CN202410398007A CN117992501A CN 117992501 A CN117992501 A CN 117992501A CN 202410398007 A CN202410398007 A CN 202410398007A CN 117992501 A CN117992501 A CN 117992501A
Authority
CN
China
Prior art keywords
information
node
cluster
partition
shared storage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202410398007.7A
Other languages
English (en)
Other versions
CN117992501B (zh
Inventor
佘兴彬
吴荣政
姚军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Primitive Data Beijing Information Technology Co ltd
Original Assignee
Primitive Data Beijing Information Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Primitive Data Beijing Information Technology Co ltd filed Critical Primitive Data Beijing Information Technology Co ltd
Priority to CN202410398007.7A priority Critical patent/CN117992501B/zh
Publication of CN117992501A publication Critical patent/CN117992501A/zh
Application granted granted Critical
Publication of CN117992501B publication Critical patent/CN117992501B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例提供了一种数据库集群脑裂预防方法、装置、电子设备及存储介质,属于数据库存储技术领域。该方法包括:获取共享存储信息;其中,共享存储信息用于反映数据库集群各个节点对应的节点特征;基于共享存储信息将数据库集群进行集群划分,得到集群分区信息;其中,集群分区信息用于表征各个集群分区的属性信息;基于集群分区信息对原始主节点所在的集群分区进行解析处理,得到主节点分区信息;基于集群分区信息和主节点分区信息进行脑裂预防。本申请实施例的数据库集群自身能够处理网络分区引起的脑裂故障,无需依赖第三方集群管理工具,减少系统复杂度的同时,可以降低与第三方集群管理工具相关的风险,提高数据库集群系统的稳定性。

Description

数据库集群脑裂预防方法、装置、电子设备及存储介质
技术领域
本申请涉及数据库存储技术领域,尤其涉及一种数据库集群脑裂预防方法、装置、电子设备及存储介质。
背景技术
数据库集群脑裂故障是指在数据库集群系统中由于网络分区或其他原因导致集群中的节点无法正确通信,使得集群分裂成多个独立的子集群,而每个子集群都认为自己是整个集群的唯一领导者,从而引发数据不一致和冲突的问题。
目前,数据库集群脑裂故障的预防主要通过第三方集群管理工具来实现,当第三方集群管理工具出现故障时,可能会成为数据库集群系统中的单点故障,影响整个数据库集群系统,进而影响数据库集群系统的稳定性。
因此,如何提高数据库集群系统的稳定性,成为了亟待解决的技术问题。
发明内容
本申请实施例的主要目的在于提出一种数据库集群脑裂预防方法、装置、电子设备及存储介质,旨在提高数据库集群系统的稳定性。
为实现上述目的,本申请实施例的第一方面提出了一种数据库集群脑裂预防方法,数据库集群包含多个节点,其中一个为原始主节点,其余节点为备节点,所述原始主节点用于管理所述备节点,所述方法包括:
获取共享存储信息;其中,所述共享存储信息用于反映所述数据库集群各个节点对应的节点特征;
基于所述共享存储信息将所述数据库集群进行集群划分,得到集群分区信息;其中,所述集群分区信息用于表征各个集群分区的属性信息;
基于所述集群分区信息对所述原始主节点所在的所述集群分区进行解析处理,得到主节点分区信息;
基于所述集群分区信息和所述主节点分区信息进行脑裂预防。
在一些实施例,所述共享存储信息包括节点在线状态信息;所述基于所述共享存储信息将所述数据库集群进行集群划分,得到集群分区信息,包括:
获取所述节点在线状态信息;
基于所述节点在线状态信息将所述数据库集群中的多个所述节点进行集群分类,得到所述集群分区信息。
在一些实施例,所述集群分区信息用于表征两个所述集群分区分别包含的节点数量,所述共享存储信息还包括共享存储写权限信息,所述共享存储写权限信息包括主节点标识信息,所述主节点标识信息用于表征对所述共享存储信息具备写权限的节点的标识信息;所述基于所述集群分区信息和所述主节点分区信息进行脑裂预防,包括:
若所述主节点分区信息表征所述原始主节点位于少数派分区,则将所述原始主节点降级为备节点,并将所述共享存储写权限信息的内容进行清除;其中,所述少数派分区为两个所述集群分区中所述节点数量较少的所述集群分区;
位于多数派分区的所有所述备节点进行主节点选举,确定所述多数派分区的目标主节点;其中,所述多数派分区为两个所述集群分区中所述节点数量较多的所述集群分区。
在一些实施例,述位于多数派分区的所有所述备节点进行主节点选举,确定所述多数派分区的目标主节点,包括:
针对每一所述备节点,对所述共享存储写权限信息进行更新;
对所述共享存储写权限信息进行数据完整性校验,得到校验结果;
当所述校验结果反映所述共享存储写权限信息通过完整性校验,将所述共享存储写权限信息中记录的主节点标识信息与所述备节点的标识信息进行对比,得到节点信息对比结果;
基于所述节点信息对比结果,从多个所述备节点中确定所述目标主节点。
在一些实施例,所述共享存储写权限信息还包括原始时间戳和原始校验码;所述对所述共享存储写权限信息进行更新,包括:
对所述共享存储写权限信息进行记录信息判断,得到记录信息判断结果;
若所述记录信息判断结果表征所述共享存储写权限信息中没有记录信息,基于所述备节点的标识信息对所述主节点标识信息进行更新,并获取信息更新时间;
将所述备节点的标识信息和所述信息更新时间进行合并,得到更新校验数据包;
对所述更新校验数据包进行校验和运算,得到更新校验码;
基于所述信息更新时间对所述原始时间戳进行更新、基于所述更新校验码对所述原始校验码进行更新,以更新所述共享存储写权限信息。
在一些实施例,所述对所述共享存储写权限信息进行数据完整性校验,得到校验结果,包括:
将所述主节点标识信息和所述原始时间戳进行合并,得到目标校验数据包;
对所述目标校验数据包进行校验和运算,得到目标校验码;
将所述原始校验码和所述目标校验码进行对比,得到所述校验结果。
在一些实施例,所述基于所述节点信息对比结果,从多个所述备节点中确定所述目标主节点,包括:
若所述节点信息对比结果表征所述共享存储写权限信息中记录的主节点标识信息与所述备节点的标识信息相同,对所述备节点执行节点晋升流程;
其中,所述节点晋升流程包括:以所述备节点的标识信息为基准,对所述共享存储写权限信息中记录的主节点标识信息进行对照确认,得到对照确认结果;若所述对照确认结果反映所述共享存储写权限信息中记录的主节点标识信息与所述备节点的标识信息相同,将所述备节点晋升为所述目标主节点。
为实现上述目的,本申请实施例的第二方面提出了一种数据库集群脑裂预防装置,所述装置包括:
信息获取模块,用于获取共享存储信息;其中,所述共享存储信息用于反映数据库集群各个节点对应的节点特征;
集群划分模块,用于基于所述共享存储信息将所述数据库集群进行集群划分,得到集群分区信息;其中,所述集群分区信息用于表征各个集群分区的属性信息;
解析处理模块,用于基于所述集群分区信息对原始主节点所在的所述集群分区进行解析处理,得到主节点分区信息;
脑裂预防模块,用于基于所述集群分区信息和所述主节点分区信息进行脑裂预防。
为实现上述目的,本申请实施例的第三方面提出了一种电子设备,所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的方法。
为实现上述目的,本申请实施例的第四方面提出了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的方法。
本申请提出的数据库集群脑裂预防方法、装置、电子设备及存储介质,其通过获取共享存储信息;其中,共享存储信息用于反映数据库集群各个节点对应的节点特征;基于共享存储信息将数据库集群进行集群划分,得到集群分区信息;其中,集群分区信息用于表征各个集群分区的属性信息;基于集群分区信息对原始主节点所在的集群分区进行解析处理,得到主节点分区信息;基于集群分区信息和主节点分区信息进行脑裂预防。数据库集群自身能够处理网络分区引起的脑裂故障,无需依赖第三方集群管理工具,减少系统复杂度的同时,可以降低与第三方集群管理工具相关的风险,提高数据库集群系统的稳定性。
附图说明
图1是本申请实施例提供的数据库集群脑裂预防方法的流程图;
图2是图1中的步骤S102的流程图;
图3是图1中的步骤S104的流程图;
图4是图3中的步骤S302的流程图;
图5是图4中的步骤S401的流程图;
图6是图4中的步骤S402的流程图;
图7是图4中的步骤S404的流程图;
图8是本申请实施例提供的数据库集群脑裂预防装置的结构示意图;
图9是本申请实施例提供的电子设备的硬件结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
需要说明的是,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
首先,对本申请中涉及的若干名词进行解析:
数据库集群,数据库集群是指将多个数据库服务器连接在一起,以共同处理数据请求和存储大量数据。这些服务器通过协作来提高性能、可靠性和可用性。数据库集群通常包括主服务器和若干个从服务器,分担工作负载并保持数据的同步更新。这种架构可以提供横向扩展性,使得系统能够处理更多的请求和数据。
数据库集群脑裂,数据库集群脑裂故障是指在数据库集群系统中由于网络分区或其他原因导致集群中的节点无法正确通信,使得集群分裂成多个独立的子集群,而每个子集群都认为自己是整个集群的唯一领导者,从而引发数据不一致和冲突的问题。这种情况可能会导致不同节点上的数据产生冲突,严重时甚至可能导致系统故障和数据损坏。
传统数据库通常通过数据库集群的部署方式向上层应用提供服务,一个主备数据库集群由一个主节点和多个备节点组成,每个节点通过本地磁盘存储数据。集群中的主节点能够处理读写请求,而备节点只能处理读请求。对上层应用来说,数据库集群是透明的,上层应用无需感知集群内部的情况。正常运行的数据库集群有且只有唯一主节点,所有的数据写入、更新等请求都由主节点负责处理,备节点则只处理数据查询请求。当集群中的主节点发生故障时,集群中的备节点快速拉升为主节点并继续向上层应用提供正常的数据读写服务。
数据库集群中的各节点通过节点间心跳来感知其他节点的在线状态,当发生网络分区时,主备节点间的心跳异常,备节点认为主节点发生了故障,会尝试升为主节点,如果此时原来的主节点仍在正常工作,则数据库集群中存在多个主节点,数据库集群发生脑裂故障,可能会导致数据的不一致。
目前,数据库集群脑裂故障的预防主要通过第三方集群管理工具来实现,例如集群管理工具CM(Cluster Manager),依赖第三方集群管理工具来确保数据库集群中只有唯一主节点。
由于需要引入额外的第三方集群管理工具以及部署第三方集群管理工具所需的硬件设备,增加用户的使用和运维的成本。
并且当第三方集群管理工具出现故障时,可能会成为数据库集群系统中的单点故障,影响整个数据库集群系统,进而影响数据库集群系统的稳定性。
基于此,本申请实施例提供了一种数据库集群脑裂预防方法、装置、电子设备及存储介质,旨在提高数据库集群系统的稳定性。
本申请实施例提供的数据库集群脑裂预防方法、装置、电子设备及存储介质,具体通过如下实施例进行说明,首先描述本申请实施例中的数据库集群脑裂预防方法。
本申请实施例提供的数据库集群脑裂预防方法,涉及数据库存储技术领域。本申请实施例提供的数据库集群脑裂预防方法可应用于终端中,也可应用于服务器端中,还可以是运行于终端或服务器端中的软件。在一些实施例中,终端可以是智能手机、平板电脑、笔记本电脑、台式计算机等;服务器端可以配置成独立的物理服务器,也可以配置成多个物理服务器构成的服务器集群或者分布式系统,还可以配置成提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN以及大数据和人工智能平台等基础云计算服务的云服务器;软件可以是实现数据库集群脑裂预防方法的应用等,但并不局限于以上形式。
本申请可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
在一些实施例中,数据库集群包含多个节点,其中一个为原始主节点,其余节点为备节点,原始主节点用于管理备节点,原始主节点能够处理读写请求,而备节点只能处理读请求。
图1是本申请实施例提供的数据库集群脑裂预防方法的一个可选的流程图,图1中的方法可以包括但不限于包括步骤S101至步骤S104。
步骤S101,获取共享存储信息;其中,共享存储信息用于反映数据库集群各个节点对应的节点特征;
步骤S102,基于共享存储信息将数据库集群进行集群划分,得到集群分区信息;其中,集群分区信息用于表征各个集群分区的属性信息;
步骤S103,基于集群分区信息对原始主节点所在的集群分区进行解析处理,得到主节点分区信息;
步骤S104,基于集群分区信息和主节点分区信息进行脑裂预防。
本申请实施例所示意的步骤S101至步骤S104,通过获取共享存储信息;其中,共享存储信息用于反映数据库集群各个节点对应的节点特征;基于共享存储信息将数据库集群进行集群划分,得到集群分区信息;其中,集群分区信息用于表征各个集群分区的属性信息;基于集群分区信息对原始主节点所在的集群分区进行解析处理,得到主节点分区信息;基于集群分区信息和主节点分区信息进行脑裂预防。数据库集群自身能够处理网络分区引起的脑裂故障,无需依赖第三方集群管理工具,减少系统复杂度的同时,可以降低与第三方集群管理工具相关的风险,提高数据库集群系统的稳定性。
在一个实施例中,共享存储信息为存储在数据库存储设备的共享数据,数据库集群中的节点和存储设备之间通过高速网络连接,并且所有节点共享一份共享存储信息,原始主节点拥有对共享存储信息的读/写权限,备节点则只拥有读权限。
需要说明的是,共享存储信息用于反映数据库集群各个节点对应的节点特征,例如:节点对共享存储信息的权限,节点的在线状态等,不限于此。
在一些实施例中,共享存储信息包括节点在线状态信息。
请参阅图2,在一些实施例中,步骤S102可以包括但不限于包括步骤S201至步骤S202:
步骤S201,获取节点在线状态信息;
步骤S202,基于节点在线状态信息将数据库集群中的多个节点进行集群分类,得到集群分区信息。
本申请实施例所示意的步骤S201至步骤S202,通过基于节点在线状态信息将数据库集群中的多个节点进行集群分类,得到集群分区信息,能够快速、及时将集群进行划分,避免不同部分的集群节点可能会相互竞争,导致数据写入冲突和一致性问题。
需要说明的是,节点在线状态信息用于表征数据库集群中所有节点的在线状态。
在一些实施例的步骤S201中,节点在线状态信息具体以表格的形式记录。数据库集群中的所有节点,两两节点之间进行节点间心跳检测,以确定双方节点的在线状态,并将感知到的其他节点的在线信息写入到共享存储的指定位置。每个节点写入共享存储的信息包括集群中所有节点的在线状态和心跳检测时间戳,从而得到节点在线状态位图。例如,参见表1,表1为节点在线状态信息示意情况,其中,T表示节点为在线状态,F表示节点为离线状态。
表1 节点在线状态信息示意情况
需要说明的是,数据库集群中的所有节点按照预设的时间间隔会定时进行心跳检测,以更新节点在线状态信息。
在一些实施例的步骤S202中,集群分区信息用于表征各个集群分区的属性信息,具体而言,可以为集群分区的节点数量。
需要说明的是,在数据库集群发生一次分区时,基于节点在线状态信息进行集群划分,可以分为两个集群分区。
如表1示例,当数据库集群发生分区时,节点1和节点2能够通过节点间心跳感知到对方在线,而无法通过节点间心跳感知节点3在线;节点3则无法感知到节点1和节点2在线。综合节点在线状态信息可以得知节点1和节点2处于同一个集群分区,节点3则处于另一个集群分区,即一个集群分区的节点数量为2,另一个集群分区的节点数量为1。
在一些实施例的步骤S103中,基于集群分区信息判断原始主节点所在的集群分区,得到主节点分区信息。其中,主节点分区信息用于表征原始主节点位于哪个分区。
在一些实施例中,集群分区信息用于表征两个集群分区分别包含的节点数量;
共享存储信息还包括共享存储写权限信息,共享存储写权限信息包括主节点标识信息,主节点标识信息用于表征对共享存储信息具备写权限的节点的标识信息;
需要说明的是,数据库集群初始化时,所有节点均是备节点,各节点通过抢占共享存储写权限信息的写权限,抢占到写权限的节点成为集群主节点,其他节点则维持备节点的角色。因此,在数据库集群中,主节点标识信息为原始主节点的标识信息。若数据库集群发生分区后,主节点标识信息为多数派分区选举出的目标主节点的标识信息。
另外,标识信息通常是节点的唯一标识符或者节点ID。这个标识符可以是一个数字、字符串或者其他形式的唯一标识,用来区分集群中的不同节点。在大多数情况下,节点的标识信息是由数据库集群管理系统自动分配和维护的。
在一些实施例中,所述共享存储信息还包括:数据库用户信息,所述数据库用户信息用于存放数据库的用户数据。
共享存储写权限信息所指的写权限指的就是对数据库用户信息进行写操作的权限。
而共享存储写权限信息中的节点在线状态信息、共享存储写权限信息为所有节点均可读写。
需要说明的是,在数据库集群正常运行时(没有发生分区),共享存储写权限信息只有主节点才能写成功,备节点因为检测到共享存储写权限信息中记录的节点的标识信息不是自己、且原始时间戳正常更新,备节点并不会向共享存储写权限信息写数据。
请参阅图3,在一些实施例中,步骤S104可以包括但不限于包括步骤S301至步骤S302:
步骤S301,若主节点分区信息表征原始主节点位于少数派分区,则将原始主节点降级为备节点,并将共享存储写权限信息的内容进行清除;其中,少数派分区为两个集群分区中节点数量较少的集群分区;
步骤S302,位于多数派分区的所有备节点进行主节点选举,确定多数派分区的目标主节点;其中,多数派分区为两个集群分区中节点数量较多的集群分区。
本申请实施例所示意的步骤S301至步骤S302,通过判断原始主节点是否位于少数派分区,若原始主节点位于少数派分区,则将原始主节点降级为备节点,并将共享存储写权限信息的内容进行清除,然后暂停少数派分区对外提供服务,多数派分区的所有备节点进行主节点选举,确定多数派分区的目标主节点,以对外提供服务,从而确保了数据库集群的高可用能力、数据库系统的稳定性和数据的完整性。
需要说明的是,在数据库集群发生分区后,会形成两个集群分区,其中,集群分区中的节点数量大于数据库集群节点总数一半的分区称为多数派分区,也就是两个集群分区中节点数量较多的集群分区;集群分区中的节点数量小于数据库集群节点总数一半的分区称为少数派分区,也就是两个集群分区中节点数量较少的集群分区。而为了最大程度上确保数据库集群的高可用能力、数据库系统的稳定性和数据的完整性,网络分区故障发生时需要从多数派分区中选出新的主节点并对外提供服务;而少数派分区会暂停对外提供服务,直至脑裂故障解决之后再重新加入数据集群中。
因此,若主节点分区信息表征原始主节点位于少数派分区,则将原始主节点降级为备节点,并将共享存储写权限信息的内容进行清除;表明主节点位置已经空出,需要从多数派分区中选举出新的主节点。
请参阅图4,在一些实施例中,步骤S302可以包括但不限于包括步骤S401至步骤S404:
步骤S401,针对每一备节点,对共享存储写权限信息进行更新;
步骤S402,对共享存储写权限信息进行数据完整性校验,得到校验结果;
步骤S403,当校验结果反映共享存储写权限信息通过完整性校验,将共享存储写权限信息中记录的主节点标识信息与备节点的标识信息进行对比,得到节点信息对比结果;
步骤S404,基于节点信息对比结果,从多个备节点中确定目标主节点。
本申请实施例所示意的步骤S401至步骤S404,多数派分区中的每一备节点都可以尝试往共享存储写权限信息中写入自己的信息,以抢占主节点的位置。然后对共享存储写权限信息进行完整性校验、多次确认,以最终确定目标主节点。
需要说明的是,数派分区中的每一备节点都可以尝试往共享存储写权限信息中写入自己的信息,但是只有第一个往共享存储写权限信息中写入自己的信息的节点才有可能成为主节点。但共享存储写权限信息中已经存在记录时,备节点则不对共享存储写权限信息写入自己的信息。
在一些实施例中,共享存储写权限信息还包括原始时间戳和原始校验码,即:共享存储信息包括:
节点在线状态信息,用于表征数据库集群中所有节点的在线状态;
共享存储写权限信息,包括:主节点标识信息,原始时间戳和原始校验码;
和数据库用户信息,用于存放数据库的用户数据。
需要说明的是,原始时间戳为节点成功将自己的标识信息写入共享存储写权限信息的时间,表征节点与数据库存储设备的连通状态;原始校验码用于保证共享存储写权限信息的完整一致性。
请参阅图5,在一些实施例中,步骤S401还可以包括但不限于包括步骤S501至步骤S505:
步骤S501,对共享存储写权限信息进行记录信息判断,得到记录信息判断结果;
步骤S502,若记录信息判断结果表征共享存储写权限信息中没有记录信息,基于备节点的标识信息对主节点标识信息进行更新,并获取信息更新时间;
步骤S503,将备节点的标识信息和信息更新时间进行合并,得到更新校验数据包;
步骤S504,对更新校验数据包进行校验和运算,得到更新校验码;
步骤S505,基于信息更新时间对原始时间戳进行更新、基于更新校验码对原始校验码进行更新,以更新共享存储写权限信息。
本申请实施例所示意的步骤S501至步骤S505,针对每一备节点,通过对共享存储写权限信息进行记录信息判断,得到记录信息判断结果;若记录信息判断结果表征共享存储写权限信息中没有记录信息,备节点则抢先将节点信息写入共享存储写权限信息中,并同步更新原始时间戳和原始校验码,从而实现抢占对共享存储信息的写权限。
在一些实施例中,将备节点的标识信息和信息更新时间合并成一个整体,形成更新校验数据包,然后通过完整性校验算法对更新校验数据包进行校验和运算,得到更新校验码。
需要说明的是,完整性校验算法可以为CRC循环冗余校验算法、哈希校验算法等,不限于此。
在一些实施例的步骤S501之后,该数据库集群脑裂预防方法还可以包括但不限于包括如下步骤:
若记录信息判断结果表征共享存储写权限信息中记录有信息,则对共享存储写权限信息进行数据完整性校验,得到校验结果;
当校验结果反映共享存储写权限信息通过完整性校验,将共享存储写权限信息中记录的主节点标识信息与备节点的标识信息进行对比,得到节点信息对比结果;
将共享存储写权限信息中记录的主节点标识信息与备节点的标识信息进行对比,得到节点信息对比结果;
基于节点信息对比结果,从多个备节点中确定目标主节点。
其中,上述步骤的具体实施方式与步骤S402至S404的具体实施例基本相同,在此不再赘述。
需要说明的是,在步骤S501之后,若记录信息判断结果表征共享存储写权限信息中记录有信息,则不会执行步骤S502至S505,转而继续执行步骤S402至S404。
请参阅图6,在一些实施例,步骤S402包括但不限于包括步骤S601至步骤S603:
步骤S601,将主节点标识信息和原始时间戳进行合并,得到目标校验数据包;
步骤S602,对目标校验数据包进行校验和运算,得到目标校验码;
步骤S603,将原始校验码和目标校验码进行对比,得到校验结果。
本申请实施例所示意的步骤S601至步骤S603,通过对共享存储写权限信息记录的信息进行完整性检验,以确保共享存储写权限信息记录的信息完整无误,提高数据库系统的可靠性,保证记录的信息的安全性。
在一些实施例中,将共享存储写权限信息记录的主节点标识信息和原始时间戳合并成一个整体,形成目标校验数据包,然后通过完整性校验算法对目标校验数据包进行校验和运算,得到目标校验码,然后将计算得到的目标校验码与共享存储写权限信息记录的原始校验码进行对比,从而得到校验结果,以判断共享存储写权限信息记录的完整性。
需要说明的是,完整性校验算法可以为CRC循环冗余校验算法、哈希校验算法等,不限于此。
在一些实施例的步骤S402之后,当校验结果反映共享存储写权限信息未通过完整性校验,则针对当前的备节点,基于备节点的标识信息对主节点标识信息进行更新,并获取信息更新时间;将备节点的标识信息和信息更新时间进行合并,得到更新校验数据包;对更新校验数据包进行校验和运算,得到更新校验码;基于信息更新时间对原始时间戳进行更新、基于更新校验码对原始校验码进行更新,以更新共享存储写权限信息,并重新执行步骤S402至步骤S404。
在一些实施例的步骤S403中,将共享存储写权限信息中记录的主节点标识信息和备节点的标识信息进行对比,以判断两者是否相同,得到节点信息对比结果。
请参阅图7,在一些实施例中,步骤S404可以包括但不限于包括步骤S701至步骤S702:
步骤S701,若节点信息对比结果表征共享存储写权限信息中记录的主节点标识信息与备节点的标识信息相同,对备节点执行节点晋升流程;
步骤S702,其中,节点晋升流程包括:以备节点的标识信息为基准,对共享存储写权限信息中记录的主节点标识信息进行对照确认,得到对照确认结果;若对照确认结果反映共享存储写权限信息中记录的主节点标识信息与备节点的标识信息相同,将备节点晋升为目标主节点。
本申请实施例所示意的步骤S701至步骤S702,若节点信息对比结果表征共享存储写权限信息中记录的主节点标识信息与备节点的标识信息相同,对备节点执行节点晋升流程,以成为目标主节点。通过对共享存储写权限信息中记录的主节点标识信息进行再次对照确认,能够减少恶意节点篡改主节点选举过程的可能性,提高了主节点选举的可信度,同时能够帮助排除误差,确保最终选出的目标主节点是准确无误的,从而降低了错误选举的可能性。
需要说明的是,存在两个备节点同一时间对共享存储写权限信息进行更新的可能性,进而导致两个备节点都认为自己可以晋升成为主节点,因此,需要增加共享存储写权限信息中记录的主节点标识信息与备节点的标识信息进行对比的环节,以确保最终选出的目标主节点是准确无误的,从而降低了错误选举的可能性。
在一些实施例的步骤S702中,该数据库集群脑裂预防方法还可以包括但不限于包括如下步骤:
若对照确认结果反映共享存储写权限信息中记录的主节点标识信息与备节点的标识信息不相同,当前的备节点维持备节点的角色,并退出目标主节点的选举过程。
需要说明的是,主节点需要按照预设的时间戳更新阈值,基于自身的标识信息,定时向共享存储写权限信息进行数据更新,而备节点则会定期读取共享存储写权限信息所记录的内容,然后检查原始时间戳是否正常更新,以此判断主节点和数据库存储设备是否正常连通。
其中,预设的时间戳更新阈值可以设为500ms,即主节点每500ms将自身的标识信息向共享存储写权限信息进行数据更新。
需要说明的是,预设的时间戳更新阈值可以根据实际应用场景进行设置,在本申请实施例中不对其做限定。
因此,本申请提供的数据库集群脑裂预防方法会循环执行步骤S402至步骤S404,以实现动态进行主节点选举,直至最终确认目标主节点。
在一些实施例的步骤S404中,该数据库集群脑裂预防方法还可以包括但不限于包括如下步骤:
若节点信息对比结果表征共享存储写权限信息中记录的主节点标识信息与备节点的标识信息不相同,则检查原始时间戳是否正常更新,得到时间更新检查结果;
若所述时间更新检查结果表征原始时间戳是基于预设的时间戳更新阈值进行更新的,即原始时间戳正常更新,则当前的备节点维持备节点的角色,并退出目标主节点的选举过程;
若所述时间更新检查结果表征原始时间戳并未基于预设的时间戳更新阈值进行更新的,即原始时间戳未正常更新,则基于当前备节点对共享存储写权限信息进行更新,并重新执行步骤S402至步骤S404。
本申请实施例提供了一种数据库集群脑裂预防方法,应用于当数据库集群发生分区时,快速确定多数派分区的主节点,从而保证数据库集群的高可用能力、数据库系统的稳定性和数据的完整性。
具体地,可以包括但不限于如下步骤:
步骤1:取共享存储信息;其中,共享存储信息用于反映数据库集群各个节点对应的节点特征;共享存储信息包括节点在线状态信息,共享存储写权限信息和数据库用户信息;共享存储写权限信息包括:主节点标识信息,原始时间戳和原始校验码。
步骤2:获取节点在线状态信息;基于节点在线状态信息将数据库集群中的多个节点进行集群分类,得到集群分区信息;其中,集群分区信息用于表征各个集群分区的属性信息。
步骤3:基于集群分区信息对原始主节点所在的集群分区进行解析处理,得到主节点分区信息。
步骤4:若主节点分区信息表征原始主节点位于少数派分区,则将原始主节点降级为备节点,并将共享存储写权限信息的内容进行清除;其中,少数派分区为两个集群分区中节点数量较少的集群分区。
步骤5:位于多数派分区的所有备节点进行主节点选举,确定多数派分区的目标主节点;其中,多数派分区为两个集群分区中节点数量较多的集群分区。
其中,步骤5可以包括但不限于如下步骤:
步骤5.1:针对每一备节点,对共享存储写权限信息进行更新;
其中,步骤5.1可以包括但不限于如下步骤:
步骤5.1.1:对共享存储写权限信息进行记录信息判断,得到记录信息判断结果;
步骤5.1.2:若记录信息判断结果表征共享存储写权限信息中记录有信息,则退出步骤5.1;
步骤5.1.3:若记录信息判断结果表征共享存储写权限信息中没有记录信息,则针对当前的备节点,基于备节点的标识信息对主节点标识信息进行更新,并获取信息更新时间;将备节点的标识信息和信息更新时间进行合并,得到更新校验数据包;对更新校验数据包进行校验和运算,得到更新校验码;基于信息更新时间对原始时间戳进行更新、基于更新校验码对原始校验码进行更新,以更新共享存储写权限信息。
步骤5.2:对共享存储写权限信息进行数据完整性校验,得到校验结果;其中,可以包括但不限于包括如下步骤:将主节点标识信息和原始时间戳进行合并,得到目标校验数据包;对目标校验数据包进行校验和运算,得到目标校验码;将原始校验码和目标校验码进行对比,得到校验结果。
步骤5.3:若校验结果反映共享存储写权限信息未通过完整性校验,则针对当前的备节点,基于备节点的标识信息对主节点标识信息进行更新,并获取信息更新时间;将备节点的标识信息和信息更新时间进行合并,得到更新校验数据包;对更新校验数据包进行校验和运算,得到更新校验码;基于信息更新时间对原始时间戳进行更新、基于更新校验码对原始校验码进行更新,以更新共享存储写权限信息,并重新执行步骤5。
步骤5.4:若校验结果反映共享存储写权限信息通过完整性校验,将共享存储写权限信息中记录的主节点标识信息与备节点的标识信息进行对比,得到节点信息对比结果。
步骤5.5:若节点信息对比结果表征共享存储写权限信息中记录的主节点标识信息与备节点的标识信息相同,则跳转执行步骤5.9。
步骤5.6:若节点信息对比结果表征共享存储写权限信息中记录的主节点标识信息与备节点的标识信息不相同,则检查原始时间戳是否正常更新,得到时间更新检查结果。
步骤5.7:若所述时间更新检查结果表征原始时间戳是基于预设的时间戳更新阈值进行更新的,即原始时间戳正常更新,则当前的备节点维持备节点的角色,并退出步骤5。
步骤5.8:若所述时间更新检查结果表征原始时间戳并未基于预设的时间戳更新阈值进行更新的,即原始时间戳未正常更新,则针对当前的备节点,基于备节点的标识信息对主节点标识信息进行更新,并获取信息更新时间;将备节点的标识信息和信息更新时间进行合并,得到更新校验数据包;对更新校验数据包进行校验和运算,得到更新校验码;基于信息更新时间对原始时间戳进行更新、基于更新校验码对原始校验码进行更新,以更新共享存储写权限信息;重新执行步骤5。
步骤5.9:以备节点的标识信息为基准,对共享存储写权限信息中记录的主节点标识信息进行对照确认,得到对照确认结果。
步骤5.10:若对照确认结果反映共享存储写权限信息中记录的主节点标识信息与备节点的标识信息不相同,当前的备节点维持备节点的角色,并退出步骤5。
步骤5.11:若对照确认结果反映共享存储写权限信息中记录的主节点标识信息与备节点的标识信息相同,将备节点晋升为目标主节点。
本申请实施例的数据库集群自身能够处理网络分区引起的脑裂故障,无需依赖第三方集群管理工具,减少系统复杂度的同时,可以降低与第三方集群管理工具相关的风险,提高数据库集群系统的稳定性。
本申请实施例提供了一种数据库集群脑裂预防方法,还可以应用于当数据库集群的主节点发生故障时的情况,能够快速选举出新的主节点,从而保证数据库集群的高可用能力、数据库系统的稳定性和数据的完整性。
具体地,可以包括但不限于如下步骤:
S1:检测到原始主节点与数据库存储设备的连通状态为断开状态,且断开连接持续时长超过预设的断开时长阈值,将原始主节点降级为备节点,并向数据库集群中的所有备节点发送故障广播;其中,故障广播用于表征原始主节点发生故障。
S2:获取共享存储信息;其中,共享存储信息用于反映数据库集群各个节点对应的节点特征;共享存储信息包括节点在线状态信息,共享存储写权限信息和数据库用户信息;共享存储写权限信息包括:主节点标识信息,原始时间戳和原始校验码。
S3:针对每一备节点,执行主节点抢占流程。
其中,S3可以包括但不限于如下步骤:
S3.1:对共享存储写权限信息进行数据完整性校验,得到校验结果;其中,数据完整性校验的过程可以包括但不限于包括如下步骤:将主节点标识信息和原始时间戳进行合并,得到目标校验数据包;对目标校验数据包进行校验和运算,得到目标校验码;将原始校验码和目标校验码进行对比,得到校验结果。
S3.2:若校验结果反映共享存储写权限信息通过完整性校验,将共享存储写权限信息中记录的主节点标识信息与备节点的标识信息进行对比,得到节点信息对比结果。
S3.3:若节点信息对比结果表征共享存储写权限信息中记录的主节点标识信息与备节点的标识信息相同,则跳转执行S3.8。
S3.4:若节点信息对比结果表征共享存储写权限信息中记录的主节点标识信息与备节点的标识信息不相同,且共享存储写权限信息中记录的主节点标识信息为原始主节点的标识信息,则针对当前的备节点,基于备节点的标识信息对主节点标识信息进行更新,并获取信息更新时间;将备节点的标识信息和信息更新时间进行合并,得到更新校验数据包;对更新校验数据包进行校验和运算,得到更新校验码;基于信息更新时间对原始时间戳进行更新、基于更新校验码对原始校验码进行更新,以更新共享存储写权限信息,并重新执行S3。
S3.5:若节点信息对比结果表征共享存储写权限信息中记录的主节点标识信息与备节点的标识信息不相同,且共享存储写权限信息中记录的主节点标识信息为其他备节点的标识信息,则检查原始时间戳是否正常更新,得到时间更新检查结果。
S3.6:若所述时间更新检查结果表征原始时间戳是基于预设的时间戳更新阈值进行更新的,即原始时间戳正常更新,则当前的备节点维持备节点的角色,并退出S3。
S3.7:若所述时间更新检查结果表征原始时间戳并未基于预设的时间戳更新阈值进行更新的,即原始时间戳未正常更新,则针对当前的备节点,基于备节点的标识信息对主节点标识信息进行更新,并获取信息更新时间;将备节点的标识信息和信息更新时间进行合并,得到更新校验数据包;对更新校验数据包进行校验和运算,得到更新校验码;基于信息更新时间对原始时间戳进行更新、基于更新校验码对原始校验码进行更新,以更新共享存储写权限信息;重新执行S3。
S3.8:以备节点的标识信息为基准,对共享存储写权限信息中记录的主节点标识信息进行对照确认,得到对照确认结果。
S3.9:若对照确认结果反映共享存储写权限信息中记录的主节点标识信息与备节点的标识信息不相同,当前的备节点维持备节点的角色,并退出步骤5。
S3.10:若对照确认结果反映共享存储写权限信息中记录的主节点标识信息与备节点的标识信息相同,将备节点晋升为目标主节点。
本申请实施例的数据库集群在当集群主节点发生故障时,能够快速选举出新的主节点,从而保证数据库集群的高可用能力。并且,无需依赖第三方集群管理工具,减少系统复杂度的同时,可以降低与第三方集群管理工具相关的风险,提高数据库集群系统的稳定性。
请参阅图8,本申请实施例还提供一种数据库集群脑裂预防装置,可以实现上述数据库集群脑裂预防方法,该装置包括:
信息获取模块801,用于获取共享存储信息;其中,共享存储信息用于反映数据库集群各个节点对应的节点特征;
集群划分模块802,用于基于共享存储信息将数据库集群进行集群划分,得到集群分区信息;其中,集群分区信息用于表征各个集群分区的属性信息;
解析处理模块803,用于基于集群分区信息对原始主节点所在的集群分区进行解析处理,得到主节点分区信息;
脑裂预防模块804,用于基于集群分区信息和主节点分区信息进行脑裂预防。
在一些实施例的集群划分模块802中,该集群划分模块802还包括:
在线状态信息获取子模块,用于获取节点在线状态信息;
集群分类子模块,用于基于节点在线状态信息将数据库集群中的多个节点进行集群分类,得到集群分区信息。
在一些实施例的脑裂预防模块804中,该脑裂预防模块804还包括:
主节点分区判断子模块,用于若主节点分区信息表征原始主节点位于少数派分区,则将原始主节点降级为备节点,并将共享存储写权限信息的内容进行清除;其中,少数派分区为两个集群分区中节点数量较少的集群分区;
主节点选举子模块,用于位于多数派分区的所有备节点进行主节点选举,确定多数派分区的目标主节点;其中,多数派分区为两个集群分区中节点数量较多的集群分区。
在一些实施例的主节点选举子模块中,该主节点选举子模块还包括:
权限信息更新单元,用于针对每一备节点,对共享存储写权限信息进行更新;
完整性校验单元,用于对共享存储写权限信息进行数据完整性校验,得到校验结果;
信息对比单元,用于当校验结果反映共享存储写权限信息通过完整性校验,将共享存储写权限信息中记录的主节点标识信息与备节点的标识信息进行对比,得到节点信息对比结果;
主节点确定单元,用于基于节点信息对比结果,从多个备节点中确定目标主节点。
在一些实施例的权限信息更新单元中,该权限信息更新单元还包括:
信息判断子单元,用于对共享存储写权限信息进行记录信息判断,得到记录信息判断结果;
标识信息更新子单元,用于若记录信息判断结果表征共享存储写权限信息中没有记录信息,基于备节点的标识信息对主节点标识信息进行更新,并获取信息更新时间;
第一信息合并子单元,用于将备节点的标识信息和信息更新时间进行合并,得到更新校验数据包;
第一校验和计算子单元,用于对更新校验数据包进行校验和运算,得到更新校验码;
时间信息更新子单元,用于基于信息更新时间对原始时间戳进行更新、基于更新校验码对原始校验码进行更新,以更新共享存储写权限信息。
在一些实施例的完整性校验单元中,该完整性校验单元还包括:
第二信息合并子单元,用于将主节点标识信息和原始时间戳进行合并,得到目标校验数据包;
第二校验和计算子单元,用于对目标校验数据包进行校验和运算,得到目标校验码;
校验码对比子单元,用于将原始校验码和目标校验码进行对比,得到校验结果。
在一些实施例的主节点确定单元中,该主节点确定单元还包括:
对比确认子单元,用于若节点信息对比结果表征共享存储写权限信息中记录的主节点标识信息与备节点的标识信息相同,对备节点执行节点晋升流程;
节点晋升子单元,用于其中,节点晋升流程包括:以备节点的标识信息为基准,对共享存储写权限信息中记录的主节点标识信息进行对照确认,得到对照确认结果;若对照确认结果反映共享存储写权限信息中记录的主节点标识信息与备节点的标识信息相同,将备节点晋升为目标主节点。
该数据库集群脑裂预防装置的具体实施方式与上述数据库集群脑裂预防方法的具体实施例基本相同,在此不再赘述。
本申请实施例还提供了一种电子设备,电子设备包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述数据库集群脑裂预防方法。该电子设备可以为包括平板电脑、车载电脑等任意智能终端。
请参阅图9,图9示意了另一实施例的电子设备的硬件结构,电子设备包括:
处理器901,可以采用通用的CPU(CentralProcessingUnit,中央处理器)、微处理器、应用专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本申请实施例所提供的技术方案;
存储器902,可以采用只读存储器(ReadOnlyMemory,ROM)、静态存储设备、动态存储设备或者随机存取存储器(RandomAccessMemory,RAM)等形式实现。存储器902可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器902中,并由处理器901来调用执行本申请实施例的数据库集群脑裂预防方法;
输入/输出接口903,用于实现信息输入及输出;
通信接口904,用于实现本设备与其他设备的通信交互,可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信;
总线905,在设备的各个组件(例如处理器901、存储器902、输入/输出接口903和通信接口904)之间传输信息;
其中处理器901、存储器902、输入/输出接口903和通信接口904通过总线905实现彼此之间在设备内部的通信连接。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述数据库集群脑裂预防方法。
存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序以及非暂态性计算机可执行程序。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至该处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
本申请实施例提供的数据库集群脑裂预防方法、装置、电子设备及存储介质,其通过获取共享存储信息;其中,共享存储信息用于反映数据库集群各个节点对应的节点特征;基于共享存储信息将数据库集群进行集群划分,得到集群分区信息;其中,集群分区信息用于表征各个集群分区的属性信息;基于集群分区信息对原始主节点所在的集群分区进行解析处理,得到主节点分区信息;基于集群分区信息和主节点分区信息进行脑裂预防。数据库集群自身能够处理网络分区引起的脑裂故障,无需依赖第三方集群管理工具,减少系统复杂度的同时,可以降低与第三方集群管理工具相关的风险,提高数据库集群系统的稳定性。
本申请实施例描述的实施例是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域技术人员可知,随着技术的演变和新应用场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本领域技术人员可以理解的是,图中示出的技术方案并不构成对本申请实施例的限定,可以包括比图示更多或更少的步骤,或者组合某些步骤,或者不同的步骤。
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、设备中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。
本申请的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括多指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例的方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序的介质。
以上参照附图说明了本申请实施例的优选实施例,并非因此局限本申请实施例的权利范围。本领域技术人员不脱离本申请实施例的范围和实质内所作的任何修改、等同替换和改进,均应在本申请实施例的权利范围之内。

Claims (10)

1.一种数据库集群脑裂预防方法,其特征在于,数据库集群包含多个节点,其中一个为原始主节点,其余节点为备节点,所述原始主节点用于管理所述备节点,所述方法包括:
获取共享存储信息;其中,所述共享存储信息用于反映所述数据库集群各个节点对应的节点特征;
基于所述共享存储信息将所述数据库集群进行集群划分,得到集群分区信息;其中,所述集群分区信息用于表征各个集群分区的属性信息;
基于所述集群分区信息对所述原始主节点所在的所述集群分区进行解析处理,得到主节点分区信息;
基于所述集群分区信息和所述主节点分区信息进行脑裂预防。
2.根据权利要求1所述的方法,其特征在于,所述共享存储信息包括节点在线状态信息;所述基于所述共享存储信息将所述数据库集群进行集群划分,得到集群分区信息,包括:
获取所述节点在线状态信息;
基于所述节点在线状态信息将所述数据库集群中的多个所述节点进行集群分类,得到所述集群分区信息。
3.根据权利要求2所述的方法,其特征在于,所述集群分区信息用于表征两个所述集群分区分别包含的节点数量,所述共享存储信息还包括共享存储写权限信息,所述共享存储写权限信息包括主节点标识信息,所述主节点标识信息用于表征对所述共享存储信息具备写权限的节点的标识信息;所述基于所述集群分区信息和所述主节点分区信息进行脑裂预防,包括:
若所述主节点分区信息表征所述原始主节点位于少数派分区,则将所述原始主节点降级为备节点,并将所述共享存储写权限信息的内容进行清除;其中,所述少数派分区为两个所述集群分区中所述节点数量较少的所述集群分区;
位于多数派分区的所有所述备节点进行主节点选举,确定所述多数派分区的目标主节点;其中,所述多数派分区为两个所述集群分区中所述节点数量较多的所述集群分区。
4.根据权利要求3所述的方法,其特征在于,所述位于多数派分区的所有所述备节点进行主节点选举,确定所述多数派分区的目标主节点,包括:
针对每一所述备节点,对所述共享存储写权限信息进行更新;
对所述共享存储写权限信息进行数据完整性校验,得到校验结果;
当所述校验结果反映所述共享存储写权限信息通过完整性校验,将所述共享存储写权限信息中记录的主节点标识信息与所述备节点的标识信息进行对比,得到节点信息对比结果;
基于所述节点信息对比结果,从多个所述备节点中确定所述目标主节点。
5.根据权利要求4所述的方法,其特征在于,所述共享存储写权限信息还包括原始时间戳和原始校验码;所述对所述共享存储写权限信息进行更新,包括:
对所述共享存储写权限信息进行记录信息判断,得到记录信息判断结果;
若所述记录信息判断结果表征所述共享存储写权限信息中没有记录信息,基于所述备节点的标识信息对所述主节点标识信息进行更新,并获取信息更新时间;
将所述备节点的标识信息和所述信息更新时间进行合并,得到更新校验数据包;
对所述更新校验数据包进行校验和运算,得到更新校验码;
基于所述信息更新时间对所述原始时间戳进行更新、基于所述更新校验码对所述原始校验码进行更新,以更新所述共享存储写权限信息。
6.根据权利要求5所述的方法,其特征在于,所述对所述共享存储写权限信息进行数据完整性校验,得到校验结果,包括:
将所述主节点标识信息和所述原始时间戳进行合并,得到目标校验数据包;
对所述目标校验数据包进行校验和运算,得到目标校验码;
将所述原始校验码和所述目标校验码进行对比,得到所述校验结果。
7.根据权利要求6所述的方法,其特征在于,所述基于所述节点信息对比结果,从多个所述备节点中确定所述目标主节点,包括:
若所述节点信息对比结果表征所述共享存储写权限信息中记录的主节点标识信息与所述备节点的标识信息相同,对所述备节点执行节点晋升流程;
其中,所述节点晋升流程包括:以所述备节点的标识信息为基准,对所述共享存储写权限信息中记录的主节点标识信息进行对照确认,得到对照确认结果;若所述对照确认结果反映所述共享存储写权限信息中记录的主节点标识信息与所述备节点的标识信息相同,将所述备节点晋升为所述目标主节点。
8.一种数据库集群脑裂预防装置,其特征在于,所述装置包括:
信息获取模块,用于获取共享存储信息;其中,所述共享存储信息用于反映数据库集群各个节点对应的节点特征;
集群划分模块,用于基于所述共享存储信息将所述数据库集群进行集群划分,得到集群分区信息;其中,所述集群分区信息用于表征各个集群分区的属性信息;
解析处理模块,用于基于所述集群分区信息对原始主节点所在的所述集群分区进行解析处理,得到主节点分区信息;
脑裂预防模块,用于基于所述集群分区信息和所述主节点分区信息进行脑裂预防。
9.一种电子设备,其特征在于,所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述的数据库集群脑裂预防方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的数据库集群脑裂预防方法。
CN202410398007.7A 2024-04-03 2024-04-03 数据库集群脑裂预防方法、装置、电子设备及存储介质 Active CN117992501B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410398007.7A CN117992501B (zh) 2024-04-03 2024-04-03 数据库集群脑裂预防方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410398007.7A CN117992501B (zh) 2024-04-03 2024-04-03 数据库集群脑裂预防方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN117992501A true CN117992501A (zh) 2024-05-07
CN117992501B CN117992501B (zh) 2024-07-09

Family

ID=90895651

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410398007.7A Active CN117992501B (zh) 2024-04-03 2024-04-03 数据库集群脑裂预防方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN117992501B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6363495B1 (en) * 1999-01-19 2002-03-26 International Business Machines Corporation Method and apparatus for partition resolution in clustered computer systems
CN105681074A (zh) * 2015-12-29 2016-06-15 北京同有飞骥科技股份有限公司 一种增强双机集群可靠、可用性的方法及装置
US10936224B1 (en) * 2019-09-13 2021-03-02 EMC IP Holding Company LLC Cluster controller selection for shared storage clusters
KR20210077133A (ko) * 2019-12-17 2021-06-25 주식회사 리드포인트시스템 블록 체인 네트워크 동작 프로그램
CN113901047A (zh) * 2021-09-16 2022-01-07 浪潮云信息技术股份公司 一种基于内存数据库的简便集群主从选举方法
CN115811461A (zh) * 2023-02-08 2023-03-17 湖南国科亿存信息科技有限公司 San共享存储集群脑裂预防处理方法、装置及电子设备
CN116541215A (zh) * 2023-05-11 2023-08-04 紫光云技术有限公司 一种分布式存储利用共享资源完成主备切换的方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6363495B1 (en) * 1999-01-19 2002-03-26 International Business Machines Corporation Method and apparatus for partition resolution in clustered computer systems
CN105681074A (zh) * 2015-12-29 2016-06-15 北京同有飞骥科技股份有限公司 一种增强双机集群可靠、可用性的方法及装置
US10936224B1 (en) * 2019-09-13 2021-03-02 EMC IP Holding Company LLC Cluster controller selection for shared storage clusters
KR20210077133A (ko) * 2019-12-17 2021-06-25 주식회사 리드포인트시스템 블록 체인 네트워크 동작 프로그램
CN113901047A (zh) * 2021-09-16 2022-01-07 浪潮云信息技术股份公司 一种基于内存数据库的简便集群主从选举方法
CN115811461A (zh) * 2023-02-08 2023-03-17 湖南国科亿存信息科技有限公司 San共享存储集群脑裂预防处理方法、装置及电子设备
CN116541215A (zh) * 2023-05-11 2023-08-04 紫光云技术有限公司 一种分布式存储利用共享资源完成主备切换的方法

Also Published As

Publication number Publication date
CN117992501B (zh) 2024-07-09

Similar Documents

Publication Publication Date Title
US9753954B2 (en) Data node fencing in a distributed file system
US8301600B1 (en) Failover recovery in a distributed data store
EP2434729A2 (en) Method for providing access to data items from a distributed storage system
US20170242761A1 (en) Fault tolerant listener registration in the presence of node crashes in a data grid
CN106572153A (zh) 集群的数据存储方法及装置
EP2976714B1 (en) Method and system for byzantine fault tolerant data replication
CN110825698B (zh) 元数据管理方法及相关装置
US10795910B2 (en) Robust communication system for guaranteed message sequencing with the detection of duplicate senders
CN106933843A (zh) 数据库心跳检测方法以及装置
CN105069152B (zh) 数据处理方法及装置
CN102761528A (zh) 数据管理系统及方法
CN114238495A (zh) 数据库主备集群切换方法、装置、计算机设备及存储介质
CN112436962B (zh) 区块链共识网络动态扩展方法、电子设备、系统及介质
CN117370316A (zh) 数据库的高可用管理方法和装置、电子设备及存储介质
CN111404737B (zh) 一种容灾处理方法以及相关装置
CN117992501B (zh) 数据库集群脑裂预防方法、装置、电子设备及存储介质
CN113626252A (zh) 一种基于集群的城市级容灾方法、装置、电子设备及介质
US20190073281A1 (en) Information processing system
US9971661B2 (en) Redundant system, method for redundant system, method for controlling node of redundant system and computer readable storage medium
CN107590032A (zh) 存储集群故障转移的方法及存储集群系统
CN117851244B (zh) 数据库故障检测方法和装置、电子设备及存储介质
CN113568710B (zh) 一种虚拟机高可用实现方法、装置和设备
CN116991824A (zh) 一种基于云平台的MySQL多策略高可用系统及方法
US12066901B2 (en) Protecting databases in a clusterless availability group
CN114244638B (zh) 组播网络通信方法、装置、设备及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant