CN115509796A - 处理故障节点的方法及装置、非易失性存储介质、处理器 - Google Patents

处理故障节点的方法及装置、非易失性存储介质、处理器 Download PDF

Info

Publication number
CN115509796A
CN115509796A CN202211353137.6A CN202211353137A CN115509796A CN 115509796 A CN115509796 A CN 115509796A CN 202211353137 A CN202211353137 A CN 202211353137A CN 115509796 A CN115509796 A CN 115509796A
Authority
CN
China
Prior art keywords
node
fault
slave
nodes
determining
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
CN202211353137.6A
Other languages
English (en)
Other versions
CN115509796B (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.)
Yunhe Enmo Beijing Information Technology Co ltd
Original Assignee
Yunhe Enmo 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 Yunhe Enmo Beijing Information Technology Co ltd filed Critical Yunhe Enmo Beijing Information Technology Co ltd
Priority to CN202211353137.6A priority Critical patent/CN115509796B/zh
Publication of CN115509796A publication Critical patent/CN115509796A/zh
Application granted granted Critical
Publication of CN115509796B publication Critical patent/CN115509796B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • 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/21Design, administration or maintenance of databases

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Data Mining & Analysis (AREA)
  • Hardware Redundancy (AREA)

Abstract

本申请公开了一种处理故障节点的方法及装置、非易失性存储介质、处理器。其中,该方法包括:获取数据库中节点的信息和数据库的故障容忍时间,根据节点的关键健康指标判断节点是否为故障节点,如果节点的关键健康指标为不达标,确定节点为故障节点,如果节点的关键健康指标为达标,确定节点不是故障节点;如果节点为故障节点,根据节点属性,节点类型和数据库的故障容忍时间,确定故障节点的处理方式,并依据处理方式对故障节点进行处理的方式,解决了由于现有技术中对数据库故障节点的处理方式不能覆盖全部故障场景造成的不能及时、准确的处理数据库故障节点,导致数据库的数据一致性和服务连续性降低的技术问题。

Description

处理故障节点的方法及装置、非易失性存储介质、处理器
技术领域
本申请涉及数据库技术领域,具体而言,涉及一种由数据库的连接层实现的处理故障节点的方法及装置、非易失性存储介质、处理器。
背景技术
数据库作为信息系统的核心之一,承载业务的数据访问和处理,一个完整的数据库架构包括故障切换模块和连接层模块,其中,故障切换模块负责检测健康状态、切换以及切换后的处理;连接层模块负责提供业务转发、感知后端数据库服务状态的变化以及相应的处理。相关技术中,当数据库集群节点出现故障后,连接层模块对发生故障的节点进行处理时,存在无法覆盖全部故障场景,导致未能及时下线数据库故障节点,或将未发生故障的数据库节点下线,导致服务连续性较差的问题。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种处理故障节点的方法及装置、非易失性存储介质、处理器,以至少解决由于现有技术中对数据库故障节点的处理方式不能覆盖全部故障场景造成的不能及时、准确的处理数据库故障节点,导致数据库的数据一致性和服务连续性降低的技术问题。
根据本申请实施例的一个方面,提供了一种处理故障节点的方法,该方法应用于连接层,包括:获取数据库中节点的信息和数据库的故障容忍时间,其中,节点的信息包括:节点类型,节点的关键健康指标,节点属性,其中,节点类型包括:主节点和从节点,节点属性用于指示节点为参与故障切换的节点,或者节点为不参与故障切换的节点;根据节点的关键健康指标判断节点是否为故障节点,如果节点的关键健康指标为不达标,确定节点为故障节点,如果节点的关键健康指标为达标,确定节点不是故障节点;如果节点为故障节点,根据节点属性,节点类型和数据库的故障容忍时间,确定故障节点的处理方式,并依据处理方式对故障节点进行处理。
可选地,根据节点属性,节点类型和数据库的故障容忍时间,确定故障节点的处理方式,并依据处理方式对故障节点进行处理,包括:如果故障节点类型为主节点,根据故障容忍时间确定对故障主节点的第一处理方式,依据第一处理方式对故障主节点进行处理;如果故障节点类型为从节点,根据故障容忍时间确定对故障从节点的第二处理方式,依据第二处理方式对故障从节点进行处理。
可选地,依据第一处理方式对故障主节点进行处理,包括:确定检测时间,在检测时间内获取节点属性为参与故障切换的多个第一从节点的关键健康指标,其中,第一从节点为允许连接层直接访问的从节点;如果多个第一从节点中,存在关键健康指标为达标的第一从节点,确定故障主节点的关键健康指标为不达标的持续不达标时间,确定持续不达标时间与数据库的故障容忍时间的第一差值;如果第一差值小于或者等于检测时间的预设倍数,确定将故障主节点下线;如果第一差值大于检测时间的预设倍数,重新获取多个第一从节点的关键健康指标;如果多个第一从节点中,不存在关键健康指标为达标的第一从节点,记录故障主节点的持续不达标时间,并重新获取多个第一从节点的关键健康指标。
可选地,依据第一处理方式对故障主节点进行处理,还包括:在检测时间内获取节点属性为参与故障切换的多个第二从节点的关键健康指标,其中,第二从节点为不允许连接层直接访问的从节点;如果多个第二从节点中,存在关键健康指标为达标的第二从节点,且第一差值小于或者等于检测时间的预设倍数,确定将故障主节点下线;如果多个第二从节点中,存在关键健康指标为达标的第二从节点,且第一差值大于检测时间的预设倍数,重新获取多个第二从节点的关键健康指标;如果多个第二从节点中,不存在关键健康指标为达标的第二从节点,记录故障主节点的持续不达标时间,并重新获取多个第一从节点和第二从节点的关键健康指标。
可选地,依据第一处理方式对故障主节点进行处理,还包括:如果多个第二从节点中不存在关键健康指标为达标的第二从节点,确定利用主节点策略对故障主节点进行处理,其中,利用主节点策略对故障主节点进行处理,包括:确定数据库的服务连续性和数据库的数据一致性的优先级;如果服务连续性的优先级高于数据一致性的优先级,确定不将故障主节点下线,并重新获取多个第一从节点和第二从节点的关键健康指标;如果服务连续性的优先级低于数据一致性的优先级,且第一差值小于或者等于检测时间的预设倍数,确定将故障主节点下线;如果服务连续性的优先级低于数据一致性的优先级,且第一差值大于检测时间的预设倍数,确定不将故障主节点下线,并重新获取多个第一从节点和第二从节点的关键健康指标。
可选地,依据第二处理方式对故障从节点进行处理,包括:获取故障从节点的复制链上,允许连接层访问的且节点属性为参与故障切换的多个第三从节点的信息;如果根据多个第三从节点的信息,确定多个第三从节点中存在复制中断的第三从节点,确定故障从节点的复制链中断的持续时间;确定故障从节点的复制链中断的持续时间与数据库的故障容忍时间的第二差值;如果第二差值为正数或零,确定将故障从节点下线;如果第二差值为负数,确定重新获取故障从节点的复制链的信息;如果根据多个第三从节点的信息,确定多个第三从节点中不存在复制中断的第三从节点,将故障从节点的复制链中断的持续时间清零,并重新获取故障从节点的复制链的信息。
可选地,依据第二处理方式对故障从节点进行处理,还包括:获取故障从节点的复制链上,不允许连接层访问的且节点属性为参与故障切换的多个第四从节点的信息;如果根据多个第四从节点的信息,确定多个第四从节点中存在复制中断的第四从节点,且第二差值为正数或零,确定将故障从节点下线;如果根据多个第四从节点的信息,确定多个第四从节点中存在复制中断的第四从节点,且第二差值为负数,确定重新获取故障从节点的复制链的信息;如果根据多个第四从节点的信息,确定多个第四从节点中不存在复制中断的第四从节点,将故障从节点的复制链中断的持续时间清零,并重新获取故障从节点的复制链的信息。
可选地,依据第二处理方式对故障从节点进行处理,还包括:如果根据多个第四从节点的信息,确定多个第四从节点中不存在复制中断的第四从节点,依据从节点策略对故障从节点进行处理,其中,依据从节点策略对故障从节点进行处理,包括:确定数据库的服务连续性和数据库的数据一致性的优先级;如果服务连续性的优先级高于数据一致性的优先级,确定不将故障从节点下线,并将故障从节点的复制链中断的持续时间清零,重新获取故障从节点的复制链的信息;如果服务连续性的优先级低于数据一致性的优先级,且第二差值为负数,确定重新获取故障从节点的复制链的信息;如果服务连续性的优先级低于数据一致性的优先级,且第二差值为正数或零,确定将故障从节点下线。
根据本申请实施例的另一方面,还提供了一种处理故障节点的装置,该装置应用于连接层,包括:获取模块,用于获取数据库中节点的信息和数据库的故障容忍时间,其中,节点的信息包括:节点类型,节点的关键健康指标,其中,节点类型包括:主节点和从节点,节点属性用于指示节点为参与故障切换的节点,或者节点为不参与故障切换的节点;判断模块,用于根据节点的关键健康指标判断节点是否为故障节点,如果节点的关键健康指标为不达标,确定节点为故障节点,如果节点的关键健康指标为达标,确定节点不是故障节点;处理模块,用于在节点为故障节点时,根据节点属性,节点类型和数据库的故障容忍时间,确定故障节点的处理方式,并依据处理方式对故障节点进行处理。
根据本申请实施例的另一方面,还提供了一种非易失性存储介质,该非易失性存储介质中存储有程序,其中,在程序运行时控制该非易失性存储介质所在设备执行以上的处理故障节点的方法。
根据本申请实施例的另一方面,还提供了一种电子设备,包括:存储器和处理器,该处理器用于运行存储在存储器中的程序,其中,程序运行时执行以上的处理故障节点的方法。
在本申请实施例中,采用获取数据库中节点的信息和数据库的故障容忍时间,其中,节点的信息包括:节点类型,节点的关键健康指标,节点属性,其中,节点类型包括:主节点和从节点,节点属性用于指示节点为参与故障切换的节点,或者节点为不参与故障切换的节点;根据节点的关键健康指标判断节点是否为故障节点,如果节点的关键健康指标为不达标,确定节点为故障节点,如果节点的关键健康指标为达标,确定节点不是故障节点;如果节点为故障节点,根据节点属性,节点类型和数据库的故障容忍时间,确定故障节点的处理方式,并依据处理方式对故障节点进行处理的方式,通过对比数据库的容忍时间和数据库节点的关键健康指标的持续未达标时间,及时识别故障节点;并在数据库集群节点出现故障后,根据故障节点的节点类型和故障的原因确定故障节点的处理方式,针对不同类型的节点采用不同的处理方式进行处理;在数据库连接层实现资源锁机制(fence机制);达到了准确识别故障的原因,并决定是否将数据库节点下线的目的,从而实现了避免漏下线故障节点或误下线为发生故障的节点,提升数据库的数据一致性和服务连续性的技术效果,进而解决了由于现有技术中对数据库故障节点的处理方式不能覆盖全部故障场景造成的不能及时、准确的处理数据库故障节点,导致数据库的数据一致性和服务连续性降低技术问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据相关技术的一种复制链的示意图;
图2是根据相关技术的一种数据库集群中定义上/下级节点的示意图;
图3是根据本申请实施例的一种应用于连接层的处理故障节点的方法的流程图;
图4是根据本申请实施例的一种处理故障主节点的流程图;
图5是根据本申请实施例的一种处理故障从节点的流程图;
图6是根据本申请实施例的一种处理故障节点的装置的结构图;
图7是根据本申请实施例的一种在连接层检测数据库节点的原理图;
图8是根据本申请实施例的一种在主节点只和仲裁节点/控制节点网络隔离的情况下处理故障节点的示意图;
图9是根据本申请实施例的一种在主节点只和其他数据库节点网络隔离的情况下处理故障节点的示意图;
图10是根据本申请实施例的一种在主节点和仲裁节点/控制节点以及其他数据库节点网络隔离的情况下处理故障节点的示意图;
图11是根据本申请实施例的一种在连接层无法访问从节点,主节点无法访问仲裁节点/第三方控制节点的情况下处理故障节点的示意图;
图12是根据本申请实施例的一种在仲裁节点/控制节点网络故障的情况下处理故障节点的示意图;
图13是根据本申请实施例的一种在连接层无法访问从节点,从节点也无法被其上下级节点访问的情况下处理故障节点的示意图;
图14是根据本申请实施例的一种在从节点3的健康指标不达标,且复制链是中断的情况下处理故障节点的示意图;
图15是根据本申请实施例的一种在从节点3的健康指标不达标,且连接层无法访问复制链上的从节点1的情况下处理故障节点的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了更好地理解本申请实施例,以下将本申请实施例中涉及的技术术语解释如下:
连接层:一个完整的数据库架构包括故障切换模块和连接层模块,其中,连接层(模块),如haproxy,用于转发业务对数据库的访问请求,感知后端数据库服务状态的变化以及对数据库节点的相应的处理。
节点的关键健康指标:判断节点是否健康的依据,具体的,在本申请实施例中,判断主节点是否健康的指标为其是否正常参与切换,如果正常参与切换,认为达标;如果不能正常参与切换,认为不达标,此时判断不参与切换的持续时间;判断从节点是否健康的指标为其复制链是否中断,如果复制链不中断,认为达标,如果复制链中断,认为不达标,此时判断复制链中断的持续时间。
故障容忍时间:在故障切换模块中,当节点关键健康指标未达标持续超过该时间,则认为该节点故障。
复制链:主节点到从节点之间的复制数据流向情况,复制链上的从节点就是复制数据经过的所有从节点。图1是复制链的示意图,如图1所示,从节点4的复制链就是主节点→从节点1→从节点3→从节点4,从节点4复制链上的从节点包括从节点1、从节点3、从节点4;复制链上的任意一个从节点的复制出现了中断,则认为该复制链中断。
资源锁机制(fence机制):当数据库集群节点出现故障后,如果是写(主)节点,需要在切换前保证故障节点不可访问,以避免数据不一致;如果是只读(从)节点,需要保证该节点不可访问,以避免读到过期数据。
双写:服务端将数据双向写入两个不同的数据库的现象。
上级/下级节点:图2是数据库集群中定义上/下级节点的示意图,如图2所示,如果某个节点作为从节点时,不是其它从节点的级联节点,如节点a1(id=a1),节点a2(id=a2)作为级联节点时不是从节点,则说明在复制关系中,该节点直接在主节点下面,将该节点的上级节点定义为空(null)。如果某个节点作为从节点时,是其他某个从节点级联从节点,如节点a3(id=a3)是节点a1的级联从节点,节点a4(id=a4)是节点a2的级联从节点,节点a5(id=a5)是节点a3的级联从节点,节点a6(id=a6)是节点a4的级联从节点,则节点a3的上级节点为节点a1,节点a1的下级节点为节点a3,同理,节点a4的上级节点为节点a2,节点a2的下级节点为节点a4,节点a5的上级节点为节点a3,节点a3的下级节点为节点a5,节点a6的上级节点为节点a4,节点a4的下级节点为节点a6。
仲裁节点:通过判断数据库节点和该节点的连通性来判断哪些数据库节点是健康的,哪些是不健康的。
第三方控制节点:该节点用来检测每个数据库节点并进行切换操作,也是一种仲裁节点。
在相关技术中,针对数据库故障节点的处理大多由故障切换模块实现,连接层只是作为业务转发,极少涉及对后端数据库服务的探测和对应的上线和下线数据库节点的操作,导致在发生故障时,连接层无法准确和及时地判断故障的原因,未及时下线需要下线的故障主节点和从节点;或者将无需下线的主节点或从节点下线,导致服务中断等问题。
另外,相关技术中,针对数据库故障节点的,可用性较高的处理方案中还存在以下问题;
1)通过软件或硬件方式来强行关闭服务器,将故障节点下线,导致服务器上的其它服务不可用,并且,通过关闭服务器的方式处理故障节点,服务器关机后,需要人工开机、启动数据库等操作后,才可使该节点重新加入集群,无法做到使数据库服务恢复后自动加入集群;
2)通过故障切换模块在切换节点的开始时刻和故障节点的切换完成时刻之间设置一个中间态,在这个中间态向连接层发出信号,告知连接层将故障的数据库节点下线;这种方式需要保证在节点出现故障时,连接层必须能够被访问,才能保证连接层及时故障数据库节点下线;如果连接层没有收到信号,则该连接层不会下线故障节点而是保持故障数据库节点的连接,典型场景为集群为跨机房部署时,如果主节点所在机房和从节点所在机房网络中断,则候选主节点无法访问老主节点所在机房的连接层,进而导致双写的现象;并且这种方式对故障切换模块要求较高,通用性受到限制,无法覆盖全部故障场景。因此,相关技术存在无法覆盖复杂故障场景或特殊故障场景,可能导致未及时下线需要下线的数据库节点,导致数据不一致,或者错误的将无需下线的数据库节点下线,导致服务连续性较差问题。
为了解决该问题,本申请实施例中通过在连接层实现一种fence机制,该机制通过检测节点关键健康指标以及辅助检测模块,扩大了支持的故障场景范围,能覆盖多种复杂场景和特殊场景,能够及时定位故障节点,能够准确识别故障的原因,并决定是否将故障节点下线;能够支持复杂拓扑结构的数据库集群当拓扑结构发生变化后,可以不用手动维护信息;从而可以解决上述问题,以下详细说明。
根据本申请实施例,提供了一种处理故障节点的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图3是根据本申请实施例提供的一种应用于连接层的处理故障节点的方法的流程图,如图3所示,该方法包括如下步骤:
步骤S302,获取数据库中节点的信息和数据库的故障容忍时间,其中,节点的信息包括:节点类型,节点的关键健康指标,节点属性,其中,节点类型包括:主节点和从节点,节点属性用于指示节点为参与故障切换的节点,或者节点为不参与故障切换的节点。
本申请实施例提供的方法中,定义了需从故障切换模块或节点获取信息的接口标准,因此,在步骤S302中,连接层在访问故障切换模块或数据库节点时,可获取数据库集群的故障容忍时间,用于判断是否开始故障切换;还可以获取如下的节点信息,包括:每个节点的角色(即节点类型):包括主节点和从节点;每个节点的关键健康指标;每个节点是否能参与切换(即节点属性):包括参与切换的节点和不参与切换的节点,由于有些节点(比如延迟从库)是不参与故障切换的。
步骤S304,根据节点的关键健康指标判断节点是否为故障节点,如果节点的关键健康指标为不达标,确定节点为故障节点,如果节点的关键健康指标为达标,确定节点不是故障节点。
在步骤S304中,根据在步骤S302中,由故障切换模块或数据库节点返回的节点关键健康指标判断节点是否出现了故障,具体的,当节点的关键健康指标为未达标时,认为其发生了故障。
需要说明的是,节点的关键健康指标只是故障切换模块通过检测数据得到的结果,不健康不代表该节点数据库服务无法被访问。
步骤S306,如果节点为故障节点,根据节点属性,节点类型和数据库的故障容忍时间,确定故障节点的处理方式,并依据处理方式对故障节点进行处理。
在步骤S306中,如果根据步骤S304提供的方法,确定节点为故障节点,则根据故障节点是否参与故障切换,以及节点是主节点还是从节点,以及故障节点的故障持续时间确定不同的处理方式,这是因为连接层下线主节点和从节点的目的不同,所以其下线的条件也不同;具体的,如果是主节点出现故障,则开始进入故障切换流程,采用主节点的处理方式处理故障主节点;如果是从节点出现故障,则会将该从节点标记为故障,采用从节点处理方式处理故障从节点。
通过上述步骤,可以实现在多种复杂场景下,能够准确识别故障的原因;能够尽早的发现故障以及可能需要下线的数据库节点,并决定是否将数据库节点下线;能够实现故障的精确定位以及判断是否将主或从节点下线;能够支持复杂拓扑结构的数据库集群(比如多层级联的集群),并且当拓扑结构发生变化后,可以不用手动维护信息,可以自动计算出新的拓扑结构;避免了漏下线和误下线的情况,从而提升数据一致性和服务连续性。
根据本申请一个可选的实施例,根据节点属性,节点类型和数据库的故障容忍时间,确定故障节点的处理方式,并依据处理方式对故障节点进行处理,包括:如果故障节点类型为主节点,根据故障容忍时间确定对故障主节点的第一处理方式,依据第一处理方式对故障主节点进行处理;如果故障节点类型为从节点,根据故障容忍时间确定对故障从节点的第二处理方式,依据第二处理方式对故障从节点进行处理。
在本实施例中,根据在步骤S302中获取的,由故障切换模块或数据库节点返回的故障容忍时间和节点的关键健康指标,确定对故障节点的处理方式。具体的,由于连接层下线主节点和从节点的目的不同,下线故障主节点是为了在从节点切换为新主节点前,将故障主节点上的连接中断,以防止数据双写导致数据不一致,是否下线故障主节点取决于是否会发生切换;因此,对于故障主节点,如果发生故障切换,则根据主节点的处理方式(即第一处理方式)对其处理,判断是否将故障主节点下线。而下线故障从节点是为了防止连接到从节点的业务读取到陈旧的数据;是否下线故障从节点取决于该从节点到主节点之间的复制链是否正常;所以其对应的处理方式也不同。在本实施例中,如果确定节点类型为主节点,启用主节点辅助检测模块,主节点辅助检测模块采用主节点对应的故障处理方式(即第一处理方式)处理故障主节点;如果确定故障节点为从节点,启用从节点辅助检测模块,从节点辅助检测模块采用从节点对应的故障处理方式(即第二处理方式)处理故障从节点。
在依据第一处理方式对故障主节点进行处理时,可以采用以下方式,但不限于此:确定检测时间,在检测时间内获取节点属性为参与故障切换的多个第一从节点的关键健康指标,其中,第一从节点为允许连接层直接访问的从节点;如果多个第一从节点中,存在关键健康指标为达标的第一从节点,确定故障主节点的关键健康指标为不达标的持续不达标时间,确定持续不达标时间与数据库的故障容忍时间的第一差值;如果第一差值小于或者等于检测时间的预设倍数,确定将故障主节点下线;如果第一差值大于检测时间的预设倍数,重新获取多个第一从节点的关键健康指标;如果多个第一从节点中,不存在关键健康指标为达标的第一从节点,记录故障主节点的持续不达标时间,并重新获取多个第一从节点的关键健康指标。
以下结合图4所示场景,说明处理故障主节点的流程,在本图4所示的实施例中,主节点辅助检测模块采用主节点对应的故障处理方式处理故障主节点:确定检测周期(即检测时间),在检测周期内获取,与主节点之间存在通信关系的,且连接层能够直接访问的所有从节点(即第一从节点)的关键健康指标,并判断是否存在关键健康指标达标的从节点。如果存在,说明有健康的可切换的从节点,此时,在检测周期内,将与主节点之间存在通信关系的,且连接层能够直接访问的所有从节点(即第一从节点)中,关键健康指标不达标的从节点的不达标持续时间累加;并得到故障容忍时间与上述累加结果之间的差值(即第一差值)。如果上述差值(即第一差值)小于或者等于检测时间的预设倍数,比如上述差值小于等于检测周期的两倍,则将故障主节点下线,主节点辅助检测模块结束运行;如果上述差值(即第一差值)大于检测时间的预设倍数,比如上述差值大于检测周期的两倍,重新获取与主节点存在通信关系的所有从节点的关键健康指标。如果不存在,说明连接层能够直接访问的,与主节点之间存在通信关系的所有从节点(即第一从节点)中的关键健康指标达标均不达标,此时,保留上述过程中记录的,故障主节点的关键健康指标不达标的持续时间,并进入下一个循环中重新获取与主节点存在通信关系的所有从节点的关键健康指标,在这个新的循环中,在上述保留的连故障主节点的关键健康指标不达标的持续时间的基础上,对其关键健康指标不达标的时间进行累加。
可以理解地,采用第一处理方式的实现过程除了采用上述过程之外,还可以表现为以下实现过程:在检测时间内获取节点属性为参与故障切换的多个第二从节点的关键健康指标,其中,第二从节点为不允许连接层直接访问的从节点;如果多个第二从节点中,存在关键健康指标为达标的第二从节点,且第一差值小于或者等于检测时间的预设倍数,确定将故障主节点下线;如果多个第二从节点中,存在关键健康指标为达标的第二从节点,且第一差值大于检测时间的预设倍数,重新获取多个第二从节点的关键健康指标;如果多个第二从节点中,不存在关键健康指标为达标的第二从节点,记录故障主节点的持续不达标时间,并重新获取多个第一从节点和第二从节点的关键健康指标。
需要注意的是,如果连接层能够直接访问的,与主节点之间存在通信关系的所有从节点(即第一从节点)的关键健康指标达标均不达标;还可能是存在连接层无法直接访问的,与主节点存在通信关系的从节点,这类从节点称为不可达节点(即第二从节点);不可达节点存在的原因包括:这类从节点自身存在问题,或者这类节点与连接层之间的网络有问题;此时,获取这类节点的上/下级节点,通过这类节点的上/下级节点去访问不可达节点,并获得不可达节点(即第二从节点)的关键健康指标,具体的,连接层在初始化时会生成一份包含了数据库集群中每个节点的标识和集群中每个节点的上级节点的信息的拓扑文件,其中,上述标识可能是节点的IP,或者节点的端口,也可能是其他能唯一区别节点的信息。如图4所示,通过登录不可达节点的上级/下级节点,访问不可达节点(即第二从节点),以获得其关键健康指标,具体的,如果能够成功登录到不可达节点的上级节点,则从上级节点获取不可达节点(即第二从节点)的关键健康指标;否则,如果能够成功登录到不可达节点的下级节点,则从下级节点获取不可达节点(即第二从节点)的关键健康指标。从上述拓扑文件中获取故障主节点的上/下级节点的方法如下:当故障节点为主节点时,确定其上级节点为空,在拓扑文件中将其上级节点标识为null;此时获取不可达节点的下级节点,其下级节点是发生故障切换前的拓扑文件中,“上级节点”字段的标识为null或故障节点本身的标识,则通过计算命令“访问上级节点标识(id)为null和上级节点标识(id)为X的节点,并且派出不可达节点本身”确定不可达节点的上级节点。
如果上述不可达节点中存在关键健康指标达标的节点,且上述故障主节点的关键健康指标的持续不达标时间与数据库的故障容忍时间的差值(即第一差值)小于或者等于检测时间的预设倍数,比如上述差值小于等于检测周期的两倍,则将故障主节点下线,主节点辅助检测模块结束运行;如果上述差值(即第一差值)大于检测时间的预设倍数,比如上述差值大于检测周期的两倍,重新获取与主节点存在通信关系的所有从节点的关键健康指标。如果不可达节点(即第二从节点)中不存在关键健康指标达标的节点,存在两种情况,一种是主节点检测模块已经获取了与故障主节点存在通信关系的所有从节点(包括允许连接层直接访问的从节点和不允许连接层直接访问的从节点)的关键健康指标,则在故障主节点的关键健康指标的持续不达标时间与故障容忍时间的差值(即第一差值和)小于或者等于预设倍数(如两倍)的检测周期的情况下,将主节点下线;在所有节点的关键健康指标的持续不达标时间与故障容忍时间的差值(即第一差值)大于预设倍数(如两倍)的检测周期的情况下,重新获取所有从节点(包括第一从节点和第二从节点)的关键健康指标;如果上述节点(即第二从节点)中也不存在关键健康指标达标的节点,记录故障主节点的关键健康指标的持续不达标时间,并重新获取与故障主节点存在通信关系的节点(包括第一从节点和第二从节点)的信息。
另一种是主节点检测模块未获取与故障主节点存在通信关系的所有从节点(包括允许连接层直接访问的从节点和不允许连接层直接访问的从节点)的关键健康指标,说明主节点检测模块无法通过以上的方式确认与故障主节点存在通信关系的从节点中,是否存在参与故障切换的从节点,此时,启动主节点服务策略(即主节点策略),通过主节点策略对故障主节点进行处理。其中,利用主节点策略对故障主节点进行处理,包括以下步骤:确定数据库的服务连续性和数据库的数据一致性的优先级;如果服务连续性的优先级高于数据一致性的优先级,确定不将故障主节点下线,并重新获取多个第一从节点和第二从节点的关键健康指标;如果服务连续性的优先级低于数据一致性的优先级,且第一差值小于或者等于检测时间的预设倍数,确定将故障主节点下线;如果服务连续性的优先级低于数据一致性的优先级,且第一差值大于检测时间的预设倍数,确定不将故障主节点下线,并进入下一个循环,重新获取多个第一从节点和第二从节点的关键健康指标。
如图4所示,通过主节点服务策略(即主节点策略)对故障主节点进行处理的方法如下:对于故障主节点设置两种策略,1)如果对于数据库来说,其服务连续性的优先级高于数据一致性,即对于该数据库,要求其保证服务连续性,此时,不下线故障主节点,并进入一个新的循环流程,重新获取与故障主节点存在通信关系的从节点的关键健康质指标,并进行后续的判断步骤;2)如果对于数据库来说,其数据一致性的优先级高于服务连续性,即对于该数据库,要求其保证数据的一致,此时,为避免出现双写情况,如果故障主节点的关键健康指标的为不达标的持续不达标时间小于或者等于预设倍数(如两倍)的检测周期的情况下,将故障主节点下线;在所有节点的关键健康指标的持续不达标时间与故障容忍时间的差值(即第一差值)大于预设倍数(如两倍)的检测周期的情况下,重新获取所有从节点(包括第一从节点和第二从节点)的关键健康指标。
还需要说明的是,在上述实施中提及的,如图4所示,在采用主节点对应的故障处理方式(即第一处理方式)处理故障主节点的情况下,如果确定将主节点下线,则将主节点下线后,主节点辅助检测模块停止运行,并且在主节点辅助检测模块停止运行时,将由主节点辅助检测模块或者数据库中故障检测模块中记录的主节点关键健康指标不达标时间清零。
在本申请一些可选的实施例中,依据第二处理方式对故障从节点进行处理,包括以下步骤:获取故障从节点的复制链上,允许连接层访问的且节点属性为参与故障切换的多个第三从节点的信息;如果根据多个第三从节点的信息,确定多个第三从节点中存在复制中断的第三从节点,确定故障从节点的复制链中断的持续时间;确定故障从节点的复制链中断的持续时间与数据库的故障容忍时间的第二差值;如果第二差值为正数或零,确定将故障从节点下线;如果第二差值为负数,确定重新获取故障从节点的复制链的信息;如果根据多个第三从节点的信息,确定多个第三从节点中不存在复制中断的第三从节点,将故障从节点的复制链中断的持续时间清零,并重新获取故障从节点的复制链的信息。
图5是处理故障从节点的流程图,在本实施例中,从节点辅助检测模块采用从节点对应的故障处理方式处理故障主节点的方法如图5所示,从上述实施例提及的,连接层在初始化时生成的拓扑文件中获取该故障从节点的复制链信息,检测故障从节点的复制链上的,且允许连接层直接访问的所有从节点(即第三从节点)是否复制正常,并确认上述节点(即第三从节点)中是否存在复制中断的从节点。如果存在,说明该故障从节点的故障原因是复制链中断,此时,获取复制链在从节点辅助检测模块的检测时间中的持续中断时间,并获取复制链持续中断时间与复制链中断的容忍时间(即对于从节点的数据库故障容忍时间)的差值(即第二差值),如果上述差值(即第二差值)大于或者等于零(即第二差值为正数或零),确定将故障从节点下线,从节点辅助检测模块停止运行;如果上述差值(即第二差值)小于零(即第二差值为负数),重新从拓扑文件中获取故障从节点的复制链的信息;如果在故障从节点的复制链上的,允许连接层访问的所有从节点(即第三从节点)中,均不存在复制中断的从节点,说明上述从节点是完好的,此时,将上述记录的复制链持续中断时间清零,并进入下一个循环,重新从拓扑文件中获取该故障从节点的复制链信息,并检测故障从节点的复制链上的,且允许连接层直接访问的所有从节点(即第三从节点)是否复制正常。
根据本申请一些优选的实施例,依据第二处理方式对故障从节点进行处理,还包括以下方法:故障从节点的复制链上,不允许连接层访问的且节点属性为参与故障切换的多个第四从节点的信息;如果根据多个第四从节点的信息,确定多个第四从节点中存在复制中断的第四从节点,确定第四从节点的复制中断的持续时间;且第二差值为正数或零,确定将故障从节点下线;如果根据多个第四从节点的信息,确定多个第四从节点中存在复制中断的第四从节点,且第二差值为负数,确定重新获取故障从节点的复制链的信息;如果根据多个第四从节点的信息,确定多个第四从节点中不存在复制中断的第四从节点,将故障从节点的复制链中断的持续时间清零,并重新获取故障从节点的复制链的信息。
在一些优选的实施例中,如果连接层能够直接访问的,在故障从节点的复制链上的从节点(即第三从节点)中不存在复制中断的从节点(即第三从节点);还可能是故障从节点的复制链上存在连接层无法直接访问的从节点,这类节点称为不可达节点(即第四从节点),此时,如图5所示,获取不可达节点的拓扑文件并从中获取其上/下级节点的相关信息,通过上述不可达节点(即第四从节点)的上/下级节点获取故障从节点的复制链信息,具体的,如果成功登录不可达节点的上级节点,则从上级节点获取故障从节点的复制链的信息;如果成功登录不可达节点的下级节点,则从下级节点获取故障从节点的复制链的信息。从上述拓扑文件中获取故障从节点的上/下级节点的方法如下:当故障节点为从节点时,如果在发生切换前的拓扑文件中记载的,该故障从节点的“上级节点”字段不是空(null),则将故障从节点的上级节点确定为拓扑文件中记载的,该故障从节点的上级节点;如果在发生切换前的拓扑文件中记载的,该故障从节点的“上级节点”字段是空(null),则将故障从节点的上级节点确定为此刻与故障从节点存在通信关系的主节点。故障从节点的下级节点则通过计算命令“上级节点字段的标识为故障从节点本身对应的节点标识,且排除故障从节点本身”在来发生切换前的拓扑文件中确定。获取故障从节点的上/下级节点的复制链的信息的方法为:,反复递归调用计算上级节点的方法,直到计算上级节点的结果为主节点为止,就可以得出故障从节点的复制链信息。
接下来,判断故障从节点的复制链上的,不允许连接层直接访问的不可达节点(即第四从节点)中是否存在复制中断的节点,如果存在,说明该节点的复制链中断,此时,获取该故障从节点的复制链中断的持续时间,以及复制链中断的持续时间与复制链中断的容忍时间(即数据库故障容忍时间)之间的差值(即第二差值);如果上述差值(即第二差值)大于或者等于零(即第二差值为正数或零),确定将故障从节点下线,从节点辅助检测模块停止运行;如果上述差值(即第二差值)小于零(即第二差值为负数),重新从拓扑文件中获取故障从节点的复制链的信息。如果不可达节点(即第四从节点)中不存在复制中断的节点,存在两种情况:第一种是从节点检测模块已经获取了与故障从节点存在通信关系的所有从节点(包括允许连接层直接访问的从节点和不允许连接层直接访问的从节点)的复制链的信息,则在所有节点的复制链中断的持续时间与复制链中断的容忍时间的差值(即第二差值)为正数或零的情况下,将故障从节点下线;在所有节点的复制链中断的持续时间与复制链中断的容忍时间的差值(即括第二差值)为负数的情况下,重新获取所有从节点(包括第三从节点和第四从节点)的复制链的信息;如果上述节点中(包括第三从节点和第四从节点)不存在关键健康指标达标的节点,将上述记录的故障从节点的复制中断时间清零,并进入下一循环,重新获取所有从节点(包括第三从节点和第四从节点)的复制链的信息。
另一种是从节点检测模块未获取与故障从节点存在通信关系的所有从节点(包括允许连接层直接访问的从节点和不允许连接层直接访问的从节点)的复制链的信息,说明从节点检测模块无法通过以上的方式确认与故障从节点存在通信关系的从节点中,是否存在复制中断的从节点,此时,启动从节点服务策略(即从节点策略),通过从节点策略对故障从节点进行处理。其中,依据从节点策略对故障从节点进行处理,包括以下步骤:确定数据库的服务连续性和数据库的数据一致性的优先级;如果服务连续性的优先级高于数据一致性的优先级,确定不将故障从节点下线,并将故障从节点的复制链中断的持续时间清零,重新获取故障从节点的复制链的信息;如果服务连续性的优先级低于数据一致性的优先级,且第二差值为负数,确定重新获取故障从节点的复制链的信息;如果服务连续性的优先级低于数据一致性的优先级,且第二差值为正数或零,确定将故障从节点下线。
在另一些优选的实施例中,如图5所示,通过从节点服务策略(即从节点策略)对故障从节点进行处理的方法如下:对于故障从节点设置两种策略,1)如果对于数据库来说,其服务连续性的优先级高于数据一致性,即对于该数据库,要求其保证服务连续性,此时,不下线故障从节点,并将上述故障从节点的复制链中断的持续时间清零,进入一个新的循环重新获取故障从节点的复制链的信息;这种策略应用于读业务对数据实时性要求不高的数据库;2)如果对于数据库来说,其数据一致性的优先级高于服务连续性,即对于该数据库,要求其保证数据的一致,此时,为避免出现双写情况,在故障从节点的复制链接中断的持续时间与数据库故障容忍时间的差值(即第二差值)大于等于预设值时,如大于等于零时,将故障从节点下线;而在故障从节点的复制链接中断的持续时间与数据库故障容忍时间的差值(即第二差值)小于预设值,如小于零的区间,重新获取故障从节点的复制链的信息,并进行后续判断步骤;这种策略应用于读业务对数据的实时性要求较高的数据库。
还需要说明的是,在上述实施中提及的,如图5所示,在采用从节点对应的故障处理方式(即第二处理方式)处理故障从节点的情况下,如果确定将从节点下线,则将从节点下线后,从节点辅助检测模块停止运行,并且在从节点辅助检测模块停止运行时,将由从节点辅助检测模块或者数据库中故障检测模块中记录的从节点的复制链中断的持续时间清零。
图6是根据本申请实施例的处理故障节点的装置的结构图,该装置应用于连接层,如图6所示,该装置包括:获取模块60,用于获取数据库中节点的信息和数据库的故障容忍时间,其中,节点的信息包括:节点类型,节点的关键健康指标,其中,节点类型包括:主节点和从节点,节点属性用于指示节点为参与故障切换的节点,或者节点为不参与故障切换的节点;判断模块62,用于根据节点的关键健康指标判断节点是否为故障节点,如果节点的关键健康指标为不达标,确定节点为故障节点,如果节点的关键健康指标为达标,确定节点不是故障节点;处理模块64,用于在节点为故障节点时,根据节点属性,节点类型和数据库的故障容忍时间,确定故障节点的处理方式,并依据处理方式对故障节点进行处理。
需要说明的是,图6所示实施例的优选实施方式可以参见图3所示实施例的相关描述,此处不再赘述。
图7是上述装置在连接层检测数据库节点的原理图,如图7所示,获取模块60周期性的获取每个数据库节点的状态信息(包括节点的关键健康指标),判断模块62对节点的关键健康指标进行判断,如果判断结果为达标,终止故障主/从节点的辅助检测模块,将上述判断结果为达标的数据库节点上线;如果判断结果为不达标,判断模块62将检测故障主/从节点的辅助检测模块是否在运行,并在上述辅助检测模块未运行的情况下,启动故障主/从节点的辅助检测模块。
图8是在主节点只和仲裁节点/控制节点网络隔离的情况下处理故障节点的示意图,如图8所示,主节点不能正常访问仲裁节点/第三方控制节点,从节点1和从节点2可以正常访问仲裁节点/第三方控制节点,故根据本申请提供的方法,判断从节点的关键健康指标是达标的,因此,将故障主节点切换为从节点1或者从节点2,并在切换前将主节点下线。
图9是在主节点只和其他数据库节点网络隔离的情况下处理故障节点的示意图,如图9所示,主节点可以正常访问仲裁节点/第三方控制节点,故根据本申请提供的方法判断主节点的关键健康指标是达标的,因此,不会将主节点下线。
图10是在主节点和仲裁节点/控制节点以及其他数据库节点网络隔离的情况下处理故障节点的示意图,如图10所示,从节点1和从节点2可以正常访问仲裁节点/第三方控制节点,故根据本申请提供的方法,判断从节点的关键健康指标是达标的,因此,将故障主节点切换为从节点1或者从节点2,并在切换前将主节点下线。
图11是在连接层无法访问从节点,主节点无法访问仲裁节点/第三方控制节点的情况下处理故障节点的示意图,如图11所示,从节点1和从节点2可以正常访问仲裁节点/第三方控制节点,故根据本申请提供的方法判断从节点的关键健康指标是达标的,所以将主节点下线,并切换到从节点1或从节点2。其中,获取从节点1和从节点2的关键健康指标的方法为:由于连接层无法获取从节点1和从节点2的关键健康指标,需要通过从节点1和从节点2的上级节点(即图11中的主节点)获取从节点1和从节点2的关键健康指标。
图12是在仲裁节点/控制节点网络故障的情况下处理故障节点的示意图,如图12所示,由于仲裁节点/第三方控制节点故障,所有节点的关键健康指标都不达标,所以是不会发生切换的,但是数据库自身是可以提供正常业务访问的,故不应该下线任何节点。根据本申请提供的方法,由于检测到没有关键健康指标达标的从节点,故判断并不会发生切换,所以不会将主节点下线。
图13是在连接层无法访问从节点,从节点也无法被其上下级节点访问的情况下处理故障节点的示意图,如图13所示,由于无法获取到从节点1和从节点2的关键健康指标,因此无法判断最终是否会发生切换,根据本申请提供的方法,故障节点是主节点,启动主节点服务策略来决定是否将主节点下线。
图14是在从节点3的健康指标不达标,且复制链是中断的情况下处理故障节点的示意图,如图14所示,由于从节点3的关键健康指标不达标,启动从节点辅助检测模块,从节点辅助检测模块调用拓扑识别模块计算出从节点3的复制链是主->从节点1->从节点3;然后会去检查从节点1和从节点3的复制情况,发现从节点1的复制链是中断的,所以从节点3的复制链也是中断的,将故障的从节点3下线。
图15是在从节点3的健康指标不达标,且连接层无法访问复制链上的从节点1的情况下处理故障节点的示意图,如图15所示,,由于从节点3的关键健康指标不达标,启动从节点辅助检测模块,从节点辅助检测模块调用拓扑识别模块计算出从节点3的复制链是主->从节点1->从节点3;然后会去检查从节点1和从节点3的复制情况,在判断从节点1的复制情况时,连接层访问失败,根据本申请提供的方法会通过从节点1的上/下级节点去获取从及节点1的复制情况,通过从节点1的下级节点,即从节点3获取到了从节点1的复制情况为中断,故从节点3的复制链为中断,会将故障从节点3下线。
根据本实施例提供的上述方法,定义了一套接口标准,以适配不通的故障切换方案和架构;根据节点关键健康指标和主/从辅助检测模块相结合的方法来综合判断是否下线数据库节点;能够及时发现故障节点,精确识别故障场景,避免不必要的节点下线导致不必要的服务中断;当连接层无法直接获取从节点关键健康指标时,会通过上级和下级节点去访问,扩展了信息获取渠道;增添了主节点和从节点的服务策略,使得整个检测流程闭环;能够根据初始化时生成的原始拓扑结构文件得到最新的拓扑信息,无需人工干预。
本申请实施例还提供了一种非易失性存储介质,该非易失性存储介质中存储有程序,其中,在程序运行时控制该非易失性存储介质所在设备执行上述的处理故障节点的方法。
上述非易失性存储介质用于存储执行以下功能的程序:获取数据库中节点的信息和数据库的故障容忍时间,其中,节点的信息包括:节点类型,节点的关键健康指标,节点属性,其中,节点类型包括:主节点和从节点,节点属性用于指示节点为参与故障切换的节点,或者节点为不参与故障切换的节点;根据数据库的故障容忍时间和节点的关键健康指标,判断节点是否为故障节点;如果节点为故障节点,根据节点属性和节点类型确定故障节点的处理方式,并依据处理方式对故障节点进行处理。
本申请实施例的还提供了一种电子设备,包括:存储器和处理器,该处理器用于运行存储在存储器中的程序,其中,程序运行时执行上述的处理故障节点的方法。
上述电子设备中的处理器用于运行执行以下功能的程序:获取数据库中节点的信息和数据库的故障容忍时间,其中,节点的信息包括:节点类型,节点的关键健康指标,节点属性,其中,节点类型包括:主节点和从节点,节点属性用于指示节点为参与故障切换的节点,或者节点为不参与故障切换的节点;根据数据库的故障容忍时间和节点的关键健康指标,判断节点是否为故障节点;如果节点为故障节点,根据节点属性和节点类型确定故障节点的处理方式,并依据处理方式对故障节点进行处理。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对相关技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

Claims (11)

1.一种处理故障节点的方法,其特征在于,所述方法应用于连接层,包括:
获取数据库中节点的信息和所述数据库的故障容忍时间,其中,所述节点的信息包括:节点类型,节点的关键健康指标,节点属性,其中,所述节点类型包括:主节点和从节点,所述节点属性用于指示所述节点为参与故障切换的节点,或者所述节点为不参与所述故障切换的节点;
根据所述节点的关键健康指标,判断所述节点是否为故障节点,如果所述节点的关键健康指标为不达标,确定所述节点为故障节点,如果所述节点的关键健康指标为达标,确定所述节点不是所述故障节点;
如果所述节点为故障节点,根据所述节点属性,所述节点类型和所述数据库的故障容忍时间,确定所述故障节点的处理方式,并依据所述处理方式对所述故障节点进行处理。
2.根据权利要求1所述的方法,其特征在于,根据所述节点属性,所述节点类型和所述数据库的故障容忍时间,确定所述故障节点的处理方式,并依据所述处理方式对所述故障节点进行处理,包括:
如果所述故障节点类型为主节点,根据所述故障容忍时间确定对故障主节点的第一处理方式,依据所述第一处理方式对所述故障主节点进行处理;
如果所述故障节点类型为从节点,根据所述故障容忍时间确定对故障从节点的第二处理方式,依据所述第二处理方式对所述故障从节点进行处理。
3.根据权利要求2所述的方法,其特征在于,依据所述第一处理方式对所述故障主节点进行处理,包括:
确定检测时间,在所述检测时间内获取所述节点属性为参与故障切换的多个第一从节点的关键健康指标,其中,所述第一从节点为允许所述连接层直接访问的从节点;
如果所述多个第一从节点中,存在所述关键健康指标为达标的所述第一从节点,确定所述故障主节点的关键健康指标为不达标的持续不达标时间,确定所述持续不达标时间与所述数据库的故障容忍时间的第一差值;
如果所述第一差值小于或者等于所述检测时间的预设倍数,确定将所述故障主节点下线;
如果所述第一差值大于所述检测时间的预设倍数,重新获取多个所述第一从节点的关键健康指标;
如果多个所述第一从节点中,不存在所述关键健康指标为达标的所述第一从节点,记录所述故障主节点的持续不达标时间,并重新获取多个所述第一从节点的关键健康指标。
4.根据权利要求3所述的方法,其特征在于,依据所述第一处理方式对所述故障主节点进行处理,还包括:
在所述检测时间内获取所述节点属性为参与故障切换的多个第二从节点的关键健康指标,其中,所述第二从节点为不允许所述连接层直接访问的从节点;
如果所述多个第二从节点中,存在所述关键健康指标为达标的所述第二从节点,且所述第一差值小于或者等于所述检测时间的预设倍数,确定将所述故障主节点下线;
如果所述多个第二从节点中,存在所述关键健康指标为达标的所述第二从节点,且所述第一差值大于所述检测时间的预设倍数,重新获取多个所述第二从节点的关键健康指标;
如果所述多个第二从节点中,不存在所述关键健康指标为达标的所述第二从节点,记录所述故障主节点的持续不达标时间,并重新获取多个所述第一从节点和所述第二从节点的关键健康指标。
5.根据权利要求4所述的方法,其特征在于,依据所述第一处理方式对所述故障主节点进行处理,还包括:如果所述多个第二从节点中不存在所述关键健康指标为达标的所述第二从节点,确定利用主节点策略对所述故障主节点进行处理,其中,利用所述主节点策略对所述故障主节点进行处理,包括:
确定所述数据库的服务连续性和所述数据库的数据一致性的优先级;
如果所述服务连续性的优先级高于所述数据一致性的优先级,确定不将所述故障主节点下线,并重新获取多个所述第一从节点和所述第二从节点的关键健康指标;
如果所述服务连续性的优先级低于所述数据一致性的优先级,且所述第一差值小于或者等于所述检测时间的预设倍数,确定将所述故障主节点下线;
如果所述服务连续性的优先级低于所述数据一致性的优先级,且所述第一差值大于所述检测时间的预设倍数,确定不将所述故障主节点下线,并重新获取多个所述第一从节点和所述第二从节点的关键健康指标。
6.根据权利要求2所述的方法,其特征在于,依据所述第二处理方式对所述故障从节点进行处理,包括:
获取所述故障从节点的复制链上,允许所述连接层访问的且所述节点属性为参与故障切换的多个第三从节点的信息;
如果根据所述多个第三从节点的信息,确定所述多个第三从节点中存在复制中断的第三从节点,确定所述故障从节点的复制链中断的持续时间;
确定所述故障从节点的复制链中断的持续时间与所述数据库的故障容忍时间的第二差值;
如果所述第二差值为正数或零,确定将所述故障从节点下线;
如果所述第二差值为负数,确定重新获取所述故障从节点的复制链的信息;
如果根据所述多个第三从节点的信息,确定所述多个第三从节点中不存在所述复制中断的第三从节点,将所述故障从节点的复制链中断的持续时间清零,并重新获取所述故障从节点的复制链的信息。
7.根据权利要求6所述的方法,其特征在于,依据所述第二处理方式对所述故障从节点进行处理,还包括:
获取所述故障从节点的复制链上,不允许所述连接层访问的且所述节点属性为参与故障切换的多个第四从节点的信息;
如果根据所述多个第四从节点的信息,确定所述多个第四从节点中存在复制中断的第四从节点,且所述第二差值为正数或零,确定将所述故障从节点下线;
如果根据所述多个第四从节点的信息,确定所述多个第四从节点中存在复制中断的第四从节点,且所述第二差值为负数,确定重新获取所述故障从节点的复制链的信息;
如果根据所述多个第四从节点的信息,确定所述多个第四从节点中不存在复制中断的第四从节点,将所述故障从节点的复制链中断的持续时间清零,并重新获取所述故障从节点的复制链的信息。
8.根据权利要求7所述的方法,其特征在于,依据所述第二处理方式对所述故障从节点进行处理,还包括:如果根据所述多个第四从节点的信息,确定所述多个第四从节点中不存在复制中断的第四从节点,依据从节点策略对所述故障从节点进行处理,其中,依据所述从节点策略对所述故障从节点进行处理,包括:
确定所述数据库的服务连续性和所述数据库的数据一致性的优先级;
如果所述服务连续性的优先级高于所述数据一致性的优先级,确定不将所述故障从节点下线,并将所述故障从节点的复制链中断的持续时间清零,重新获取故障从节点的复制链的信息;
如果所述服务连续性的优先级低于所述数据一致性的优先级,且所述第二差值为负数,确定重新获取所述故障从节点的复制链的信息;
如果所述服务连续性的优先级低于所述数据一致性的优先级,且所述第二差值为正数或零,确定将所述故障从节点下线。
9.一种处理故障节点的装置,其特征在于,所述装置应用于连接层,包括:
获取模块,用于获取数据库中节点的信息和所述数据库的故障容忍时间,其中,所述节点的信息包括:节点类型,节点的关键健康指标,其中,所述节点类型包括:主节点和从节点,所述节点属性用于指示所述节点为参与故障切换的节点,或者所述节点为不参与所述故障切换的节点;
判断模块,用于根据所述节点的关键健康指标判断所述节点是否为故障节点,如果所述节点的关键健康指标为不达标,确定所述节点为故障节点,如果所述节点的关键健康指标为达标,确定所述节点不是所述故障节点;
处理模块,用于在所述节点为故障节点时,根据所述节点属性,所述节点类型和所述数据库的故障容忍时间,确定所述故障节点的处理方式,并依据所述处理方式对所述故障节点进行处理。
10.一种非易失性存储介质,其特征在于,所述非易失性存储介质中存储有程序,其中,在所述程序运行时控制所述非易失性存储介质所在设备执行权利要求1至8中任意一项所述的处理故障节点的方法。
11.一种电子设备,其特征在于,包括:存储器和处理器,所述处理器用于运行存储在所述存储器中的程序,其中,所述程序运行时执行权利要求1至8中任意一项所述的处理故障节点的方法。
CN202211353137.6A 2022-11-01 2022-11-01 处理故障节点的方法及装置、非易失性存储介质、处理器 Active CN115509796B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211353137.6A CN115509796B (zh) 2022-11-01 2022-11-01 处理故障节点的方法及装置、非易失性存储介质、处理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211353137.6A CN115509796B (zh) 2022-11-01 2022-11-01 处理故障节点的方法及装置、非易失性存储介质、处理器

Publications (2)

Publication Number Publication Date
CN115509796A true CN115509796A (zh) 2022-12-23
CN115509796B CN115509796B (zh) 2023-03-10

Family

ID=84513050

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211353137.6A Active CN115509796B (zh) 2022-11-01 2022-11-01 处理故障节点的方法及装置、非易失性存储介质、处理器

Country Status (1)

Country Link
CN (1) CN115509796B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012238083A (ja) * 2011-05-10 2012-12-06 Nec Corp データベースシステム、マスタースレーブ管理方法およびマスタースレーブ管理プログラム
CN104252500A (zh) * 2013-06-29 2014-12-31 北京新媒传信科技有限公司 一种数据库管理平台的故障修复方法和装置
CN108599996A (zh) * 2018-04-03 2018-09-28 武汉斗鱼网络科技有限公司 数据库集群的故障处理方法、装置及终端
CN111679925A (zh) * 2019-03-11 2020-09-18 阿里巴巴集团控股有限公司 数据库故障处理方法、装置、计算设备和存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012238083A (ja) * 2011-05-10 2012-12-06 Nec Corp データベースシステム、マスタースレーブ管理方法およびマスタースレーブ管理プログラム
CN104252500A (zh) * 2013-06-29 2014-12-31 北京新媒传信科技有限公司 一种数据库管理平台的故障修复方法和装置
CN108599996A (zh) * 2018-04-03 2018-09-28 武汉斗鱼网络科技有限公司 数据库集群的故障处理方法、装置及终端
CN111679925A (zh) * 2019-03-11 2020-09-18 阿里巴巴集团控股有限公司 数据库故障处理方法、装置、计算设备和存储介质

Also Published As

Publication number Publication date
CN115509796B (zh) 2023-03-10

Similar Documents

Publication Publication Date Title
CN108958970B (zh) 一种数据恢复方法、服务器和计算机可读介质
CN109726046B (zh) 机房切换方法及切换装置
US20070288585A1 (en) Cluster system
CN106062717A (zh) 一种分布式存储复制系统和方法
US20130346790A1 (en) Non-disruptive controller replacement in network storage systems
CN112118130B (zh) 自适应的分布式缓存主备状态信息切换方法及装置
CN109446169B (zh) 一种双控磁盘阵列共享文件系统
US20080288812A1 (en) Cluster system and an error recovery method thereof
CN104036043A (zh) 一种mysql高可用的方法及管理节点
CN116107828A (zh) 主节点选择方法、分布式数据库及存储介质
CN113377702B (zh) 两节点集群启动的方法及装置、电子设备和存储介质
CN115509796B (zh) 处理故障节点的方法及装置、非易失性存储介质、处理器
CN109189854B (zh) 提供持续业务的方法及节点设备
CN105959145A (zh) 一种适用高可用性集群的并行管理服务器的方法及系统
CN110661599B (zh) 一种主、备节点间的ha实现方法、装置及存储介质
CN112486718A (zh) 数据库故障自动切换方法、装置和计算机存储介质
CN107181608B (zh) 一种恢复服务及性能提升的方法及运维管理系统
US7107485B2 (en) Method, apparatus, and computer readable medium for managing multiple system
CN115268785A (zh) 一种应用于分布式存储系统的管理方法、装置及存储介质
JP3967509B2 (ja) 最後に処理を行っていたサーバ計算機を判定するプログラムを記録した記録媒体、及び高可用性計算機システム
CN111124757A (zh) 一种分布式事务数据库的数据节点心跳检测算法
CN108897645B (zh) 一种基于备用心跳磁盘的数据库集群容灾方法和系统
CN115757631A (zh) 数据库切换方法、装置、终端及存储介质
JP5594668B2 (ja) ノード、クラスタリングシステム、クラスタリングシステムの制御方法、およびプログラム
CN104683153A (zh) 一种集群路由器主备mpu控制方法及其系统

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