CN109728949A - 一种集群启动方法及装置 - Google Patents
一种集群启动方法及装置 Download PDFInfo
- Publication number
- CN109728949A CN109728949A CN201811602329.XA CN201811602329A CN109728949A CN 109728949 A CN109728949 A CN 109728949A CN 201811602329 A CN201811602329 A CN 201811602329A CN 109728949 A CN109728949 A CN 109728949A
- Authority
- CN
- China
- Prior art keywords
- cluster
- pxc
- starting
- clustered
- node
- 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
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明提供一种集群启动方法及装置,该方法包括:当目标集群节点非首次启动,且确定PXC集群中不存在已经完成启动的其他集群节点时,确定自身的安全自举标记是否为第一值;若不为第一值,则获取PXC集群中其他集群节点的安全自举标记;若PXC集群中的其他集群节点中不存在安全自举标记为第一值的集群节点,则根据自身的第一全局事务序列号以及所述PXC集群中其他集群节点的第二全局事务序列号,确定自身的启动方式,并根据所确定的启动方式启动。应用本发明实施例可以提高PXC集群重启的成功率和效率。
Description
技术领域
本发明涉及网络通信技术领域,尤其涉及一种集群启动方法及装置。
背景技术
PXC(Percona XtraDB Cluster,一种数据库集群)集群是一个基于MYSQL(一种关系数据库管理系统)开发的高可用数据库集群,可以实现PXC集群运行时滚动升级修复,即升级时数据库服务不中断。
PXC集群节点(本文中简称为集群节点)启动时涉及两种角色,一种是采用自举(Bootstrap)方式启动的集群节点,称为贡献者(Donor)节点,另一种是参与者(Joiner)节点,其中,贡献者节点用于向参与者节点提供数据,参与者节点需要从贡献者节点中获取数据,实现数据同步。
对于非首次启动的集群节点,可以通过读取自身的状态文件grastate.dat中记录的安全自举标记(safe_to_bootstrap)的值确定是否可以采用自举方式启动;其中,当安全自举标记为1(即安全自举标记的值为1,下同)时,则表明该集群节点可以采用自举方式启动;当安全自举标记为0时,表明该集群节点不可以采用自举方式启动。
当集群节点正常关闭时,最后一个关闭的集群节点上安全自举标记为1,当PXC集群重启时,该集群节点自举启动,其他集群节点以参与者节点的方式启动。
然而实践发现,当PXC集群由于异常(如断电)发生重启时,各集群节点的安全自举标记均为0,从而各集群节点均无法自举启动,进而导致PXC集群重启失败,此时,需要用户(如管理员)人工介入,PXC集群重启效率较差。
发明内容
本发明提供一种集群启动方法及装置,以解决现有PXC集群启动方案中PXC集群由于异常发生重启时容易出现重启失败的问题。
第一方面,本发明提供一种集群启动方法,应用于PXC集群中的目标集群节点,所述方法包括:
当所述目标集群节点非首次启动,且确定所述PXC集群中不存在已经完成启动的其他集群节点时,确定自身的安全自举标记是否为第一值;
若不为所述第一值,则获取所述PXC集群中其他集群节点的安全自举标记;
若所述PXC集群中的其他集群节点中不存在安全自举标记为所述第一值的集群节点,则根据自身的第一全局事务序列号以及所述PXC集群中其他集群节点的第二全局事务序列号,确定自身的启动方式,并根据所确定的启动方式启动。
结合第一方面,在第一种可能的实现方式中,所述确定自身的安全自举标记是否为第一值之前,还包括:
当所述目标集群节点非首次启动时,向所述PXC集群中的其他集群节点发送服务启动状态查询消息;
接收所述PXC集群中的其他集群节点发送的服务启动状态应答消息;
根据接收到的服务启动状态应答消息中携带的服务启动状态确定所述PXC集群中是否存在已经完成启动的其他集群节点。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述服务启动状态包括完成启动、启动中或未启动;
所述根据接收到的服务启动状态应答消息中携带的服务启动状态确定所述PXC集群中是否存在已经完成启动的其他集群节点,包括:
当接收到携带的服务启动状态为完成启动的服务启动状态应答消息时,确定所述PXC集群中存在已经完成启动的其他集群节点;
当接收到的服务启动状态应答消息中携带的服务启动状态均为启动中或未启动时,确定所述PXC集群中不存在已经完成启动的其他集群节点。
结合第一方面,第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述方法还包括:
当所述目标集群节点非首次启动,且确定所述PXC集群中存在已经完成启动的其他集群节点时,以参与者节点方式启动。
结合第一方面,在第四种可能的实现方式中,所述获取所述PXC集群中其他集群节点的安全自举标记,包括:
向所述PXC集群中其他集群节点发送恢复信息查询消息;
接收所述PXC集群中其他集群节点发送的恢复信息应答消息;其中,所述恢复信息应答消息中携带有发送方节点的节点名称和安全自举标记;
获取所述恢复信息应答消息中携带的发送方节点的节点名称和安全自举标记。
结合第一方面的第四种可能的实现方式,在第五种可能的实现方式中,所述恢复信息应答消息中还携带有全局事务序列号;
所述根据自身的第一全局事务序列号以及所述PXC集群中其他集群节点的第二全局事务序列号,确定自身的启动方式,包括:
比较所述第一全局事务序列号以及所述第二全局事务序列号的大小;
若在全部全局事务序列号中所述第一全局事务序列号为最大值,则确定自身的启动方式为自举启动方式;
若在全部全局事务序列号中所述第一全局事务序列号为非最大值,则确定自身的启动方式为参与者节点方式。
第二方面,本发明提供一种集群启动装置,应用于PXC集群中的目标集群节点,所述装置包括:
确定单元,用于当所述目标集群节点非首次启动,且确定所述PXC集群中不存在已经完成启动的其他集群节点时,确定所述目标集群节点的安全自举标记是否为第一值;
获取单元,用于若所述目标集群节点的安全自举标记不为所述第一值,则获取所述PXC集群中其他集群节点的安全自举标记;
所述确定单元,还用于若所述PXC集群中的其他集群节点中不存在安全自举标记为所述第一值的集群节点,则根据自身的第一全局事务序列号以及所述PXC集群中其他集群节点的第二全局事务序列号,确定自身的启动方式;
启动单元,用于根据所确定的启动方式启动。
结合第二方面,在第一种可能的实现方式中,所述装置还包括:
第一发送单元,用于当所述目标集群节点非首次启动时,向所述PXC集群中的其他集群节点发送服务启动状态查询消息;
第一接收单元,用于接收所述PXC集群中的其他集群节点发送的服务启动状态应答消息;
所述确定单元,具体用于根据所述第一接收单元接收到的服务启动状态应答消息中携带的服务启动状态确定所述PXC集群中是否存在已经完成启动的其他集群节点。
结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述服务启动状态包括完成启动、启动中或未启动;
所述确定单元,具体用于当所述第一接收单元接收到携带的服务启动状态为完成启动的服务启动状态应答消息时,确定所述PXC集群中存在已经完成启动的其他集群节点;
当所述第一接收单元接收到的服务启动状态应答消息中携带的服务启动状态均为启动中或未启动时,确定所述PXC集群中不存在已经完成启动的其他集群节点。
结合第二方面、第二方面第一种可能的实现方式或第二方面第二种可能的实现方式,在第三种可能的实现方式中,所述启动单元,还用于当所述目标集群节点非首次启动,且确定所述PXC集群中存在已经完成启动的其他集群节点时,以参与者节点方式启动。
结合第二方面,在第四种可能的实现方式中,所述装置还包括:
第二发送单元,用于向所述PXC集群中其他集群节点发送恢复信息查询消息;
第二接收单元,用于接收所述PXC集群中其他集群节点发送的恢复信息应答消息;其中,所述恢复信息应答消息中携带有发送方节点的节点名称和安全自举标记;
所述获取单元,具体用于获取所述恢复信息应答消息中携带的发送方节点的节点名称和安全自举标记。
结合第二方面的第四种可能的实现方式,在第五种可能的实现方式中,所述恢复信息应答消息中还携带有全局事务序列号;
所述确定单元,具体用于比较所述第一全局事务序列号以及所述第二全局事务序列号;
若在全部全局事务序列号中所述第一全局事务序列号为最大值,则确定自身的启动方式为自举启动方式;
若在全部全局事务序列号中所述第一全局事务序列号为非最大值,则确定自身的启动方式为参与者节点方式。
第三方面,本发明提供一种集群启动装置,包括处理器、机器可读存储介质和通信总线,其中,处理器和机器可读存储介质通过通信总线完成相互间的通信;
机器可读存储介质,用于存放计算机程序;
处理器,用于执行机器可读存储介质上所存放的程序时,实现上述集群启动方法。
第四方面,本发明提供一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述集群启动方法。
应用本发明公开的技术方案,通过在目标集群节点非首次启动,且确定PXC集群中不存在已经完成启动的其他集群节点时,确定自身的安全自举标记是否为第一值,若不为第一值,则进一步获取PXC集群中其他集群节点的安全自举标记;若PXC集群中的其他集群节点中不存在安全自举标记为第一值的集群节点,则根据自身的第一全局事务序列号以及PXC集群中其他集群节点的第二全局事务序列号,确定自身的启动方式,并根据所确定的启动方式启动,提高了PXC集群重启的成功率和效率。
附图说明
图1是本发明实施例提供的一种集群启动方法的流程示意图;
图2是本发明实施例提供的一种具体应用场景的架构示意图;
图3是本发明实施例提供的一种集群启动的流程示意图;
图4是本发明实施例提供的一种守护进程start helper的处理流程示意图;
图5是本发明实施例提供的一种服务启动状态查询消息的应答流程示意图;
图6是本发明实施例提供的一种集群启动装置的结构示意图;
图7是本发明实施例提供的另一种集群启动装置的结构示意图;
图8是本发明实施例提供的另一种集群启动装置的结构示意图;
图9是本发明实施例提供的一种集群启动装置的硬件结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中技术方案作进一步详细的说明。
请参见图1,为本发明实施例提供的一种集群启动方法的流程示意图,其中,该集群启动方式可以应用于PXC集群中的任一集群节点(本文中称为目标集群节点),如图1所示,该集群启动方法可以包括以下步骤:
步骤101、当目标集群节点非首次启动,且确定PXC集群中不存在已经完成启动的其他集群节点时,确定自身的安全自举标记是否为第一值。若是,则转至步骤102;否则,转至步骤103。
本发明实施例中,当目标集群节点启动时,目标集群节点可以通过判断是否存在状态文件grastate.dat的方式确定目标集群节点是否为首次启动。
其中,当不存在状态文件grastate.dat时,确定目标集群节点为首次启动;当存在状态文件grastate.dat时,确定目标集群节点为非首次启动。
需要说明的是,在本发明实施例中,当目标集群节点首次启动时,其启动处理流程可以参见现有PXC集群启动方案中的相关描述,本发明实施例在此不做赘述。
本发明实施例中,考虑到PXC集群中可能会存在集群节点由于人工干预等原因先于其他集群节点启动的情况,在该情况下,之后启动的集群节点需要以参与者方式启动。
相应地,当目标集群节点非首次启动时,目标集群节点可以先确定PXC集群中是否存在已经完成启动的其他集群节点。
在本发明其中一个实施例中,上述确定PXC集群中是否存在已经完成动的其他集群节点,可以包括:
向PXC集群中的其他集群节点发送服务启动状态查询消息;
接收PXC集群中的其他集群节点发送的服务启动状态应答消息;
根据接收到的服务启动状态应答消息中携带的服务启动状态确定PXC集群中是否存在已经完成启动的其他集群节点。
在该实施例中,PXC集群中各集群节点可以通过向其他集群节点发送服务启动状态查询消息的方式,查询PXC集群节点中其他集群节点的服务启动状态。
相应地,当PXC集群中的集群节点接收到其他集群节点发送的服务启动状态查询消息时,可以获取本节点的服务启动状态,并向各其他集群节点发送携带该服务启动状态的服务启动状态应答消息。
集群节点可以根据接收到的其他集群节点发送的服务启动状态应答消息中携带的服务启动状态确定其他集群节点是否已经完成启动。
在一个示例中,服务启动状态可以包括完成启动、启动中或未启动(也可以称为服务停止)等;
相应地,上述根据接收到的服务启动状态应答消息中携带的服务启动状态确定PXC集群中是否存在已经完成启动的其他集群节点,可以包括:
当接收到携带的服务启动状态为完成启动的服务启动状态应答消息时,确定PXC集群中存在已经完成启动的其他集群节点;
当接收到的服务启动状态应答消息中携带的服务启动状态均为启动中或未启动时,确定PXC集群中不存在已经完成启动的其他集群节点。
在该示例中,当目标集群节点接收到PXC集群节点中其他集群节点发送的服务启动状态应答消息时,可以获取接收到的服务启动状态应答消息中携带的服务启动状态,并确定是否存在完成启动的服务启动状态。
若存在,则确定PXC集群中存在已经完成启动的其他集群节点;
若不存在,即接收到非服务启动状态消息中携带的服务启动状态均为启动中或未启动,则确定PXC集群中不存在已经完成启动的其他集群节点。
本发明实施例中,当目标集群节点确定PXC集群中不存在已经完成启动的其他集群节点时,可以获取自身的安全自举标记,并确定自身的安全自举标记是否为第一值(下文中以第一值为1为例)。
步骤102、以自举方式启动。
本发明实施例中,当目标集群节点确定自身的安全自举标记为1时,目标集群节点可以确定自身为贡献者节点,并以自举方式启动。
需要说明的是,在本发明实施例中,集群节点以自举方式启动的具体实现可以参见现有PXC集群启动方案中的相关描述,本发明实施例在此不做赘述。
步骤103、获取PXC集群中其他集群节点的安全自举标记。
本发明实施例中,当目标集群节点确定自身的安全自举标记不为1时,目标集群节点可以获取PXC集群中其他集群节点的安全自举标记。
在本发明其中一个实施例中,上述获取PXC集群中其他集群节点的安全自举标记,可以包括:
向PXC集群中其他集群节点发送恢复信息查询消息;
接收PXC集群中其他集群节点发送的恢复信息应答消息;其中,恢复信息应答消息携带有发送方节点的节点名称和安全自举标记;
获取该恢复信息应答消息中携带的发送方节点的节点名称和安全自举标记。
在该实施例中,PXC集群中各集群节点可以通过向其他集群节点发送恢复信息查询消息的方式获取其他集群节点的安全自举标记。
当集群节点接收到PXC集群中其他集群节点的恢复信息查询消息时,可以向其他集群节点发送恢复信息应答消息;其中,该恢复信息应答消息可以包括但不限于发送方节点(即发送恢复信息应答消息的集群节点)的节点名称和安全自举标记。
相应地,集群节点可以根据接收到的PXC集群中其他集群节点的恢复信息应答消息中携带的安全自举标记,确定PXC集群中是否存在安全自举标记为1的其他集群节点。
步骤104、若PXC集群中其他集群节点中存在安全自举标记为第一值的集群节点,则当该安全自举标记为第一值的集群节点启动完成时,以参与者节点方式启动。
本发明实施例中,若目标集群节点确定PXC集群中的其他集群节点中存在安全自举标记为1的集群节点,则目标集群节点可以确定自身为参与者节点,此时,目标集群节点可以在安全自举标记为1的集群节点启动完成时,以参与者节点方式启动。
需要说明的是,在本发明实施例中,集群节点以参与者方式启动的具体实现可以参见现有PXC集群启动方案中的相关描述,本发明实施例在此不做赘述。
此外,在本发明实施例中,安全自举标记为1的集群节点启动完成时,可以主动向其他集群节点发送通知消息,以通知其他集群节点以参与者方式启动;或者,其他集群节点可以定时向安全自举标记为1的集群节点发送服务启动状态查询消息,并根据该集群节点发送的服务启动状态应答消息,确定该安全自举标记为1的集群节点是否启动完成,其具体实现在此不做赘述。
步骤105、若PXC集群中的其他集群节点中不存在安全自举标记为第一值的集群节点,则根据自身的第一全局事务序列号以及PXC集群中其他集群节点的第二全局事务序列号,确定自身的启动方式,并根据所确定的启动方式启动。
本发明实施例中,若目标集群节点确定PXC集群中的其他集群节点中不存在安全自举标记为1的集群节点,则目标集群节点可以进一步根据自身的全局事务序列号(本文中称为第一全局事务序列号),以及PXC集群节点中其他集群节点的全局事务序列号(本文中称为第二全局事务序列号),确定自身的启动方式。
在本发明其中一个实施例中,上述恢复信息应答消息中还携带有全局事务序列号;
相应地,上述根据自身的第一全局事务序列号以及PXC集群中其他集群节点的第二全局事务序列号,确定自身的启动方式,可以包括:
比较第一全局事务序列号以及第二全局事务序列号;
若在全部全局事务序列号中第一全局事务序列号为最大值,则确定自身的启动方式为自举启动方式;
若在全部全局事务序列号中第一全局事务序列号为非最大值,则确定自身的启动方式为参与者节点方式。
在该实施例中,集群节点接收到PXC集群中的其他集群节点发送的恢复信息查询消息时,在向其他集群节点发送的恢复信息应答消息中除了可以携带上述发送方设备的节点名称和安全自举标记之外,还可以携带全局事务序列号。
相应地,目标集群节点接收到PXC集群中的其他集群节点发送的恢复信息应答消息,并确定不存在安全自举标记为1的其他集群节点时,目标集群节点还可以比较自身的全局事务序列号(即第一全局事务序列号),以及接收到的恢复信息应答消息中携带的全局事务序列号(即第二全局事务序列号)。
若第一全局事务序列号在全部全局事务序列号(包括第一全局事序列号和第二全局事务序列号)中为最大值,则目标集群节点可以确定自身为贡献者节点,并以自举方式启动。
若第一全局事务序列号在全部全局事务序列号中为非最大值,则目标集群节点可以确定自身的启动方式为参与者节点方式。
其中,当目标集群节点确定自身的启动方式为参与者节点方式时,目标集群节点可以在全局事务序列号为全部全局事务序列号中的最大值的其他集群节点启动完成时,以参与者方式启动。
需要说明的是,在本发明实施例中,当存在多个全局事务序列号为全部全局事务序列号中的最大值的集群节点,则可以按照其他预设策略从该多个全局事务序列号为全部全局事务序列号中的最大值的集群节点中选择一个作为贡献者节点,例如,可以从该多个全局事务序列号为全部全局事务序列号中的最大值的集群节点中选择编号最小(或最大)的作为贡献者节点,其具体实现在此不做赘述。
此外,在本发明实施例中,全局事务序列号为全部全局事务序列号中的最大值的集群节点启动完成时,可以主动向其他集群节点发送通知消息,以通知其他集群节点以参与者方式启动;或者,其他集群节点可以定时向全局事务序列号为全部全局事务序列号中的最大值的集群节点发送服务启动状态查询消息,并根据该集群节点发送的服务启动状态应答消息,确定该全局事务序列号为全部全局事务序列号中的最大值的集群节点是否启动完成,其具体实现在此不做赘述。
为了使本领域技术人员更好地理解本发明实施例提供的技术方案,下面结合具体应用场景对本发明实施例提供的技术方案进行说明。
请参见图2,为本发明实施例提供的一种具体应用场景的架构示意图,如图2所示,在该应用场景中,以集群节点部署在容器中为例,各集群节点的运行环境中增加一个守护进程(本文中称为start helper(启动助手)),该守护进程可以收集集群节点上用于判断是否可以自举启动以及服务启动状态相关的信息;此外,该守护进程可以将收集到的信息在PXC集群的各集群节点之间进行交互,以便各集群节点均可以获取到其他集群节点的信息,并根据自身收集到的信息以及获取到的其他集群节点的信息确定启动方式。
在该实施例中,集群节点之间的信息交互采用C-S(Client-Server,客户端-服务器)模型,由客户端发起请求消息,服务端接收请求消息,并进行应答。
其中,各集群节点中的start helper可以启动一个子进程(本文中称为replyer(应答者)),用于在消息交互中作为Server,即当集群节点接收到PXC集群中其他集群节点的start helper(作为客户端)发送的请求消息时,可以通过replyer(作为服务端)发送应答消息。其中,集群节点之间交互的消息主要可以包括:
1、服务启动状态查询消息(GET_SERVICE_STATE),用于查询其他集群节点的服务启动状态。
在该实施例中,服务启动状态可以包括STARTED(完成启动)、STOP(未启动或服务停止)或STARTING(启动中)。
在该实施例中,当集群节点接收到其他集群节点发送的服务启动状态查询消息时,本地的replyer可以查询数据库服务运行时的状态参数wsrep_local_state_comment(本地集群状态);若查询到wsrep_local_state_comment=“Synced(同步的)”,则表明该集群节点已经启动完成,此时,replyer发送携带“STARTED”的服务启动状态应答消息。
若未查询到wsrep_local_state_comment,或wsrep_local_state_comment不等于“Synced”,则进一步查询服务进程mysqld是否存在;若存在,则发送携带“STARTING”的服务启动状态应答消息;若不存在,则发送携带“STOP”的服务启动状态应答消息。
2、恢复信息查询消息(GET_RECOVER_INFO),用于查询其他节点的恢复信息。
在该实施例中,该恢复信息可以包括但不限于节点名称(nodename)、安全自举标记(safe_to_bootstrap)以及全局事务序列号(seqno)等。
在该实施例中,当集群节点接收到其他集群节点发送的恢复信息查询消息时,本地的replyer可以从主机名称(hostname)中提取节点名称,从PXC的状态文件grastate.dat中读取安全自举标记,并从命令行mysqld_safe–wsrep-recover返回的结果中提取全局事务序列号,并将该节点名称、安全自举标记以及全局事务序列号携带在replyer发送的恢复信息应答消息中。
其中,恢复信息应答消息内容可以自定义格式。
举例来说,可以实现为简单的字符串,以“Key(键)=Value(值)”形式存储,字段之间以分号分割。例如:
“nodename=pxc-node1;safe_to_bootstrap=1;seqno=5320”。
基于图2所示应用场景,本发明实施例提供的集群启动方案实现流程如下:
在该实施例中,当集群节点启动时,集群节点可以先确定是否为首次启动。例如,集群节点可以判断grastate.dat文件是否存在;若存在,则确定为非首次启动;否则,确定为首次启动。
在该实施例中,若集群节点首次启动,则可以按照现有PXC集群启动方案中的集群节点初始化流程进行处理,其具体实现在此不做赘述。
若集群节点为非首次启动,则集群节点可以启动守护进程start helper,其示意图可以如图3所示。
如图4所示,在该实施例中,start helper启动之后,可以执行如下流程:
1、收集恢复信息,用于replyer回复其他集群节点的恢复信息查询消息,提高恢复信息查询效率,进而,提高集群启动效率。
需要说明的是,在本发明实施例中,恢复信息也可以在接收到恢复信息查询消息时再获取,对此本发明不做限定。
2、启动子进程replyer作为服务端,用于响应其他集群节点的start helper发送的查询消息。
其中,可以预先定义查询消息的接收端口和应答端口(如端口1000),replyer可以监听端口1000,以接收其他集群节点的start helper发送的查询消息(如服务启动状态查询消息或恢复信息查询消息),并响应应答消息。
其中,replyer应答服务启动状态查询消息的流程示意图可以如图5所示;replyer应答恢复信息查询消息时,可以直接将start helper收集的恢复信息携带在恢复信息应答消息中进行应答。
start helper可以继续执行如下流程:
3、向其他集群节点发送服务启动状态查询消息,判断是否有其他集群节点返回携带“STARTED”的服务启动状态应答消息。
若有,则以参与者节点方式启动,并执行步骤7;
否则,执行步骤4。
4、确定本地的安全自举标记是否为1;
若是,则以自举方式启动,并执行步骤9;
否则,执行步骤5。
5、向其他集群节点发送恢复信息查询消息,并接收恢复信息应答消息。
6、判断是否接收到所有其他集群节点返回的恢复信息应答消息。
若是,则执行步骤7;
否则,执行步骤5。
需要说明的是,在该实施例中,当集群节点未接收到所有其他集群节点返回的恢复信息应答消息时,可以仅向未返回恢复信息应答消息的其他集群节点再次发送恢复信息查询消息。
7、判断是否存在安全自举标记为1的其他集群节点;
若是,则等待该安全自举标记为1的其他集群节点启动完成时,以参与者节点方式启动,然后执行步骤9;
否则,执行步骤8。
8、比较自身的全局事务序列号以及PXC集群中其他集群节点的全局事务序列号,并判断自身的全局事务序列号是否为全部全局事务序列号中的最大值;
若是,则以自举方式启动,然后执行步骤9;
否则,等待全局事务序列号为全部全局事务序列号中的最大值的其他集群节点启动完成时,以参与者节点方式启动,然后执行步骤9;
9、流程结束。
通过以上描述可以看出,在本发明实施例提供的技术方案中,通过在目标集群节点非首次启动,且确定PXC集群中不存在已经完成启动的其他集群节点时,确定自身的安全自举标记是否为第一值,若不为第一值,则进一步获取PXC集群中其他集群节点的安全自举标记;若PXC集群中的其他集群节点中不存在安全自举标记为第一值的集群节点,则根据自身的第一全局事务序列号以及PXC集群中其他集群节点的第二全局事务序列号,确定自身的启动方式,并根据所确定的启动方式启动,提高了PXC集群重启的成功率和效率。
请参见图6,为本发明实施例提供的一种集群启动装置的结构示意图,其中,该装置可以应用于上述方法实施例中的目标集群节点,如图6所示,该装置可以包括:
确定单元610,用于当所述目标集群节点非首次启动,且确定所述PXC集群中不存在已经完成启动的其他集群节点时,确定所述目标集群节点的安全自举标记是否为第一值;
获取单元620,用于若所述目标集群节点的安全自举标记不为所述第一值,则获取所述PXC集群中其他集群节点的安全自举标记;
所述确定单元610,还用于若所述PXC集群中的其他集群节点中不存在安全自举标记为所述第一值的集群节点,则根据自身的第一全局事务序列号以及所述PXC集群中其他集群节点的第二全局事务序列号,确定自身的启动方式;
启动单元630,用于根据所确定的启动方式启动。
请一并参见图7,为本发明实施例提供的另一种集群启动装置的结构示意图,如图7所示,在图6所示装置的基础上,图7所示装置还可以包括:
第一发送单元640,用于当所述目标集群节点非首次启动时,向所述PXC集群中的其他集群节点发送服务启动状态查询消息;
第一接收单元650,用于接收所述PXC集群中的其他集群节点发送的服务启动状态应答消息;
所述确定单元610,具体用于根据所述第一接收单元接收到的服务启动状态应答消息中携带的服务启动状态确定所述PXC集群中是否存在已经完成启动的其他集群节点。
在可选实施例中,所述服务启动状态包括完成启动、启动中或未启动;
所述确定单元610,具体用于当所述第一接收单元接收到携带的服务启动状态为完成启动的服务启动状态应答消息时,确定所述PXC集群中存在已经完成启动的其他集群节点;当所述第一接收单元接收到的服务启动状态应答消息中携带的服务启动状态均为启动中或未启动时,确定所述PXC集群中不存在已经完成启动的其他集群节点。
在可选实施例中,所述启动单元630,还用于当所述目标集群节点非首次启动,且确定所述PXC集群中存在已经完成启动的其他集群节点时,以参与者节点方式启动。
请一并参见图8,为本发明实施例提供的另一种集群启动装置的结构示意图,如图7所示,在图6所示装置的基础上,图8所示装置还可以包括:
第二发送单元660,用于向所述PXC集群中其他集群节点发送恢复信息查询消息;
第二接收单元670,用于接收所述PXC集群中其他集群节点发送的恢复信息应答消息;其中,所述恢复信息应答消息中携带有发送方节点的节点名称和安全自举标记;
所述获取单元620,具体用于获取所述恢复信息应答消息中携带的发送方节点的节点名称和安全自举标记。
在可选实施例中,所述恢复信息应答消息中还携带有全局事务序列号;
所述确定单元610,具体用于比较所述第一全局事务序列号以及所述第二全局事务序列号;若在全部全局事务序列号中所述第一全局事务序列号为最大值,则确定自身的启动方式为自举启动方式;若在全部全局事务序列号中所述第一全局事务序列号为非最大值,则确定自身的启动方式为参与者节点方式。
请参见图9,为本发明实施例提供的一种集群启动装置的硬件结构示意图。该集群启动装置可以包括处理器901、存储有机器可执行指令的机器可读存储介质902。处理器901与机器可读存储介质902可经由系统总线903通信。并且,通过读取并执行机器可读存储介质902中与集群启动逻辑对应的机器可执行指令,处理器901可执行上文描述的集群启动方法。
本文中提到的机器可读存储介质902可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是易失存储器、非易失性存储器或者类似的存储介质。具体地,机器可读存储介质902可以是RAM(Radom Access Memory,随机存取存储器)、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、DVD等),或者类似的存储介质,或者它们的组合。
本发明实施例还提供了一种包括机器可执行指令的机器可读存储介质,例如图9中的机器可读存储介质902,所述机器可执行指令可由集群启动装置中的处理器901执行以实现以上描述的集群启动方法。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
由上述实施例可见,通过在目标集群节点非首次启动,且确定PXC集群中不存在已经完成启动的其他集群节点时,确定自身的安全自举标记是否为第一值,若不为第一值,则进一步获取PXC集群中其他集群节点的安全自举标记;若PXC集群中的其他集群节点中不存在安全自举标记为第一值的集群节点,则根据自身的第一全局事务序列号以及PXC集群中其他集群节点的第二全局事务序列号,确定自身的启动方式,并根据所确定的启动方式启动,提高了PXC集群重启的成功率和效率。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
Claims (12)
1.一种集群启动方法,应用于数据库集群PXC集群中的目标集群节点,其特征在于,所述方法包括:
当所述目标集群节点非首次启动,且确定所述PXC集群中不存在已经完成启动的其他集群节点时,确定自身的安全自举标记是否为第一值;
若不为所述第一值,则获取所述PXC集群中其他集群节点的安全自举标记;
若所述PXC集群中的其他集群节点中不存在安全自举标记为所述第一值的集群节点,则根据自身的第一全局事务序列号以及所述PXC集群中其他集群节点的第二全局事务序列号,确定自身的启动方式,并根据所确定的启动方式启动。
2.根据权利要求1所述的方法,其特征在于,所述确定自身的安全自举标记是否为第一值之前,还包括:
当所述目标集群节点非首次启动时,向所述PXC集群中的其他集群节点发送服务启动状态查询消息;
接收所述PXC集群中的其他集群节点发送的服务启动状态应答消息;
根据接收到的服务启动状态应答消息中携带的服务启动状态确定所述PXC集群中是否存在已经完成启动的其他集群节点。
3.根据权利要求2所述的方法,其特征在于,所述服务启动状态包括完成启动、启动中或未启动;
所述根据接收到的服务启动状态应答消息中携带的服务启动状态确定所述PXC集群中是否存在已经完成启动的其他集群节点,包括:
当接收到携带的服务启动状态为完成启动的服务启动状态应答消息时,确定所述PXC集群中存在已经完成启动的其他集群节点;
当接收到的服务启动状态应答消息中携带的服务启动状态均为启动中或未启动时,确定所述PXC集群中不存在已经完成启动的其他集群节点。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
当所述目标集群节点非首次启动,且确定所述PXC集群中存在已经完成启动的其他集群节点时,以参与者节点方式启动。
5.根据权利要求1所述的方法,其特征在于,所述获取所述PXC集群中其他集群节点的安全自举标记,包括:
向所述PXC集群中其他集群节点发送恢复信息查询消息;
接收所述PXC集群中其他集群节点发送的恢复信息应答消息;其中,所述恢复信息应答消息中携带有发送方节点的节点名称和安全自举标记;
获取所述恢复信息应答消息中携带的发送方节点的节点名称和安全自举标记。
6.根据权利要求5所述的方法,其特征在于,所述恢复信息应答消息中还携带有全局事务序列号;
所述根据自身的第一全局事务序列号以及所述PXC集群中其他集群节点的第二全局事务序列号,确定自身的启动方式,包括:
比较所述第一全局事务序列号以及所述第二全局事务序列号的大小;
若在全部全局事务序列号中所述第一全局事务序列号为最大值,则确定自身的启动方式为自举启动方式;
若在全部全局事务序列号中所述第一全局事务序列号为非最大值,则确定自身的启动方式为参与者节点方式。
7.一种集群启动装置,应用于数据库集群PXC集群中的目标集群节点,其特征在于,所述装置包括:
确定单元,用于当所述目标集群节点非首次启动,且确定所述PXC集群中不存在已经完成启动的其他集群节点时,确定所述目标集群节点的安全自举标记是否为第一值;
获取单元,用于若所述目标集群节点的安全自举标记不为所述第一值,则获取所述PXC集群中其他集群节点的安全自举标记;
所述确定单元,还用于若所述PXC集群中的其他集群节点中不存在安全自举标记为所述第一值的集群节点,则根据自身第一全局事务序列号以及所述PXC集群中其他集群节点的第二全局事务序列号,确定自身的启动方式;
启动单元,用于根据所确定的启动方式启动。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第一发送单元,用于当所述目标集群节点非首次启动时,向所述PXC集群中的其他集群节点发送服务启动状态查询消息;
第一接收单元,用于接收所述PXC集群中的其他集群节点发送的服务启动状态应答消息;
所述确定单元,具体用于根据所述第一接收单元接收到的服务启动状态应答消息中携带的服务启动状态确定所述PXC集群中是否存在已经完成启动的其他集群节点。
9.根据权利要求8所述的装置,其特征在于,所述服务启动状态包括完成启动、启动中或未启动;
所述确定单元,具体用于当所述第一接收单元接收到携带的服务启动状态为完成启动的服务启动状态应答消息时,确定所述PXC集群中存在已经完成启动的其他集群节点;
当所述第一接收单元接收到的服务启动状态应答消息中携带的服务启动状态均为启动中或未启动时,确定所述PXC集群中不存在已经完成启动的其他集群节点。
10.根据权利要求7-9任一项所述的装置,其特征在于,
所述启动单元,还用于当所述目标集群节点非首次启动,且确定所述PXC集群中存在已经完成启动的其他集群节点时,以参与者节点方式启动。
11.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第二发送单元,用于向所述PXC集群中其他集群节点发送恢复信息查询消息;
第二接收单元,用于接收所述PXC集群中其他集群节点发送的恢复信息应答消息;其中,所述恢复信息应答消息中携带有发送方节点的节点名称和安全自举标记;
所述获取单元,具体用于获取所述恢复信息应答消息中携带的发送方节点的节点名称和安全自举标记。
12.根据权利要求11所述的装置,其特征在于,所述恢复信息应答消息中还携带有全局事务序列号;
所述确定单元,具体用于比较所述第一全局事务序列号以及所述第二全局事务序列号;
若在全部全局事务序列号中所述第一全局事务序列号为最大值,则确定自身的启动方式为自举启动方式;
若在全部全局事务序列号中所述第一全局事务序列号为非最大值,则确定自身的启动方式为参与者节点方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811602329.XA CN109728949B (zh) | 2018-12-26 | 2018-12-26 | 一种集群启动方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811602329.XA CN109728949B (zh) | 2018-12-26 | 2018-12-26 | 一种集群启动方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109728949A true CN109728949A (zh) | 2019-05-07 |
CN109728949B CN109728949B (zh) | 2022-03-25 |
Family
ID=66297195
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811602329.XA Active CN109728949B (zh) | 2018-12-26 | 2018-12-26 | 一种集群启动方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109728949B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113806140A (zh) * | 2021-08-12 | 2021-12-17 | 紫光云(南京)数字技术有限公司 | 一种基于管理平台上重启redis集群的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1308275A (zh) * | 2001-02-15 | 2001-08-15 | 华中科技大学 | 用于集群系统的节点机远程克隆方法 |
CN103685467A (zh) * | 2013-11-15 | 2014-03-26 | 伏治军 | 一种物联网互联互通平台及其通信方法 |
CN103942128A (zh) * | 2014-04-29 | 2014-07-23 | 浪潮电子信息产业股份有限公司 | 一种高性能作业调度管理节点双机加固方法 |
US20170168811A1 (en) * | 2015-12-14 | 2017-06-15 | Pivotal Software, Inc. | Deploying updates in a distributed database systems |
CN107548499A (zh) * | 2015-05-11 | 2018-01-05 | 英特尔公司 | 用于虚拟网络功能的安全自举的技术 |
-
2018
- 2018-12-26 CN CN201811602329.XA patent/CN109728949B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1308275A (zh) * | 2001-02-15 | 2001-08-15 | 华中科技大学 | 用于集群系统的节点机远程克隆方法 |
CN103685467A (zh) * | 2013-11-15 | 2014-03-26 | 伏治军 | 一种物联网互联互通平台及其通信方法 |
CN103942128A (zh) * | 2014-04-29 | 2014-07-23 | 浪潮电子信息产业股份有限公司 | 一种高性能作业调度管理节点双机加固方法 |
CN107548499A (zh) * | 2015-05-11 | 2018-01-05 | 英特尔公司 | 用于虚拟网络功能的安全自举的技术 |
US20170168811A1 (en) * | 2015-12-14 | 2017-06-15 | Pivotal Software, Inc. | Deploying updates in a distributed database systems |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113806140A (zh) * | 2021-08-12 | 2021-12-17 | 紫光云(南京)数字技术有限公司 | 一种基于管理平台上重启redis集群的方法 |
CN113806140B (zh) * | 2021-08-12 | 2024-01-05 | 紫光云(南京)数字技术有限公司 | 一种基于管理平台上重启redis集群的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109728949B (zh) | 2022-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200012575A1 (en) | Method and system for data recovery in a data system | |
CN107172169A (zh) | 数据同步方法、装置、服务器及存储介质 | |
CN103294675A (zh) | 一种分布式存储系统中的数据更新方法及装置 | |
US20080082863A1 (en) | System and Method for Maintaining Functionality During Component Failures | |
CN103460203A (zh) | 群集唯一标识符 | |
CN104094227A (zh) | 用于支持中间层事务日志到数据库的内联委托的系统和方法 | |
CN104756082A (zh) | 用于数据库应用的智能错误恢复 | |
CN104486125A (zh) | 配置文件的备份方法及装置 | |
CN108600316B (zh) | 云存储服务的数据管理方法、系统及设备 | |
CN104793981B (zh) | 一种虚拟机集群的在线快照管理方法及装置 | |
US10860375B1 (en) | Singleton coordination in an actor-based system | |
CN102202087A (zh) | 一种标识存储设备的方法及系统 | |
CN102521073B (zh) | 在故障恢复期间增加数据库的可用性 | |
CN106034113A (zh) | 数据处理方法及装置 | |
CN103731465A (zh) | 分布式系统及其事务处理方法 | |
CN109728949A (zh) | 一种集群启动方法及装置 | |
CN103701653A (zh) | 一种接口热插拔配置数据的处理方法及网络配置服务器 | |
CN103049348B (zh) | 多服务器化环境下数据容错存储的方法 | |
CN108123967A (zh) | 一种集群系统的数据同步方法和系统 | |
CN108089934A (zh) | 集群管理方法及集群服务器 | |
CN102073523A (zh) | 实现软件版本同步的方法及装置 | |
CN105471616A (zh) | 缓存系统管理方法和系统 | |
CN104657240B (zh) | 多内核操作系统的失效控制方法及装置 | |
CN103716401A (zh) | 用于管理通讯录的方法、终端和服务器 | |
CN110502238A (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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230529 Address after: 310052 11th Floor, 466 Changhe Road, Binjiang District, Hangzhou City, Zhejiang Province Patentee after: H3C INFORMATION TECHNOLOGY Co.,Ltd. Address before: 310052 Changhe Road, Binjiang District, Hangzhou, Zhejiang Province, No. 466 Patentee before: NEW H3C TECHNOLOGIES Co.,Ltd. |
|
TR01 | Transfer of patent right |