CN109005045A - 主备服务***及主节点故障恢复方法 - Google Patents
主备服务***及主节点故障恢复方法 Download PDFInfo
- Publication number
- CN109005045A CN109005045A CN201710417173.7A CN201710417173A CN109005045A CN 109005045 A CN109005045 A CN 109005045A CN 201710417173 A CN201710417173 A CN 201710417173A CN 109005045 A CN109005045 A CN 109005045A
- Authority
- CN
- China
- Prior art keywords
- node
- target
- control
- host
- control 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0654—Management of faults, events, alarms or notifications using network fault recovery
- H04L41/0663—Performing the actions predefined by failover planning, e.g. switching to standby network elements
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供了一种主备服务***及主节点故障恢复方法,该主备服务***包括:目标中控节点、至少两个控制节点、目标数据库的目标主节点以及目标备节点,目标备节点所处的机房不同于目标主节点所处的目标机房,且目标机房和目标备节点所处的机房中均设置有一个控制节点。上述目标中控节点,用于在感知到目标主节点故障时,从控制节点中确定目标控制节点;向目标控制节点发送节点切换命令;该目标控制节点,用于按照节点切换命令,将目标备节点切换为新的目标主节点。应用本发明实施例提供的方案,可以保证数据库的主节点所在的机房出现故障时,主备服务***依然能够实现主节点故障的恢复,保证主备服务***正常提供数据存取服务。
Description
技术领域
本发明涉及数据库技术领域,特别是涉及主备服务***及主节点故障恢复方法。
背景技术
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库;数据库可以用单节点提供数据存取服务,但是,如果该单节点发生故障,则数据库的存储服务无法继续提供,所以现有技术中,为保证数据库的高可用性,可以采用主备服务***提供数据存取服务,例如对于MySQL数据库(一种关系型数据库),其可以采用主备服务***提供数据存取服务。
现有的主备服务***可以包括数据库的主节点、与主节点对应的备节点以及控制该主节点及备节点的控制节点,例如常见的OpenStack(一种开源的云计算管理平台项目)控制节点。主备服务***中,主节点提供数据存取服务;主节点和备节点之间建立有主备复制关系,即主节点与备节点之间存储着相同的数据,当主节点中的数据更新时,备节点会及时复制主节点中所更新的数据。现有技术中,上述控制节点感知到主节点失效时,为了保证数据库正常提供服务,会将备节点切换为新的主节点,由新的主节点继续对外提供数据存取服务。
现有技术中主备服务***所包含的主节点、备节点以及控制节点都处于同一机房,当该机房故障时,主节点与备节点均失效,此时,主备服务***无法正常提供数据存取服务。
发明内容
本发明实施例的目的在于提供一种主备服务***及主节点故障恢复方法,以在数据库的主节点所在的机房出现故障时,主备服务***依然能够实现主节点故障的恢复,保证主备服务***正常提供数据存取服务。具体技术方案如下:
为达上述目的,第一方面,本发明实施例提供了一种主备服务***,包括:目标中控节点、至少两个控制节点、目标数据库的目标主节点、以及对应于所述目标主节点的目标备节点,
其中,所述目标备节点所处的机房不同于所述目标主节点所处的目标机房,且所述目标机房和所述目标备节点所处的机房中均设置有一个所述控制节点;任意所述控制节点均与所述目标主节点和所述目标备节点通信连接,所述目标中控节点与所有控制节点通信连接;
所述目标中控节点,用于在感知到所述目标主节点故障时,从当前可用的控制节点中确定目标控制节点;向所述目标控制节点发送节点切换命令;
所述目标控制节点,用于在接收到所述节点切换命令后,按照所述节点切换命令,将所述目标备节点切换为新的目标主节点。
优选的,所述***还包括所述目标中控节点所处机房的网关,所述网关内记录有各个控制节点与目标虚拟IP地址的对应关系;
所述目标中控节点,具体用于在感知到所述目标主节点故障时,向所述网关发送目的IP地址为所述目标虚拟IP地址的节点切换命令;
所述网关,用于在接收到所述节点切换命令后,根据所述对应关系,从所述目标虚拟IP地址对应的、当前可用的控制节点中确定目标控制节点,并将所述节点切换命令发送给所述目标控制节点。
优选的,所述网关,具体用于在接收到所述节点切换命令后,根据所述对应关系,从所述目标虚拟IP地址对应的、当前可用的控制节点中,随机确定一个控制节点为目标控制节点。
优选的,所述网关,具体用于在接收到所述节点切换命令后,根据所述对应关系,并基于其内预先记录的各个控制节点的地址信息,计算自身与所述目标虚拟IP地址对应的、当前可用的所有控制节点之间分别对应的路由路径;确定对应路由路径最短的控制节点为目标控制节点。
优选的,所述***包括至少两个中控节点,所述目标中控节点为所述***所包含的至少两个中控节点中的第一主节点;所述至少两个中控节点处于不同机房,所述至少两个中控节点中,除所述第一主节点外,其余均为所述第一主节点对应的第一从节点;
所述***还包括目标协调服务节点;
所述目标协调服务节点,用于在感知到所述第一主节点故障时,从当前可用的第一从节点中选择一个第一从节点,切换所选择的第一从节点为新的第一主节点。
优选的,所述目标协调服务节点内设置有目标锁,所述第一主节点为所述至少两个中控节点中,占用所述目标锁的中控节点;
所述目标协调服务节点,具体用于在感知到所述目标锁未被占用时,向当前可用的第一从节点发送目标锁未被占用的通知信息;
每个第一从节点,用于在接收到所述通知信息后,判断所述目标协调服务节点中的目标锁是否被其他第一从节点占用;如果否,占用所述目标锁,切换自身为新的第一主节点。
优选的,所述***包括至少三个协调服务节点;
所述目标协调服务节点为:所述***所包含的至少三个协调服务节点中的第二主节点;所述至少三个协调服务节点中,除第二主节点外,其余均为第二主节点对应的第二从节点,且任意一个配置有协调服务节点的机房中,协调服务节点的数量小于所述***中协调服务节点总数量的一半;
所有所述第二从节点用于,在感知到所述第二主节点故障时,基于各自预先设置的主节点选举机制,从当前可用的第二从节点中选举出一个第二从节点,作为新的第二主节点。
优选的,所述目标控制节点,还用于在将所述目标备节点切换为新的目标主节点之后,重启发生故障的目标主节点,并判断是否成功重启;如果是,切换该发生故障的目标主节点为新的目标备节点;如果否,新建一个目标备节点。
第二方面,本发明实施例提供了一种主节点故障恢复方法,应用于主备服务***,所述***包括目标中控节点、至少两个控制节点、目标数据库的目标主节点、以及对应于所述目标主节点的目标备节点,
所述目标备节点所处的机房不同于所述目标主节点所处的目标机房,且所述目标机房和所述目标备节点所处的机房中均设置有一个所述控制节点;任意所述控制节点均与所述目标主节点和所述目标备节点通信连接,所述目标中控节点与所有控制节点通信连接;
所述方法包括:
所述目标中控节点感知到所述目标主节点故障时,从当前可用的控制节点中确定目标控制节点;向所述目标控制节点发送节点切换命令;
所述目标控制节点在接收到所述节点切换命令后,按照所述节点切换命令,将所述目标备节点切换为新的目标主节点。
优选的,所述***还包括所述目标中控节点所处机房的网关,所述网关内记录有各个控制节点与目标虚拟IP地址的对应关系;
所述目标中控节点感知到所述目标主节点故障时,从当前可用的控制节点中确定目标控制节点;向所述目标控制节点发送节点切换命令的步骤,包括:
所述目标中控节点感知到所述目标主节点故障时,向所述网关发送目的IP地址为所述目标虚拟IP地址的节点切换命令;
所述网关在接收到所述节点切换命令后,根据所述对应关系,从所述目标虚拟IP地址对应的、当前可用的控制节点中确定目标控制节点,并将所述节点切换命令发送给所述目标控制节点。
优选的,所述网关在接收到所述节点切换命令后,根据所述对应关系,从所述目标虚拟IP地址对应的、当前可用的控制节点中确定目标控制节点的步骤,包括:
所述网关在接收到所述节点切换命令后,根据所述对应关系,从所述目标虚拟IP地址对应的、当前可用的控制节点中,随机确定一个控制节点为目标控制节点。
优选的,所述网关在接收到所述节点切换命令后,根据所述对应关系,从所述目标虚拟IP地址对应的、当前可用的控制节点中确定目标控制节点的步骤,包括:
所述网关在接收到所述节点切换命令后,根据所述对应关系,并基于其内预先记录的各个控制节点的地址信息,计算自身与所述目标虚拟IP地址对应的、当前可用的所有控制节点之间分别对应的路由路径;
所述网关确定对应路由路径最短的控制节点为目标控制节点。
优选的,所述***包括至少两个中控节点,所述目标中控节点为所述***所包含的至少两个中控节点中的第一主节点;所述至少两个中控节点处于不同机房,所述至少两个中控节点中,除所述第一主节点外,其余均为所述第一主节点对应的第一从节点;
所述***还包括目标协调服务节点;
在所述目标中控节点感知到所述目标主节点故障时,从当前可用的控制节点中确定目标控制节点的步骤之前,所述方法还包括:
所述目标协调服务节点感知到所述第一主节点故障时,从当前可用的第一从节点中选择一个第一从节点,切换所选择的第一从节点为新的第一主节点,再由新的第一主节点执行感知到所述目标主节点故障时,从当前可用的控制节点中确定目标控制节点的步骤。
优选的,所述目标协调服务节点内设置有目标锁,所述第一主节点为所述至少两个中控节点中,占用所述目标锁的中控节点;
所述目标协调服务节点感知到所述第一主节点故障时,从当前可用的第一从节点中选择一个第一从节点,切换所选择的第一从节点为新的第一主节点的步骤,包括:
所述目标协调服务节点感知到所述目标锁未被占用时,向当前可用的第一从节点发送目标锁未被占用的通知信息;
每个第一从节点在接收到所述通知信息后,判断所述目标协调服务节点中的目标锁是否被其他第一从节点占用;如果否,占用所述目标锁,切换自身为新的第一主节点。
优选的,所述***包括至少三个协调服务节点;
所述目标协调服务节点为:所述***所包含的至少三个协调服务节点中的第二主节点;所述至少三个协调服务节点中,除第二主节点外,其余均为第二主节点对应的第二从节点,且任意一个配置有协调服务节点的机房中,协调服务节点的数量小于所述***中协调服务节点总数量的一半;
相应的,所述方法还包括:
所有所述第二从节点感知到所述第二主节点故障时,基于各自预先设置的主节点选举机制,从当前可用的第二从节点中选举出一个第二从节点,作为新的第二主节点;
新的第二主节点执行所述感知到所述目标主节点故障时,从当前可用的第一从节点中选择一个第一从节点,切换所选择的第一从节点为新的目标主节点的步骤。
优选的,在所述目标控制节点在接收到所述节点切换命令后,按照所述节点切换命令,将所述目标备节点切换为新的目标主节点的步骤之后,所述方法还包括:
所述目标控制节点重启发生故障的目标主节点,并判断是否成功重启;如果是,切换该发生故障的目标主节点为新的目标备节点;如果否,新建一个目标备节点。
由以上可见,本发明实施例提供的方案中,主备服务***包括:目标中控节点、至少两个控制节点、目标数据库的目标主节点、以及对应于目标主节点的目标备节点,目标备节点所处的机房不同于目标主节点所处的目标机房,且目标机房和目标备节点所处的机房中均设置有一个控制节点;任意控制节点均与目标主节点和目标备节点通信连接,目标中控节点与所有控制节点通信连接。本发明实施例提供的方案中的目标中控节点,用于在感知到目标主节点故障时,从当前可用的控制节点中确定目标控制节点;向目标控制节点发送节点切换命令;该目标控制节点,用于在接收到节点切换命令后,按照节点切换命令,将目标备节点切换为新的目标主节点。
当目标主节点所在的目标机房整体发生故障时,目标机房内的所有设备都将处于故障状态,所以与现有技术相比,本发明实施例提供的方案中,由于目标备节点所处的机房不同于目标主节点所处的目标机房,而主备服务***包含至少两个控制节点,且目标机房和目标备节点所处的机房中均设置有一个控制节点,所以目标机房整体发生故障时,目标中控节点仍然可以选择到目标控制节点,并由目标控制节点切换目标备节点成为新的目标主节点,即当数据库的主节点所在的机房出现故障时,主备服务***依然能够实现主节点故障的恢复,保证主备服务***正常提供数据存取服务。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的主备服务***的第一种结构示意图;
图2为本发明实施例提供的主备服务***的第二种结构示意图;
图3为本发明实施例提供的主备服务***的第三种结构示意图;
图4为本发明实施例提供的主备服务***的应用场景示意图;
图5为本发明实施例提供的主节点故障恢复方法的第一种流程示意图;
图6为本发明实施例提供的主节点故障恢复方法的第二种流程示意图;
图7为本发明实施例提供的主节点故障恢复方法的第三种流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面首先对本发明涉及的技术术语进行简单介绍。
备节点:或称备份节点、备用节点,如前背景技术所述,如果数据库以单节点方式存在,那么该单节点必然同时提供数据读取服务和数据写入服务。虽然此类数据库部署方式中的节点部署和维护简单,但是当该单节点发生故障时,会导致数据库的所有服务不可用;所以,为保证数据库的高可用性,现有技术中提供了一种主备服务***;主备服务***包含一个主节点,以及对应该主节点的冗余节点,即备节点。
主备服务***中,数据读取服务和数据写入服务请求都由主节点提供,在主节点发生故障的时候,备节点被切换为新的主节点,并由新的主节点提供数据读取服务和数据写入服务,同时再重新创建一个新的冗余节点作为新的备节点,以保证数据库的高可用性。
主备服务***中,主节点和备节点中所存储的数据相同;主节点中存储的数据更新时,备节点会根据主节点中数据的更新内容更新本地存储的数据,达到备节点与主节点数据同步的目的。
应该说明的是,在主备服务***中,节点的切换可以是由***中的控制节点完成,并且,该控制节点可以通过心跳机制可以感知到各个数据库的节点是否发生故障,当然,控制节点感知数据库的节点故障的具体实现方式属于现有技术,本发明实施例在此不做详细介绍。
例如,在主备服务***中,该控制节点为一种openstack(一种开源的云计算管理平台项目)控制节点,当控制节点感知数据库的主节点故障时,控制节点会首先确定该发生故障的数据库主节点所对应的备节点,然后将所确定的备节点切换为数据库新的主节点。
应该说明的是,主节点故障绝大部分原因是主节点自身发生的故障,但是还有一部分原因是主节点所在机房整体发生故障,进而导致主节点故障失效。但是现有技术中,控制节点、数据库的主节点和备节点都是处于同一机房中,当机房故障时,不但数据库的主节点发生故障,上述控制节点以及数据库的备节点同样发生故障,此时主备服务***中没有可用的备节点可以被切换为新的数据库主节点,导致主备服务***无法正常提供数据存取服务。
为了解决现有技术的主备服务***在主节点所在机房发生故障时,主备服务***无法正常提供数据存取服务的问题,本发明实施例提供了主备服务***和主节点故障恢复方法。应该说明的是,主节点的故障恢复方法,是指主备服务***中的数据库主节点发生故障时,主备服务***切换出新的数据库主节点的方法。
具体的,参见图1,图1为本发明实施例提供的主备服务***的第一种结构示意图。如图1所示,主备服务***包括:目标中控节点、控制节点1~n、目标数据库的目标主节点、以及对应于目标主节点的目标备节点,目标备节点所处的机房不同于目标主节点所处的目标机房,且目标机房和目标备节点所处的机房中均设置有一个控制节点;任意控制节点均与目标主节点和目标备节点通信连接,目标中控节点与所有控制节点通信连接。其中的目标中控节点,用于在感知到目标主节点故障时,从当前可用的控制节点中确定目标控制节点;向目标控制节点发送节点切换命令;该目标控制节点,用于在接收到节点切换命令后,按照节点切换命令,将目标备节点切换为新的目标主节点。
当目标主节点所在的目标机房整体发生故障时,目标机房内的所有设备都将处于故障状态,所以与现有技术相比,本发明实施例提供的方案中,由于目标备节点所处的机房不同于目标主节点所处的目标机房,而主备服务***包含至少两个控制节点,且目标机房和目标备节点所处的机房中均设置有一个控制节点,所以目标机房整体发生故障时,目标中控节点仍然可以选择到目标控制节点,并由目标控制节点切换目标备节点成为新的目标主节点,即当数据库的主节点所在的机房出现故障时,主备服务***依然能够实现主节点故障的恢复,保证主备服务***正常提供数据存取服务。
下面通过具体实施例来对本发明进行详细介绍。
本发明实施例提供的一种主备服务***,该主备服务***包括:目标中控节点、至少两个控制节点、目标数据库的目标主节点、以及对应于所述目标主节点的目标备节点。如图1所示,图1主备服务***包括的至少两个控制节点为控制节点1~n,其中n≥2。
在上述主备服务***中,目标备节点所处的机房不同于目标主节点所处的目标机房,且目标机房和目标备节点所处的机房中均设置有一个控制节点;任意控制节点均与目标主节点和目标备节点通信连接,目标中控节点与所有控制节点通信连接。
首先应当说明的是,上述目标数据库的可以现有技术中常见的数据库,例如MySQL数据库(一种关系型数据库)。上述目标主节点以及上述目标备节点是对应目标数据库的一组数据库节点,但是在实际应用中,主备服务***中可以包含有多组数据库节点,每组数据库节点都包含有一个数据库主节点以及一个数据库备节点,在本发明的各个实施例中,为了便于说明,仅以一个目标数据库对应的一组数据库节点介绍本申请提供的主备服务***。
主备服务***的所有的控制节点中,可以是任意两个控制节点都处于不同的机房中,当然,也可以是所有的控制节点都随机部署在预设数量个机房内。但是需要说明的是,所有的控制节点不可以全部处于同一个机房内,以防止机房故障时出现所有控制节点均不可用的问题。
应该说明的是,主备服务***中控制节点的数量应该基于成本以及实际部署场景等因素而确定,作为本发明实施例的最优实现方式,每个部署有数据库节点的机房中都部署有一个控制节点。
本发明实施例中,任意控制节点均与目标主节点和目标备节点通信连接,表明主备服务***中的每一个控制节点均可以控制目标主节点,同样均可以控制目标备节点。例如,针对目标备节点,主备服务***中的任意控制节点都可以控制该目标备节点。
另外,目标中控节点与所有控制节点通信连接,所以目标中控节点可以向主备服务***中的任一控制节点发送命令,并不限定目标中控节点仅可以向其同机房内的控制节点发送命令。
上述目标中控节点,用于在感知到目标主节点故障时,从当前可用的控制节点中确定目标控制节点;向目标控制节点发送节点切换命令。
需要注意的是,目标中控节点是分别同目标主节点以及目标备节点通信连接的(图1中未示出),目标中控节点实时监控着目标主节点以及目标备节点的工作状态;例如目标中控节点通过现有技术中提供的心跳机制,实时监控目标主节点以及目标备节点的工作状态;具体的,对于目标中控节点实时监控目标主节点以及目标备节点的工作状态的具体实现方式,本发明实施例在此不做详细介绍。
另外,在目标主节点故障时,主备服务***中同样可能存在某一控制节点同时发生故障的情况,例如,目标主节点的故障是由于目标机房故障而导致的,目标机房故障时,其内的所有设备都会处于故障状态,所以处于目标机房中的控制节点同样会出现故障,即在此时,处于目标机房中的控制节点是不可用的。显然的,上述所确定的目标控制节点必须是可用的,才可以顺利接收并执行该节点切换命令。
可以理解,无论是哪一个控制节点发生故障,亦或是单机房故障,主备服务***中都仍然存在可以接收并执行上述节点切换命令的控制节点,因而所有的控制节点的可用性高。
由于当前的主备服务***中可能存在有多个可用的控制节点,每个控制节点均可以控制上述目标备节点,所以需要从当前可用的控制节点中选择一个控制节点,然后将节点切换命令发送给所选择的控制节点,由所选择的控制节点执行节点切换命令。
在本发明实施例中,从当前可用的控制节点中选择一个控制节点的具体操作可以直接由目标中控节点执行,例如,目标中控节点直接从当前可用的控制节点中随机选择一个控制节点,并将节点切换命令发送给所选择的控制节点。
作为本发明实施例的一种实现方式,上述主备服务***还可以包括目标中控节点所处机房的网关,网关内记录有各个控制节点与目标虚拟IP地址的对应关系;
此情况下,目标中控节点,可以具体用于在感知到所述目标主节点故障时,向上述网关发送目的IP地址为目标虚拟IP地址的节点切换命令。
上述网关,用于在接收到节点切换命令后,根据上述对应关系,从目标虚拟IP地址对应的、当前可用的控制节点中确定目标控制节点,并将节点切换命令发送给目标控制节点。
可以理解,在此实现方式中,目标中控节点在感知目标主节点发生故障时,首先生成目的IP地址(Internet Protocol Address,网际协议地址)为目标虚拟IP地址的节点切换命令,然后目标中控节点将该节点切换命令发送给其所在机房的网关,该网关接收到节点切换命令后,发现目标虚拟IP地址对应有多个控制节点,所以该网关可以从目标虚拟IP地址对应的、当前可用的各个控制节点中选择一个控制节点,并将节点切换命令发送给所选择的控制节点。
作为上述网关确定目标控制节点的第一种实现方式,上述网关,具体用于在接收到节点切换命令后,根据上述对应关系,从目标虚拟IP地址对应的、当前可用的控制节点中,随机确定一个控制节点为目标控制节点。
示例性的,此处所述的对应关系可以是一个关系表,该关系表中记录有目标虚拟IP地址及其对应的各个控制节点的标识信息,如下表1所示,此标识信息为控制节点的MAC(Media Access Control,媒体访问控制)地址。
表1
网关接收到节点切换命令后,发现节点切换命令的目的IP地址为目标虚拟IP地址:39.162.0.1;则网关首先查阅表1,确定对应该目标虚拟IP地址的控制节点包括6个,6个控制节点的MAC地址分别为MAC1~MAC6;然后网关还需要确定6个控制节点中当前可用的控制节点,例如,当前可用的控制节点的数量为5个,分别对应的MAC地址为MAC1~MAC5,则网关从MAC地址分别对应为MAC1~MAC5的5个控制节点中,随机选择MAC地址为MAC3的控制节点为目标控制节点。
作为上述网关确定目标控制节点的第二种实现方式,上述网关,具体用于在接收到节点切换命令后,根据上述对应关系,并基于其内预先记录的各个控制节点的地址信息,计算自身与目标虚拟IP地址对应的、当前可用的所有控制节点之间分别对应的路由路径;确定对应路由路径最短的控制节点为目标控制节点。
可以理解,在此第二种实现方式中,上述网关中除了记录有上述对应关系,还记录有目标虚拟IP地址对应的各个控制节点的地址信息,为了使得上述节点切换命令尽快发送给控制节点,上述网关会基于各个控制节点的地址信息,计算自身与当前可用的各个控制节点之间分别对应的路由路径。
可以理解,路由路径的计算方法属于现有技术,因此网关计算自身与当前可用的各个控制节点之间分别对应的路由路径的具体实现方式可以参照现有技术,本发明实施例在此不做详细介绍。
可以理解,两个设备之间的路由路径越短,两个设备之间的数据传输越快,所以,为了使得上述节点切换命令尽快发送给控制节点,网关可以确定对应路由路径最短的控制节点为目标控制节点。
示例性的,如上表1,网关查阅表1时,确定对应该目标虚拟IP地址的控制节点包括6个,6个控制节点的MAC地址分别为MAC1~MAC6;然后网关还确定6个控制节点中当前可用的控制节点5个,可用的5个控制节点分别对应的MAC地址为MAC1~MAC5。
此时,网关基于基于其内预先记录的各个控制节点的地址信息,计算自身与当前可用的5个控制节点之间分别对应的路由路径,并确定出网关与MAC地址为MAC2的控制节点之间的路由路径最短,则网关此时确定MAC地址为MAC2的控制节点为目标控制节点。
在本发明实施例中,所确定的目标控制节点,用于在接收到节点切换命令后,按照节点切换命令,将目标备节点切换为新的目标主节点。
目标备节点被切换为新的目标主节点后,由新的目标主节点继续提供数据库服务;当然,切换目标备节点为新的目标主节点的具体实现方式属于现有技术,本发明实施例在此不做详细介绍。
需要注意的是,由于目标备节点被切换为新的目标主节点,主备服务***不再存在目标备节点,如果新的目标主节点再次发生故障,由于没有可切换的目标备节点,所以目标数据库对应的服务无法提供。故在目标备节点被切换为新的目标主节点后,应该尽快在主备服务***中新建一个新的目标备节点。
因而,在本发明实施例中,上述目标控制节点,还可以用于在将目标备节点切换为新的目标主节点之后,重启发生故障的目标主节点,并判断是否成功重启;如果是,切换该发生故障的目标主节点为新的目标备节点;如果否,新建一个目标备节点。
可以理解,新建目标备节点时,需要新建一个节点,建立新建的节点与目标主节点之间的主备复制关系,以完成新建目标备节点的目的。但是,新建的节点需要复制新的目标主节点中目标数据库的所有数据,而发生故障的目标主节点中存储的目标数据库的数据十分接近新的目标主节点,甚至于完全一样。
所以在本发明实施例中,为了尽量减少数据的复制操作,在将目标备节点切换为新的目标主节点之后,目标控制节点首先重启上述发生故障的目标主节点,如果重启成功,则可以直接将重启的目标主节点切换为新的目标备节点,以使得主备服务***中尽快出现新的目标备节点。
另外,本发明实施例中的目标备节点同样会发生故障,显然的,目标备节点的故障同样是由目标中控节点进行感知。当目标中控节点感知到目标备节点发生故障时,可以新建一个节点,建立目标主节点与新建的节点之间的主备复制关系,完成新建目标备节点的操作。
应该说明的是,在本发明实施例中,目标数据库的目标主节点以及目标备节点的位置信息以及主备关系信息可以存储在一个元数据库中,其中,位置信息指数据库的节点所处的机房、MAC地址信息等,主备关系信息指数据库的节点为主节点还是备节点的信息。该元数据库同样可以是由至少两个元数据库节点组成,最优的,可以是三个元数据库节点,每个元数据库中存储的数据信息相同,并且任意两个元数据库节点不处于同一机房中。
上述目标中控节点在感知到某一数据库节点发生故障时,可以查询一个元数据库节点,根据其内记录的位置信息以及主备关系信息,确定信息:发生故障的数据库节点为主节点还是备节点、该数据库节点对应哪一数据库以及该数据库节点对应的备节点或者主节点所处的位置,确定上述信息后目标中控节点生成相应的节点切换命令,已告知目标控制节点应该执行的操作。
并且,在任意一个数据库节点的位置信息以及主备关系信息被改变时,目标控制节点还需要在一个元数据库节点中更新该数据库节点的位置信息以及主备关系信息,使得其它元数据库节点同步更新该数据库节点的位置信息以及主备关系信息。
例如,多个元数据库节点是一种一主多从的架构,数据库a对应的主节点处于机房1中,其MAC地址为MAC1,由于该主节点发生故障,目标控制节点切换数据库a对应的备节点为新的主节点,该备节点处于机房2中,其MAC地址为MAC2,则目标控制节点将处于主服务状态的元数据库节点中记录的信息:“数据库a对应的主节点处于机房1中,其MAC地址为MAC1”,更新为“数据库a对应的主节点处于机房2中,其MAC地址为MAC2”。然后所有的处于从服务状态的元数据库节点同步数据。
可以理解,由于元数据库可以是由至少两个元数据库节点组成,并且任意两个元数据库节点不处于同一机房中,所以无论是某一元数据库节点单一发生故障还是某一个机房故障导致其内的元数据库节点发生故障,主备服务***中依然存在可用的元数据库节点,因而主备服务***中元数据库的可用性高。
当然,上述位置信息以及主备关系信息并不限于记录在上述元数据库中,还可以记录在上述目标中控节点以及每个控制节点中,需要注意的是,如果上述位置信息以及主备关系信息记录在上述目标中控节点以及每个控制节点中时,在目标控制节点更新本地记录的上述位置信息以及主备关系信息时,还应该同时更新上述目标中控节点以及其它控制节点中记录的上述位置信息以及主备关系信息。
另外,需要说明的是,目标主节点和目标备节点部署在不同的机房中,所以对于任意一个访问目标数据库的外部设备而言,其与目标主节点以及目标备节点之间的路由路径必然是不同的,所以在实际应用中,当外部设备访问目标数据库时,可以先确认其访问目标主节点更快,还是访问目标备节点更快,如果其访问目标主节点更快,则直接访问目标主节点;如果其访问目标备节点更快,则可以向目标控制节点发送节点切换请求,以最终使得目标备节点被切换为新的目标主节点,该外部设备再访问新的目标主节点,满足其就近访问的需求。
由以上可见,与现有技术相比,本实施例提供的方案中,由于目标备节点所处的机房不同于目标主节点所处的目标机房,而主备服务***包含至少两个控制节点,且目标机房和目标备节点所处的机房中均设置有一个控制节点,所以目标机房整体发生故障时,目标中控节点仍然可以选择到目标控制节点,并由目标控制节点切换目标备节点成为新的目标主节点,即当数据库的主节点所在的机房出现故障时,主备服务***依然能够实现主节点故障的恢复,保证主备服务***正常提供数据存取服务。
可以理解,在上述图1所示的第一***实施例中,目标中控节点可以不在目标机房中,例如,在非目标机房中固定设置有一个目标中控节点。但是,一个目标中控节点就占据一个机房,容易造成资源的浪费;更重要的,如果目标中控节点失效后,出现目标主节点失效故障的问题,此时,无法完成主节点故障的恢复。所以在本实施例中,该目标中控节点可以不固定在某一个机房中。
在上述图1所示的第一***实施例的基础上,作为本发明实施例的第二***实施例,如图2所示,上述主备服务***可以包括至少两个中控节点,如图中的中控节点1~m,其中,m≥2,上述目标中控节点为主备服务***所包含的至少两个中控节点中的第一主节点;上述至少两个中控节点处于不同机房,上述至少两个中控节点中,除第一主节点外,其余均为第一主节点对应的第一从节点。
本实施例中,上述主备服务***还包括目标协调服务节点。
该目标协调服务节点,用于在感知到第一主节点故障时,从当前可用的第一从节点中选择一个第一从节点,切换所选择的第一从节点为新的第一主节点。
可以理解,在本实施例中,主备服务***包含有多个中控节点,并且每一个中控节点都处于不同的机房中,多个中控节点采用主从架构,并由目标协调服务节点完成主从节点的切换。
所以,无论是某一中控节点单一发生故障还是某一个机房故障导致其内的中控节点发生故障,主备服务***中依然存在可用的中控节点,因而主备服务***中中控节点的可用性高。
示例性的,在上述目标主节点发生故障前,所有中控节点中的第一主节点恰好位于目标机房中,所以在目标机房发生故障时,首先是由目标协调服务节点感知到当前的第一主节点发生了故障,然后从上述各个第一从节点中选择一个第一从节点,并将所选择的第一从节点切换为新的第一主节点。
此时,该新的第一主节点即是前述第一***实施例中的目标中控节点,则此时由新的第一主节点执行上述在感知到目标主节点故障时,从当前可用的控制节点中确定目标控制节点;向目标控制节点发送节点切换命令的步骤。
应该说明的是,本发明实施例并不限定目标协调服务节点从上述各个第一从节点中选择一个第一从节点的具体实现方式,如,目标协调服务节点随机地从各个第一从节点中选择一个第一从节点作为新的第一主节点。
作为本发明实施例的一种实现方式,上述目标协调服务节点内可以设置有目标锁,上述第一主节点为上述至少两个中控节点中,占用目标锁的中控节点;
上述目标协调服务节点,具体用于在感知到目标锁未被占用时,向当前可用的第一从节点发送目标锁未被占用的通知信息;
每个第一从节点,用于在接收到通知信息后,判断目标协调服务节点中的目标锁是否被其他第一从节点占用;如果否,占用该目标锁,切换自身为新的第一主节点。
上述目标协调服务节点可以是常用的Zookeeper(一种分布式的,开放源码的分布式应用程序协调服务)节点,上述目标锁实现了一种锁机制。本领域技术人员公知的是,第一主节点占用锁可以理解为:在锁所对应的文件中,第一主节点写入自身的信息,表明自身为主服务状态,但是,第一主节点写入的信息具有一定的时效性,需要第一主节点定期在写入的信息失效前去重新刷新写入信息的时效,以保证锁仅被该第一主节点单独占用。
例如,第一主节点将自身的IP地址和MAC地址写入到锁所对应的文件中,并且上述信息的有效期为写入信息后的1分钟内,假设第一主节点第一次写入自身的IP地址和MAC地址的时刻为2017年5月28日2时4分3秒,则第一主节点可以在2017年5月28日2时5分0秒时重新将自身的IP地址和MAC地址写入到锁所对应的文件,并在此后,每间隔一分钟执行重新将自身的IP地址和MAC地址写入到锁所对应的文件的操作。
可以理解,当第一主节点故障后,其无法执行重新将自身的IP地址和MAC地址写入到锁所对应的文件的操作,所以目标协调服务节点可以感知到目标锁所对应的文件中写入的信息已经失效,即当前该目标所锁未被占用,所以目标协调服务节点向当前可用的第一从节点发送目标锁未被占用的通知信息。
当然,任意一个第一从节点在接收到上述通知信息时,都可以执行占用目标锁的操作,但是由于第一从节点的数量较多,所以通常是最先占用该目标锁的第一从节点才会占用成功,并成为新的第一主节点。
在最先占用该目标锁的第一从节点占用成功后,其它的第一从节点再去占用目标锁时,由于目标锁已被占用,所以,其它的第一从节点无法成功占用目标锁,其它的第一从节点成为新的第一主节点对应的从节点。
当然,上述锁机制属于现有技术,本发明实施例在此不做详细介绍,本领域技术人员可以基于现有技术中实现第一从节点至第一主节点的切换。
可以理解,在上述图2所示的第二***实施例中,目标协调服务节点可以不在目标机房中,例如,在非目标机房中固定设置有一个目标协调服务节点。但是,一个目标协调服务节点就占据一个机房,容易造成资源的浪费;更重要的,如果目标协调服务节点失效后,同时出现目标主节点和第一主节点失效故障的问题,此时,主备服务***中无法选择出最新的第一主节点,进而无法无法完成主节点故障的恢复。所以在本实施例中,该目标协调服务节点可以不固定在某一个机房中。
在上述图2所示的第二***实施例的基础上,作为本发明实施例的第三***实施例,如图3所示,上述主备服务***可以包括至少三个协调服务节点,如图3中的协调服务节点1~x,其中,x≥3;
其中,目标协调服务节点为:主备服务******所包含的至少三个协调服务节点中的第二主节点;上述至少三个协调服务节点中,除第二主节点外,其余均为第二主节点对应的第二从节点,且任意一个配置有协调服务节点的机房中,协调服务节点的数量小于主备服务***中协调服务节点总数量的一半;
所有第二从节点用于,在感知到第二主节点故障时,基于各自预先设置的主节点选举机制,从当前可用的第二从节点中选举出一个第二从节点,作为新的第二主节点。
首先应该说明的是,主备服务***中的协调服务节点的数量为3个,但是本领域技术上人员公知的是,最优的,主备服务***中的协调服务节点的数量为5个。
上述主节点选举机制为现有技术中提供的一种机制,在该主节点选举机制下,当主节点故障时,如果一个从节点想要成为新的主节点,需要得到超过节点总数一半的从节点的同意,所以在本实施例中,任意一个配置有协调服务节点的机房中,协调服务节点的数量小于主备服务***中协调服务节点总数量的一半。
例如,主备服务***中协调服务节点总数量为5个,某一机房所包含的协调服务节点的数量为3个,当该机房中所包含的一个协调服务节点为第二主节点时,如果该机房整体出现故障,此时,由于主节点选举机制的限制,剩余的两个协调服务节点中的任意一个想要成为新的第二主节点,都无法得到超过节点总数一半的从节点的同意,即此时主备服务***中无法出现新的第二主节点。
如果主备服务***中协调服务节点总数量为5个,任一机房所包含的协调服务节点的数量最多为2个,当包含有两个协调服务节点的机房中所包含的一个协调服务节点为第二主节点时,如果该机房整体出现故障,此时,剩余的三个协调服务节点中的任意一个想要成为新的第二主节点,都可以得到超过节点总数一半的从节点的同意,即此时主备服务***中可以出现新的第二主节点。
当然,本实施例中的所有第二从节点用于,在感知到第二主节点故障时,基于各自预先设置的主节点选举机制,从当前可用的第二从节点中选举出一个第二从节点,作为新的第二主节点,可以理解为:该时刻所有未出现故障的第二从节点在感知到第二主节点故障时,基于各自预先设置的主节点选举机制,从当前可用的第二从节点中选举出一个第二从节点,作为新的第二主节点。
可以理解,在本实施例中,主备服务***包含有多个协调服务节点,并且任意一个配置有协调服务节点的机房中,协调服务节点的数量小于主备服务***中协调服务节点总数量的一半,并由所有第二从节点完成主从节点的切换。
所以,无论是某一协调服务节点单一发生故障还是某一个机房故障导致其内的协调服务节点发生故障,主备服务***中依然存在可用的、处于主状态的协调服务节点,因而主备服务***中协调服务节点的可用性高。
下面通过以具体实例来对本发明进行简单介绍。
图4为本发明实施例提供的主备服务***的应用场景示意图。图4中展示有8组MySQL数据库节点,其中,MySQL1~8分别为8组MySQL数据库分别对应的数据库主节点;MySQL1'~8'分别为MySQL1~8分别对应的数据库从节点;所有的数据库节点部署在机房1和机房2中,且任意一组数据库节点中,数据库主节点与数据库从节点不在同一机房中。
应该说明的是,主备服务***中还包括有5个协调服务节点(图4中未示出),5个协调服务节点部署在3个机房中,且,任意一个机房中协调服务节点的部署数量不超过两个。另外,中控节点1除了与控制节点1通信连接外,还与控制节点2通信连接,同理,中控节点2除了与控制节点2通信连接外,还与控制节点1通信连接。控制节点1与控制节点2均与所有的数据库节点相通信连接。
假设当前中控节点1为主服务状态,即中控节点1为上述目标中控节点。图中的MySQL8为本发明实施例的目标主节点,MySQL8'为本发明实施例的目标备节点。
当机房1中仅MySQL8发生故障时,中控节点1感知到MySQL8发生故障,则此时中控节点1生成节点切换命令,并将节点切换命令发送给机房1的网关,机房1的网关接收到上述节点切换命令后,将节点切换命令发送给控制节点1,则控制节点1在接收到节点切换命令后,按照节点切换命令,将MySQL8'切换为新的目标主节点。
再假设机房1中部署有两个协调服务节点,且当前时刻其中一个协调服务节点为主服务状态。
当机房1整体发生故障时,主备服务***中剩余的3个可用的协调服务节点基于预先设置的主节点选举机制,从剩余的3个可用的协调服务节点选择举出一个协调服务节点作为新的第二主节点,新的第二主节点作为上述目标协调服务节点,在感知到目标锁未被占用时,向中控节点2发送目标锁未被占用的通知信息;中控节点2在接收到通知信息后,占用该目标锁,切换自身为新的第一主节点。
中控节点2成为新的第一主节点后,基于心跳机制感知到MySQL8发生故障时,生成节点切换命令,并将节点切换命令发送给机房2的网关,机房2的网关接收到上述节点切换命令后,将节点切换命令发送给控制节点2,则控制节点2在接收到节点切换命令后,按照节点切换命令,将MySQL8'切换为新的目标主节点。
相应于上述图1所示的第一***实施例,本发明实施例还提供了一种主节点故障恢复方法,应用于主备服务***,该主备服务***包括目标中控节点、至少两个控制节点、目标数据库的目标主节点、以及对应于目标主节点的目标备节点,
其中,目标备节点所处的机房不同于目标主节点所处的目标机房,且目标机房和目标备节点的机房中均设置有一个控制节点;任意控制节点均与目标主节点和目标备节点通信连接,目标中控节点与所有控制节点通信连接;
如图5所示,上述方法包括:
S101:目标中控节点感知到目标主节点故障时,从当前可用的控制节点中确定目标控制节点;向目标控制节点发送节点切换命令。
S102:目标控制节点在接收到节点切换命令后,按照节点切换命令,将目标备节点切换为新的目标主节点。
具体的,在实际应用中,上述主备服务***还可以包括目标中控节点所处机房的网关,该网关内记录有各个控制节点与目标虚拟IP地址的对应关系;
上述目标中控节点感知到目标主节点故障时,从当前可用的控制节点中确定目标控制节点;向目标控制节点发送节点切换命令(S101)的步骤,可以包括:
目标中控节点感知到述目标主节点故障时,向网关发送目的IP地址为目标虚拟IP地址的节点切换命令;
网关在接收到所述节点切换命令后,根据上述对应关系,从目标虚拟IP地址对应的、当前可用的控制节点中确定目标控制节点,并将节点切换命令发送给目标控制节点。
作为本发明实施例的第一种实现方式,上述网关在接收到节点切换命令后,根据上述对应关系,从目标虚拟IP地址对应的、当前可用的控制节点中确定目标控制节点的步骤,可以包括:
网关在接收到节点切换命令后,根据上述对应关系,从目标虚拟IP地址对应的、当前可用的控制节点中,随机确定一个控制节点为目标控制节点。
作为本发明实施例的第一种实现方式,上述网关在接收到节点切换命令后,根据上述对应关系,从目标虚拟IP地址对应的、当前可用的控制节点中确定目标控制节点的步骤,可以包括:
上述网关在接收到节点切换命令后,根据上述对应关系,并基于其内预先记录的各个控制节点的地址信息,计算自身与目标虚拟IP地址对应的、当前可用的所有控制节点之间分别对应的路由路径;
上述网关确定对应路由路径最短的控制节点为目标控制节点。
在实际应用中,具体的,在所述目标控制节点在接收到所述节点切换命令后,按照所述节点切换命令,将所述目标备节点切换为新的目标主节点的步骤之后,所述方法还包括:
所述目标控制节点重启发生故障的目标主节点,并判断是否成功重启;如果是,切换该发生故障的目标主节点为新的目标备节点;如果否,新建一个目标备节点。
由以上可见,与现有技术相比,本实施例提供的方案中,由于目标备节点所处的机房不同于目标主节点所处的目标机房,而主备服务***包含至少两个控制节点,且目标机房和目标备节点所处的机房中均设置有一个控制节点,所以目标机房整体发生故障时,目标中控节点仍然可以选择到目标控制节点,并由目标控制节点切换目标备节点成为新的目标主节点,即当数据库的主节点所在的机房出现故障时,主备服务***依然能够实现主节点故障的恢复,保证主备服务***正常提供数据存取服务。
相应于上述图2所示的第二***实施例,在图5所示方法实施例的基础上,上述主备服务***包括至少两个中控节点,上述目标中控节点为主备服务***所包含的至少两个中控节点中的第一主节点;上述至少两个中控节点处于不同机房,上述至少两个中控节点中,除第一主节点外,其余均为第一主节点对应的第一从节点;
主上述备服务***还包括目标协调服务节点;
在上述目标中控节点感知到目标主节点故障时,从当前可用的控制节点中确定目标控制节点的步骤之前,上述方法还可以包括:
目标协调服务节点感知到第一主节点故障时,从当前可用的第一从节点中选择一个第一从节点,切换所选择的第一从节点为新的第一主节点,再由新的第一主节点执行感知到所述目标主节点故障时,从当前可用的控制节点中确定目标控制节点的步骤。
即在本实施例中,主节点故障恢复方法,如图6所示,可以包括:
S201:目标协调服务节点感知到第一主节点故障时,从当前可用的第一从节点中选择一个第一从节点,切换所选择的第一从节点为新的第一主节点;
S202:新的第一主节点感知到目标主节点故障时,从当前可用的控制节点中确定目标控制节点;向目标控制节点发送节点切换命令;
S203:目标控制节点在接收到节点切换命令后,按照节点切换命令,将目标备节点切换为新的目标主节点。
在实际应用中,具体的,所述目标协调服务节点内可以设置有目标锁,所述第一主节点为所述至少两个中控节点中,占用所述目标锁的中控节点;
所述目标协调服务节点感知到所述第一主节点故障时,从当前可用的第一从节点中选择一个第一从节点,切换所选择的第一从节点为新的第一主节点的步骤,可以包括:
所述目标协调服务节点感知到所述目标锁未被占用时,向当前可用的第一从节点发送目标锁未被占用的通知信息;
每个第一从节点在接收到所述通知信息后,判断所述目标协调服务节点中的目标锁是否被其他第一从节点占用;如果否,占用所述目标锁,切换自身为新的第一主节点。
在本实施例中,主备服务***包含有多个中控节点,并且每一个中控节点都处于不同的机房中,多个中控节点采用主从架构,并由目标协调服务节点完成主从节点的切换。所以,无论是某一中控节点单一发生故障还是某一个机房故障导致其内的中控节点发生故障,主备服务***中依然存在可用的中控节点,因而主备服务***中中控节点的可用性高。
相应于上述图3所示的第三***实施例,在图6所示方法实施例的基础上,上述主备服务***可以包括至少三个协调服务节点;
上述目标协调服务节点为:主备服务***所包含的至少三个协调服务节点中的第二主节点;上述至少三个协调服务节点中,除第二主节点外,其余均为第二主节点对应的第二从节点,且任意一个配置有协调服务节点的机房中,协调服务节点的数量小于***中协调服务节点总数量的一半;
相应的,上述方法还可以包括:
所有第二从节点感知到第二主节点故障时,基于各自预先设置的主节点选举机制,从当前可用的第二从节点中选举出一个第二从节点,作为新的第二主节点;
新的第二主节点执行所述感知到所述目标主节点故障时,从当前可用的第一从节点中选择一个第一从节点,切换所选择的第一从节点为新的目标主节点的步骤。
即在本实施例中,主节点故障恢复方法的流程示意图如图7所示,包括:
S301:所有第二从节点感知到第二主节点故障时,基于各自预先设置的主节点选举机制,从当前可用的第二从节点中选举出一个第二从节点,作为新的第二主节点;
S302:新的第二主节点感知到第一主节点故障时,从当前可用的第一从节点中选择一个第一从节点,切换所选择的第一从节点为新的第一主节点;
S303:新的第一主节点感知到目标主节点故障时,从当前可用的控制节点中确定目标控制节点;向目标控制节点发送节点切换命令;
S304:目标控制节点在接收到节点切换命令后,按照节点切换命令,将目标备节点切换为新的目标主节点。
在本实施例中,主备服务***包含有多个协调服务节点,并且任意一个配置有协调服务节点的机房中,协调服务节点的数量小于主备服务***中协调服务节点总数量的一半,并由所有第二从节点完成主从节点的切换。所以,无论是某一协调服务节点单一发生故障还是某一个机房故障导致其内的协调服务节点发生故障,主备服务***中依然存在可用的、处于主状态的协调服务节点,因而主备服务***中协调服务节点的可用性高。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于***实施例,所以描述的比较简单,相关之处参见***实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (16)
1.一种主备服务***,其特征在于,包括:目标中控节点、至少两个控制节点、目标数据库的目标主节点、以及对应于所述目标主节点的目标备节点,
其中,所述目标备节点所处的机房不同于所述目标主节点所处的目标机房,且所述目标机房和所述目标备节点所处的机房中均设置有一个所述控制节点;任意所述控制节点均与所述目标主节点和所述目标备节点通信连接,所述目标中控节点与所有控制节点通信连接;
所述目标中控节点,用于在感知到所述目标主节点故障时,从当前可用的控制节点中确定目标控制节点;向所述目标控制节点发送节点切换命令;
所述目标控制节点,用于在接收到所述节点切换命令后,按照所述节点切换命令,将所述目标备节点切换为新的目标主节点。
2.根据权利要求1所述的***,其特征在于,
所述***还包括所述目标中控节点所处机房的网关,所述网关内记录有各个控制节点与目标虚拟IP地址的对应关系;
所述目标中控节点,具体用于在感知到所述目标主节点故障时,向所述网关发送目的IP地址为所述目标虚拟IP地址的节点切换命令;
所述网关,用于在接收到所述节点切换命令后,根据所述对应关系,从所述目标虚拟IP地址对应的、当前可用的控制节点中确定目标控制节点,并将所述节点切换命令发送给所述目标控制节点。
3.根据权利要求2所述的***,其特征在于,
所述网关,具体用于在接收到所述节点切换命令后,根据所述对应关系,从所述目标虚拟IP地址对应的、当前可用的控制节点中,随机确定一个控制节点为目标控制节点。
4.根据权利要求2所述的方法,其特征在于,
所述网关,具体用于在接收到所述节点切换命令后,根据所述对应关系,并基于其内预先记录的各个控制节点的地址信息,计算自身与所述目标虚拟IP地址对应的、当前可用的所有控制节点之间分别对应的路由路径;确定对应路由路径最短的控制节点为目标控制节点。
5.根据权利要求1所述的***,其特征在于,所述***包括至少两个中控节点,所述目标中控节点为所述***所包含的至少两个中控节点中的第一主节点;所述至少两个中控节点处于不同机房,所述至少两个中控节点中,除所述第一主节点外,其余均为所述第一主节点对应的第一从节点;
所述***还包括目标协调服务节点;
所述目标协调服务节点,用于在感知到所述第一主节点故障时,从当前可用的第一从节点中选择一个第一从节点,切换所选择的第一从节点为新的第一主节点。
6.根据权利要求5所述的***,其特征在于,
所述目标协调服务节点内设置有目标锁,所述第一主节点为所述至少两个中控节点中,占用所述目标锁的中控节点;
所述目标协调服务节点,具体用于在感知到所述目标锁未被占用时,向当前可用的第一从节点发送目标锁未被占用的通知信息;
每个第一从节点,用于在接收到所述通知信息后,判断所述目标协调服务节点中的目标锁是否被其他第一从节点占用;如果否,占用所述目标锁,切换自身为新的第一主节点。
7.根据权利要求5所述的***,其特征在于,所述***包括至少三个协调服务节点;
所述目标协调服务节点为:所述***所包含的至少三个协调服务节点中的第二主节点;所述至少三个协调服务节点中,除第二主节点外,其余均为第二主节点对应的第二从节点,且任意一个配置有协调服务节点的机房中,协调服务节点的数量小于所述***中协调服务节点总数量的一半;
所有所述第二从节点用于,在感知到所述第二主节点故障时,基于各自预先设置的主节点选举机制,从当前可用的第二从节点中选举出一个第二从节点,作为新的第二主节点。
8.根据权利要求1~7任一项所述的***,且特征在于,
所述目标控制节点,还用于在将所述目标备节点切换为新的目标主节点之后,重启发生故障的目标主节点,并判断是否成功重启;如果是,切换该发生故障的目标主节点为新的目标备节点;如果否,新建一个目标备节点。
9.一种主节点故障恢复方法,其特征在于,应用于主备服务***,所述***包括目标中控节点、至少两个控制节点、目标数据库的目标主节点、以及对应于所述目标主节点的目标备节点,
所述目标备节点所处的机房不同于所述目标主节点所处的目标机房,且所述目标机房和所述目标备节点所处的机房中均设置有一个所述控制节点;任意所述控制节点均与所述目标主节点和所述目标备节点通信连接,所述目标中控节点与所有控制节点通信连接;
所述方法包括:
所述目标中控节点感知到所述目标主节点故障时,从当前可用的控制节点中确定目标控制节点;向所述目标控制节点发送节点切换命令;
所述目标控制节点在接收到所述节点切换命令后,按照所述节点切换命令,将所述目标备节点切换为新的目标主节点。
10.根据权利要求9所述的方法,其特征在于,
所述***还包括所述目标中控节点所处机房的网关,所述网关内记录有各个控制节点与目标虚拟IP地址的对应关系;
所述目标中控节点感知到所述目标主节点故障时,从当前可用的控制节点中确定目标控制节点;向所述目标控制节点发送节点切换命令的步骤,包括:
所述目标中控节点感知到所述目标主节点故障时,向所述网关发送目的IP地址为所述目标虚拟IP地址的节点切换命令;
所述网关在接收到所述节点切换命令后,根据所述对应关系,从所述目标虚拟IP地址对应的、当前可用的控制节点中确定目标控制节点,并将所述节点切换命令发送给所述目标控制节点。
11.根据权利要求10所述的方法,其特征在于,
所述网关在接收到所述节点切换命令后,根据所述对应关系,从所述目标虚拟IP地址对应的、当前可用的控制节点中确定目标控制节点的步骤,包括:
所述网关在接收到所述节点切换命令后,根据所述对应关系,从所述目标虚拟IP地址对应的、当前可用的控制节点中,随机确定一个控制节点为目标控制节点。
12.根据权利要求10所述的方法,其特征在于,
所述网关在接收到所述节点切换命令后,根据所述对应关系,从所述目标虚拟IP地址对应的、当前可用的控制节点中确定目标控制节点的步骤,包括:
所述网关在接收到所述节点切换命令后,根据所述对应关系,并基于其内预先记录的各个控制节点的地址信息,计算自身与所述目标虚拟IP地址对应的、当前可用的所有控制节点之间分别对应的路由路径;
所述网关确定对应路由路径最短的控制节点为目标控制节点。
13.根据权利要求9所述的方法,其特征在于,所述***包括至少两个中控节点,所述目标中控节点为所述***所包含的至少两个中控节点中的第一主节点;所述至少两个中控节点处于不同机房,所述至少两个中控节点中,除所述第一主节点外,其余均为所述第一主节点对应的第一从节点;
所述***还包括目标协调服务节点;
在所述目标中控节点感知到所述目标主节点故障时,从当前可用的控制节点中确定目标控制节点的步骤之前,所述方法还包括:
所述目标协调服务节点感知到所述第一主节点故障时,从当前可用的第一从节点中选择一个第一从节点,切换所选择的第一从节点为新的第一主节点,再由新的第一主节点执行感知到所述目标主节点故障时,从当前可用的控制节点中确定目标控制节点的步骤。
14.根据权利要求13所述的方法,其特征在于,所述目标协调服务节点内设置有目标锁,所述第一主节点为所述至少两个中控节点中,占用所述目标锁的中控节点;
所述目标协调服务节点感知到所述第一主节点故障时,从当前可用的第一从节点中选择一个第一从节点,切换所选择的第一从节点为新的第一主节点的步骤,包括:
所述目标协调服务节点感知到所述目标锁未被占用时,向当前可用的第一从节点发送目标锁未被占用的通知信息;
每个第一从节点在接收到所述通知信息后,判断所述目标协调服务节点中的目标锁是否被其他第一从节点占用;如果否,占用所述目标锁,切换自身为新的第一主节点。
15.根据权利要求13所述的方法,其特征在于,所述***包括至少三个协调服务节点;
所述目标协调服务节点为:所述***所包含的至少三个协调服务节点中的第二主节点;所述至少三个协调服务节点中,除第二主节点外,其余均为第二主节点对应的第二从节点,且任意一个配置有协调服务节点的机房中,协调服务节点的数量小于所述***中协调服务节点总数量的一半;
相应的,所述方法还包括:
所有所述第二从节点感知到所述第二主节点故障时,基于各自预先设置的主节点选举机制,从当前可用的第二从节点中选举出一个第二从节点,作为新的第二主节点;
新的第二主节点执行所述感知到所述目标主节点故障时,从当前可用的第一从节点中选择一个第一从节点,切换所选择的第一从节点为新的目标主节点的步骤。
16.根据权利要求9~15任一项所述的方法,且特征在于,在所述目标控制节点在接收到所述节点切换命令后,按照所述节点切换命令,将所述目标备节点切换为新的目标主节点的步骤之后,所述方法还包括:
所述目标控制节点重启发生故障的目标主节点,并判断是否成功重启;如果是,切换该发生故障的目标主节点为新的目标备节点;如果否,新建一个目标备节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710417173.7A CN109005045B (zh) | 2017-06-06 | 2017-06-06 | 主备服务***及主节点故障恢复方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710417173.7A CN109005045B (zh) | 2017-06-06 | 2017-06-06 | 主备服务***及主节点故障恢复方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109005045A true CN109005045A (zh) | 2018-12-14 |
CN109005045B CN109005045B (zh) | 2022-01-25 |
Family
ID=64572693
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710417173.7A Active CN109005045B (zh) | 2017-06-06 | 2017-06-06 | 主备服务***及主节点故障恢复方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109005045B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110855504A (zh) * | 2019-11-22 | 2020-02-28 | 苏州浪潮智能科技有限公司 | 一种云平台管理节点的故障恢复方法、***及相关装置 |
CN111258823A (zh) * | 2020-01-17 | 2020-06-09 | 青梧桐有限责任公司 | 一种主从服务器的切换方法及*** |
CN111355600A (zh) * | 2018-12-21 | 2020-06-30 | 杭州海康威视数字技术股份有限公司 | 一种主节点确定方法和装置 |
CN111400404A (zh) * | 2020-03-18 | 2020-07-10 | 中国建设银行股份有限公司 | 一种节点初始化方法、装置、设备及存储介质 |
CN112199240A (zh) * | 2019-07-08 | 2021-01-08 | 华为技术有限公司 | 一种节点故障时进行节点切换的方法及相关设备 |
CN112671601A (zh) * | 2020-12-11 | 2021-04-16 | 航天信息股份有限公司 | 一种基于Zookeeper的接口监控***及方法 |
CN112738834A (zh) * | 2021-01-04 | 2021-04-30 | 烽火通信科技股份有限公司 | 一种mesh组网网络应急管理方法和电子设备 |
CN113285860A (zh) * | 2021-05-20 | 2021-08-20 | 上海涵润汽车电子有限公司 | 一种通过主节点刷写从节点的方法和*** |
CN113573329A (zh) * | 2020-04-28 | 2021-10-29 | 华为技术有限公司 | 节点控制的方法、***以及装置 |
CN113904914A (zh) * | 2020-12-31 | 2022-01-07 | 京东科技控股股份有限公司 | 一种服务切换方法、装置、***和存储介质 |
WO2023082800A1 (zh) * | 2021-11-11 | 2023-05-19 | 中兴通讯股份有限公司 | 主节点选择方法、分布式数据库及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010149117A1 (zh) * | 2009-11-04 | 2010-12-29 | 中兴通讯股份有限公司 | 实现业务***保护的方法及装置 |
CN102244609A (zh) * | 2011-06-15 | 2011-11-16 | 中兴通讯股份有限公司 | 解决vpls接入l3故障切换导致断流的方法及路由器 |
CN103226502A (zh) * | 2013-05-21 | 2013-07-31 | 中国工商银行股份有限公司 | 一种数据灾备控制***及数据恢复方法 |
CN103677967A (zh) * | 2012-09-03 | 2014-03-26 | 阿里巴巴集团控股有限公司 | 一种数据库的远程数据服务***及任务调度方法 |
US20160119255A1 (en) * | 2014-05-12 | 2016-04-28 | Futurewei Technologies, Inc. | Partial Software Defined Network Switch Replacement in IP Networks |
-
2017
- 2017-06-06 CN CN201710417173.7A patent/CN109005045B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010149117A1 (zh) * | 2009-11-04 | 2010-12-29 | 中兴通讯股份有限公司 | 实现业务***保护的方法及装置 |
CN102244609A (zh) * | 2011-06-15 | 2011-11-16 | 中兴通讯股份有限公司 | 解决vpls接入l3故障切换导致断流的方法及路由器 |
CN103677967A (zh) * | 2012-09-03 | 2014-03-26 | 阿里巴巴集团控股有限公司 | 一种数据库的远程数据服务***及任务调度方法 |
CN103226502A (zh) * | 2013-05-21 | 2013-07-31 | 中国工商银行股份有限公司 | 一种数据灾备控制***及数据恢复方法 |
US20160119255A1 (en) * | 2014-05-12 | 2016-04-28 | Futurewei Technologies, Inc. | Partial Software Defined Network Switch Replacement in IP Networks |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111355600B (zh) * | 2018-12-21 | 2023-05-02 | 杭州海康威视数字技术股份有限公司 | 一种主节点确定方法和装置 |
CN111355600A (zh) * | 2018-12-21 | 2020-06-30 | 杭州海康威视数字技术股份有限公司 | 一种主节点确定方法和装置 |
CN112199240A (zh) * | 2019-07-08 | 2021-01-08 | 华为技术有限公司 | 一种节点故障时进行节点切换的方法及相关设备 |
CN112199240B (zh) * | 2019-07-08 | 2024-01-30 | 华为云计算技术有限公司 | 一种节点故障时进行节点切换的方法及相关设备 |
CN110855504A (zh) * | 2019-11-22 | 2020-02-28 | 苏州浪潮智能科技有限公司 | 一种云平台管理节点的故障恢复方法、***及相关装置 |
CN111258823A (zh) * | 2020-01-17 | 2020-06-09 | 青梧桐有限责任公司 | 一种主从服务器的切换方法及*** |
CN111400404A (zh) * | 2020-03-18 | 2020-07-10 | 中国建设银行股份有限公司 | 一种节点初始化方法、装置、设备及存储介质 |
CN113573329A (zh) * | 2020-04-28 | 2021-10-29 | 华为技术有限公司 | 节点控制的方法、***以及装置 |
CN112671601A (zh) * | 2020-12-11 | 2021-04-16 | 航天信息股份有限公司 | 一种基于Zookeeper的接口监控***及方法 |
CN112671601B (zh) * | 2020-12-11 | 2023-10-31 | 航天信息股份有限公司 | 一种基于Zookeeper的接口监控***及方法 |
CN113904914A (zh) * | 2020-12-31 | 2022-01-07 | 京东科技控股股份有限公司 | 一种服务切换方法、装置、***和存储介质 |
CN112738834A (zh) * | 2021-01-04 | 2021-04-30 | 烽火通信科技股份有限公司 | 一种mesh组网网络应急管理方法和电子设备 |
CN113285860B (zh) * | 2021-05-20 | 2023-04-07 | 上海涵润汽车电子有限公司 | 一种通过主节点刷写从节点的方法和*** |
CN113285860A (zh) * | 2021-05-20 | 2021-08-20 | 上海涵润汽车电子有限公司 | 一种通过主节点刷写从节点的方法和*** |
WO2023082800A1 (zh) * | 2021-11-11 | 2023-05-19 | 中兴通讯股份有限公司 | 主节点选择方法、分布式数据库及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109005045B (zh) | 2022-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109005045A (zh) | 主备服务***及主节点故障恢复方法 | |
CN104243527B (zh) | 数据同步方法、数据同步装置及分布式*** | |
CN100423491C (zh) | 虚拟化网络存储***及其网络存储设备 | |
CN100583818C (zh) | 在网络连接设备之间进行切换的方法以及网络*** | |
US5430730A (en) | Method for building a sub-network in a distributed voice messaging system | |
CN103888277B (zh) | 一种网关容灾备份方法、装置和*** | |
US9291357B1 (en) | Redundant and selectable gateway and control elements for remote connected thermostats | |
CN109729129A (zh) | 存储集群的配置修改方法、存储集群及计算机*** | |
US8880703B2 (en) | Address distribution method, device and system thereof | |
CN104915353B (zh) | 分布式数据库下全局主键生成方法和*** | |
CN103312809A (zh) | 云平台中服务的分布式管理方法 | |
CN109474465A (zh) | 一种基于服务器集群的可动态流转的高可用性的实现方法和*** | |
CN105471995A (zh) | 基于SOA的大规模Web服务机群高可用实现方法 | |
CN109845192B (zh) | 动态地适配网络的计算机***和方法及计算机可读介质 | |
US20210026844A1 (en) | Virtual blockchain system, data management method, and program | |
JP2013161251A (ja) | コンピュータ障害監視プログラム、方法、及び装置 | |
CN102710520A (zh) | 一种备份lns的方法及装置 | |
CN109189854B (zh) | 提供持续业务的方法及节点设备 | |
CN111262892A (zh) | 一种多ros的服务发现*** | |
CN104125079A (zh) | 一种确定双机热备份配置信息的方法及装置 | |
CN106027313B (zh) | 网络链路容灾***及方法 | |
JP2003345773A (ja) | クラスタシステムにおける時刻補正方式 | |
JPH09186686A (ja) | 網管理システム | |
CN103684855A (zh) | 一种集群路由器智能管控的方法 | |
JP4579850B2 (ja) | ブレード型システムおよびコネクション管理方法 |
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 |