节点宕机恢复方法、装置、电子设备及存储介质与流程

文档序号:17773008发布日期:2019-05-28 19:40阅读:183来源:国知局
节点宕机恢复方法、装置、电子设备及存储介质与流程

本发明涉及计算机技术领域,特别是涉及节点宕机恢复方法、装置、电子设备及存储介质。



背景技术:

数据库中的数据可以用单节点进行存储,但对于用于存储缓存数据的缓存数据库而言,如果其采用单节点进行缓存数据的存储,则当单节点发生宕机,不但缓存数据库的读写服务无法继续提供,还会导致缓存数据库中的缓存数据丢失;所以现有技术中,为保证缓存数据库的高可用性,可以采用主从系统提供数据读写服务,例如对于redis数据库(一种开源的key-value数据库)。

现有针对于缓存数据库的主从系统中,主节点对外提供数据读写服务,从节点可以不提供服务,主节点与各个从节点之间建立有主从复制关系,保证从节点与主节点中存储有相同的缓存数据。当从节点宕机后,重启的从节点或者重启失败后新建的从节点会将当前主节点中所缓存的数据复制到其本地;主节点发生宕机时,从节点被切换为新的主节点,然后由新的节点对外提供数据读写服务。

可以理解,上述主从系统中,主节点单独宕机或者从节点单独宕机后,主从系统都可以恢复到正常的工作状态;但是,当主从系统中的主节点及其对应的从节点均宕机后,主节点和从节点中的缓存数据会均丢失,并导致主从系统的数据读写服务不可用。



技术实现要素:

本发明实施例的目的在于提供一种节点宕机恢复方法、装置、电子设备及存储介质,以提高主从系统的可用性,保证主从系统中的主节点及其对应的从节点均宕机后,主从系统可以恢复到正常的工作状态。具体技术方案如下:

为达上述目的,第一方面,本发明实施例提供了一种节点宕机恢复方法,应用于主从系统中的代理服务器,该主从系统还包括代理服务器所控制的目标主节点以及目标主节点对应的目标从节点,目标主节点为缓存数据库的主节点;

目标从节点中被配置有针对于缓存数据的持久化机制,目标主节点中未配置有上述持久化机制;

上述方法包括:

当检测到目标主节点和目标从节点均宕机时,确定目标从节点基于持久化机制生成的持久化文件;

基于目标从节点所生成的持久化文件,部署未宕机的目标主节点;

部署该未宕机的目标主节点对应的目标从节点。

优选的,上述主从系统中的节点创建在节点承建器上,节点承建器包括lxc容器或虚拟机;

上述基于目标从节点所生成的持久化文件,确定出一个未宕机的目标主节点的步骤,包括:

在第一节点承建器宕机且重启第一节点承建器失败的情况下,在代理服务器所控制的物理机中新建一个节点承建器;基于目标从节点所生成的持久化文件,在所新建的节点承建器中新建目标主节点;其中,该第一节点承建器为创建有上述发生宕机的目标主节点的节点承建器;

在第一节点承建器未宕机或者宕机后被成功重启的情况下,基于目标从节点所生成的持久化文件,重启发生宕机的目标主节点。

优选的,主从系统还包括除目标主节点外代理服务器所控制的非目标主节点、以及每个非目标主节点所对应的非目标从节点;

主从系统中所有主节点与从节点构成缓存数据库集群,缓存数据库集群中的每个节点中均携带有节点配置文件,节点配置文件中包含缓存数据库集群中每个节点的通用唯一识别码uuid;

上述基于目标从节点所生成的持久化文件,在所新建的节点承建器中新建目标主节点的步骤,包括:

判断发生宕机的目标主节点中的目标节点配置文件是否丢失;

如果丢失,基于目标从节点所生成的持久化文件,在所新建的节点承建器中创建一个节点;将所创建节点配置到缓存数据库集群中,并从缓存数据库集群中除所目标主节点外的节点中获得目标主节点的uuid,将目标主节点的uuid配置给所创建的节点,完成目标主节点的新建;

如果未丢失,基于目标从节点所生成的持久化文件和目标节点配置文件,在所新建的节点承建器中创建一个节点,将所创建节点配置到缓存数据库集群中,完成目标主节点的新建;

上述基于目标从节点所生成的持久化文件,重启发生宕机的目标主节点的步骤,包括:

判断发生宕机的目标主节点中的目标节点配置文件是否丢失;

如果丢失,从缓存数据库集群中除目标主节点外的节点中获得节点配置文件,基于目标从节点所生成的持久化文件以及所获得的节点配置文件,重启发生宕机的目标主节点;

如果未丢失,基于目标从节点所生成的持久化文件以及目标节点配置文件,重启发生宕机的目标主节点。

优选的,在上述在代理服务器所控制的物理机中新建一个节点承建器的步骤之后,上述方法还包括:

监测是否成功新建节点承建器;

如果不成功,生成失败报警信息;

如果成功,执行上述基于目标从节点所生成的持久化文件,在所新建的节点承建器中新建目标主节点的步骤。

优选的,在上述部署该未宕机的目标主节点对应的目标从节点的步骤之前,上述方法还包括:

控制所部署的目标主节点关闭自身缓存数据库的写服务;

相应的,在上述部署该未宕机的目标主节点对应的目标从节点的步骤之后,上方法还包括:

控制所部署的目标主节点开启自身缓存数据库的写服务。

优选的,在上控制所部署的目标主节点开启自身缓存数据库的写服务的步骤之前,上述方法还包括:

判断在部署该未宕机的目标主节点对应的目标从节点后,所部署目标从节点中写入的所有缓存数据是否均被完整持久化为持久数据;

如果均被持久化为持久数据,执行上述控制所部署的目标主节点开启自身缓存数据库的写服务的步骤。

优选的,上述部署该未宕机的目标主节点对应的目标从节点的步骤,包括:

基于主从复制机制,部署该未宕机的目标主节点对应的目标从节点。

优选的,上述基于主从复制机制,部署该未宕机的目标主节点对应的目标从节点的步骤,包括:

在第二节点承建器宕机且重启第二节点承建器失败的情况下,在代理服务器所控制的物理机中新建一个节点承建器;并基于主从复制机制,在所新建的节点承建器中新建目标从节点;其中,该第二节点承建器为创建有上述发生宕机的目标从节点的节点承建器;

在第二节点承建器未宕机或者宕机后被成功重启的情况下,基于主从复制机制,重启发生宕机的目标从节点。

第二方面,本发明实施例提供了一种节点宕机恢复装置,应用于主从系统中的代理服务器,该主从系统还包括代理服务器所控制的目标主节点以及目标主节点对应的目标从节点,目标主节点为缓存数据库的主节点;

上述目标从节点中被配置有针对于缓存数据的持久化机制,目标主节点中未配置有上述持久化机制;

上述装置包括:

确定模块,用于当检测到目标主节点和目标从节点均宕机时,确定目标从节点基于持久化机制生成的持久化文件;

第一部署模块,用于基于目标从节点所生成的持久化文件,部署未宕机的目标主节点;

第二部署模块,用于部署该未宕机的目标主节点对应的目标从节点。

优选的,上述主从系统中的节点创建在节点承建器上,节点承建器包括lxc容器或虚拟机;

上述第一部署模块,具体用于:

在第一节点承建器宕机且重启第一节点承建器失败的情况下,在代理服务器所控制的物理机中新建一个节点承建器;基于目标从节点所生成的持久化文件,在所新建的节点承建器中新建目标主节点;其中,该第一节点承建器为创建有上述发生宕机的目标主节点的节点承建器;

在第一节点承建器未宕机或者宕机后被成功重启的情况下,基于持久化文件,重启发生宕机的目标主节点。

优选的,主从系统还包括除目标主节点外代理服务器所控制的非目标主节点、以及每个非目标主节点所对应的非目标从节点;

主从系统中所有主节点与从节点构成缓存数据库集群,缓存数据库集群中的每个节点中均携带有节点配置文件,节点配置文件中包含缓存数据库集群中每个节点的通用唯一识别码uuid;

上述第一部署模块,具体用于:

在第一节点承建器宕机且重启第一节点承建器失败的情况下,在代理服务器所控制的物理机中新建一个节点承建器;判断发生宕机的目标主节点中的目标节点配置文件是否丢失;

如果丢失,基于目标从节点所生成的持久化文件,在所新建的节点承建器中创建一个节点;将所创建节点配置到缓存数据库集群中,并从缓存数据库集群中除目标主节点外的节点中获得目标主节点的uuid,将目标主节点的uuid配置给所创建的节点,完成目标主节点的新建;

如果未丢失,基于目标从节点所生成的持久化文件和目标节点配置文件,在所新建的节点承建器中创建一个节点,将所创建节点配置到缓存数据库集群中,完成目标主节点的新建;

在第一节点承建器未宕机或者宕机后被成功重启的情况下,判断发生宕机的目标主节点中的目标节点配置文件是否丢失;

如果丢失,从缓存数据库集群中除目标主节点外的节点中获得节点配置文件,基于目标从节点所生成的持久化文件以及所获得的节点配置文件,重启发生宕机的目标主节点;

如果未丢失,基于目标从节点所生成的持久化文件以及目标节点配置文件,重启发生宕机的目标主节点。

优选的,上述装置还包括:

监测模块,用于在代理服务器所控制的物理机中新建节点承建器后,监测是否成功新建节点承建器;

生成模块,用于在监测模块的监测结果为否的情况下,生成失败报警信息;

上述第一部署模块基于目标从节点所生成的持久化文件,在所新建的节点承建器中新建目标主节点,具体为:

在监测模块的监测结果为是的情况下,基于目标从节点所生成的持久化文件,在所新建的节点承建器中新建目标主节点。

优选的,上述装置还包括:

控制模块,用于在部署该未宕机的目标主节点对应的目标从节点之前,控制所部署的目标主节点关闭自身缓存数据库的写服务;在部署该未宕机的目标主节点对应的目标从节点之后,控制所部署的目标主节点开启自身缓存数据库的写服务。

优选的,上述装置还包括:

判断模块,用于在控制所部署的目标主节点开启自身缓存数据库的写服务之前,判断在部署该未宕机的目标主节点对应的目标从节点后,所部署目标从节点中写入的所有缓存数据是否均被完整持久化为持久数据;

相应的,上述控制模块控制所部署的目标主节点开启自身缓存数据库的写服务,具体为:

在判断模块的判断结果为是的情况下,控制所部署的目标主节点开启自身缓存数据库的写服务。

优选的,上述第二部署模块,具体用于:

基于主从复制机制,部署该未宕机的目标主节点对应的目标从节点。

优选的,在上述主从系统中的节点创建在节点承建器上的情况下,上述第二部署模块,具体用于:

在第二节点承建器宕机且重启第二节点承建器失败的情况下,在代理服务器所控制的物理机中新建一个节点承建器;并基于主从复制机制,在所新建的节点承建器中新建目标从节点;其中,该第二节点承建器为创建有上述发生宕机的目标从节点的节点承建器;

在第二节点承建器未宕机或者宕机后被成功重启的情况下,基于主从复制机制,重启发生宕机的目标从节点。

第三方面,本发明实施例提供了一种电子设备,其特征在于,包括处理器和存储器,其中:

存储器,用于存放计算机程序;

处理器,用于执行存储器上所存放的程序时,实现上述任一节点宕机恢复方法所述的方法步骤。

第四方面,本发明实施例提供了一种计算机可读存储介质,其特征在于,该计算机可读存储介质内存储有计算机程序,该计算机程序被处理器执行时实现上述任一节点宕机恢复方法所述的方法步骤。

第五方面,本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一节点宕机恢复方法所述的方法步骤。

第六方面,本发明实施例提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述任一节点宕机恢复方法所述的方法步骤。

由以上可知,本发明实施例提供的方案中,该节点宕机恢复方法应用于主从系统中的代理服务器,主从系统还包括代理服务器所控制的目标主节点以及目标主节点对应的目标从节点,该目标主节点为缓存数据库的主节点;该目标从节点中被配置有针对于缓存数据的持久化机制,该目标主节点中未配置有持久化机制;代理服务器在检测到目标主节点和目标从节点均宕机时,确定目标从节点基于持久化机制生成的持久化文件;基于该持久化文件,部署未宕机的目标主节点;最后部署该未宕机的目标主节点对应的目标从节点。

与现有技术相比,本发明实施例提供的方案中,目标从节点中被配置有针对于缓存数据的持久化机制,所以通过目标从节点基于所配置持久化机制生成的持久化文件可以复原目标主节点中的缓存数据;在目标主节点和目标从节点均宕机后,可以利用该持久化文件复原主从系统的缓存数据,进而将主从系统恢复到正常的工作状态,达到提高主从系统可用性的目的。此外,上述目标主节点中未配置有持久化机制,可以有效避免目标主节点因自身配置持久化机制而导致的主从系统提供数据读写服务性能降低的问题。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明一实施例提供的一种节点宕机恢复方法的流程示意图;

图2为本发明另一实施例提供的一种节点宕机恢复方法的流程示意图;

图3为本发明实施例涉及的主从系统的结构示意图;

图4为本发明又一实施例提供的一种节点宕机恢复方法的流程示意图;

图5为本发明一实施例提供的一种节点宕机恢复装置的结构示意图;

图6为本发明另一实施例提供的一种节点宕机恢复装置的结构示意图;

图7为本发明实施例提供的一种电子设备的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

下面,首先对本申请文件中涉及的技术术语进行简单介绍。

持久化机制,是将数据在持久状态和瞬时状态间转换的机制。通俗的讲,就是将瞬时数据,如缓存数据,持久化为持久数据。基于持久化机制所得到的持久数据可被永久保存的存储设备中,即使存储设备宕机,只要该持久数据未被损坏,该持久数据都不会丢失。

对于缓存数据库的数据节点而言,如果数据节点中配置了持久化机制,则数据节点中的缓存数据还会被持久化为持久数据,得到持久化文件。具体的,数据节点基于持久化机制将缓存数据持久化为持久数据的具体方式是多种多样的,可以是将数据节点中针对缓存数据的写操作记录到持久化文件中。上述写操作包括数据的增加操作、删除操作以及修改操作。

例如,对于redis缓存数据节点,其上可以配置aof(appendonlyfile)持久化机制,redis缓存数据节点的任何写操作都会被记录到持久化文件appendonly.aof中,当redis缓存数据节点宕机时,该持久化文件appendonly.aof不会丢失,重启redis缓存数据节点或者新建redis缓存数据节点时,可以基于该持久化文件appendonly.aof恢复redis缓存数据节点宕机前其中所缓存的缓存数据。

需要注意的是,缓存数据库的数据节点配置了持久化机制后,数据节点需要额外的资源来保证持久化机制的正常运行,所以数据节点提供其他服务的能力势必会受到影响,这也是现有技术中主从系统中各个数据节点都不配置持久化机制的原因,尤其是redis节点等对读写性能有高要求的数据节点;例如,数据节点在写入新的缓存数据的时候,还额外需要对缓存数据进行持久化操作,必然影响数据节点的性能。

主从复制机制,是主从系统中的主节点与其对应的从节点之间建立的一种机制,该机制使得主节点与其对应的从节点之间建立起主从复制关系,可以保证主节点数据更新时,从节点根据主节点的更新操作同步本地数据,保证主节点和从节点之间存储着相同的数据;另外,当新建或者重启从节点时,从节点可以将主节点中所缓存的数据复制到从节点本地。当然,主从复制机制的具体实现方式属于现有技术,本申请文件在此不做详细介绍。

例如,主节点和从节点中均缓存有数据a,在某一时刻,主节点中缓存的数据a被删除,则从节点基于主从复制机制,在感知到主节点缓存中的数据a被删除的情况下,将本地缓存的数据a删除。再如,从节点宕机后,新建一个节点来代替该宕机的从节点,然后新建的节点基于主从复制机制,将当前主节点中缓存的数据复制到本地,完成从节点的新建。

为了解决现有技术的主从系统中,主节点和从节点均宕机导致的主从系统不可用的问题,本发明实施例提供了节点宕机恢复方法、装置、电子设备及存储介质。

下面首先对本发明实施例所提供的一种节点宕机恢复方法进行介绍。

本发明实施例提供的一种节点宕机恢复方法,应用于主从系统中的代理服务器,该主从系统还包括代理服务器所控制的目标主节点以及目标主节点对应的目标从节点,该目标主节点为缓存数据库的主节点。

需要说明的是,该代理服务器是可以控制主从系统中的主节点和从节点的设备,所以该代理服务器亦可称为控制器。在实际应用中,该代理服务器、主节点以及从节点可以处于同一物理设备上,还可以处于不同的物理设备上,这都是合理的。

目标主节点为缓存数据库的主节点,所以目标从节点同样为缓存数据库的从节点。另外,本发明实施例并不限定缓存数据库的数据库类型,例如,该缓存数据库为redis数据库。

上述目标从节点中被配置有针对于缓存数据的持久化机制,上述目标主节点中未配置有所述持久化机制。

需要特别强调的是,现有技术中,为了避免部署持久化机制对数据节点性能的影响,不会在主从系统中的任何数据节点上针对缓存数据部署持久化机制。而与现有技术不同的是,本发明实施例涉及的主从系统中的主节点中未配置有针对于缓存数据的持久化机制,但在从节点中配置有针对于缓存数据的持久化机制。

可以理解,在主从系统中,主节点提供数据读写服务,当主节点执行写操作时,主节点不需要对缓存数据做持久化操作,所以主节点提供数据读写的服务并不受到影响,而从节点虽然在做了数据写操作后还需要做持久化操作,但是对主从系统提供服务的性能并不产生影响。

如图1所示,本发明实施例提供的节点宕机恢复方法包括:

s101:当检测到目标主节点和目标从节点均宕机时,确定目标从节点基于持久化机制生成的持久化文件。

代理服务器作为控制目标主节点和目标从节点的设备,其可以对目标主节点和目标从节点是否宕机的状态进行实时监测,代理服务器对于节点是否宕机的实时监测所采用技术可以参照现有技术,本发明实施例在此不再详细介绍。

目标主节点和目标从节点均宕机,可以是目标主节点和目标从节点同时宕机;也可以是目标主节点在先宕机后,新的用以替代原目标从节点的从节点完成数据同步之前,新的目标主节点再次宕机,可以理解,此情况下,主从系统的目标主节点和目标从节点均宕机;还可以是目标从节点在先宕机后,新的目标从节点完成数据同步之前,目标主节点宕机,同样的,此情况下,主从系统的目标主节点和目标从节点均宕机。

如前所述,目标从节点中配置有持久化机制,所以目标从节点中的缓存数据还会被持久化为持久数据,得到持久化文件。例如,目标从节点为redis缓存数据节点,目标从节点上可以配置aof持久化机制,目标从节点的任何写操作都会被记录到持久化文件appendonly.aof中。

可以理解,该持久化文件为永久存储的文件,即使目标从节点宕机,该持久化文件也不会丢失。所以在目标从节点宕机后,代理服务器还是可以在目标从节点所在的物理机中查找到目标从节点所生成的持久化文件,即上述步骤s101中确定目标从节点基于持久化机制生成的持久化文件的步骤。

s102:基于目标从节点所生成的持久化文件,部署未宕机的目标主节点。

首先应当说明的是,目标从节点所生成的持久化文件是目标从节点在发生宕机前所生成的,该持久化文件对应着目标从节点发生宕机前目标从节点中所缓存的数据,而由于目标主节点与目标从节点之间所存在的主从复制关系,目标从节点中的缓存数据与目标主节点中所存储的缓存数据相同,即可以利用该持久化文件获得目标主节点宕机前所缓存的数据。

当然,利用持久化文件获得缓存数据的方式可以参照现有技术,本发明实施例仅以下述实例进行示例性说明。示例性的,上述目标主节点以及目标从节点均为redis节点,在目标从节点中配置有aof持久化机制,由于该aof持久化机制的存在,目标从节点会将其内所发生的所有数据写操作记录到持久化文件中;则在利用持久化文件获得缓存数据时,可以执行持久化文件所记录的所有数据写操作,得到缓存数据。

本发明实施例中部署未宕机的目标主节点,可以是重启发生宕机的目标主节点;还可以是重新创建一个新的目标主节点;另外,重启或者新建目标主节点,除了需要利用上述持久化文件外,可能还会利用到其他信息,如数据库配置文件等;例如,当目标主节点为redis节点时,重启或新建目标主节点还需要利用redis数据库的配置文件redis.conf。

步骤s102的具体实现方式可以参照现有技术所有可行的技术,而本发明实施例也提供了一种可选的实现方式。具体的,上述主从系统中的节点创建在节点承建器上,节点承建器包括lxc(linuxcontainer)容器或虚拟机,可以理解,主从系统中的节点包括主节点和从节点。

数据节点通常是建立在虚拟设备中,本发明实施例中,将上述主从系统中的节点所处的虚拟设备称为节点承建器,具体的,节点承建器可以是lxc容器,也可以是虚拟机,或者是其他的可以被用来创建数据节点的虚拟设备。

在图1所示方法实施例的基础上,如图2所示,上述基于目标从节点所生成的持久化文件,部署未宕机的目标主节点s102的步骤,可以包括:

s1021:在第一节点承建器宕机且重启第一节点承建器失败的情况下,在代理服务器所控制的物理机中新建一个节点承建器;基于目标从节点所生成的持久化文件,在所新建的节点承建器中新建目标主节点;其中,第一节点承建器为创建有上述发生宕机的目标主节点的节点承建器。

在目标主节点被创建在第一节点承建器上的情况下,目标主节点发生的宕机可能是第一节点承建器未发生宕机,但目标主节点自身发生了宕机;还可能是该第一节点承建器发生了宕机,进而导致其上所创建的目标主节点发生宕机。所以在检测到目标主节点和目标从节点发生宕机后,代理服务器可以检查该第一节点承建器是否发生宕机,如果第一节点承建器发生宕机,则代理服务器首先需要执行重启该第一节点承建器的操作;但是第一节点承建器并不一定可以被成功重启,如果重启该第一节点承建器失败,则代理服务器需要新建一个节点承建器,以在该新建的节点承建器上创建新的目标主节点。

如上所述,节点承建器为虚拟设备,所以节点承建器也是创建在物理机中的,在本发明实施例中,代理服务器可以在第一节点承建器所在的物理机中创建用以代替第一节点承建器的节点承建器,还可以在其所控制的任一物理机中创建用以代替第一节点承建器的节点承建器,本发明实施例在此并不做限定。

在创建了用以代替第一节点承建器的节点承建器后,代理服务器可以利用该目标从节点所生成的持久化文件,在所新建的节点承建器中新建目标主节点。

可以理解,在第一节点承建器宕机且重启第一节点承建器失败的情况下,要想新建目标主节点,则需要首先新建一个节点承建器,但是并不是执行了创建节点承建器的操作后,代理服务器就一定可以成功新建节点承建器。所以本发明实施例中为了能够对新建节点承建器失败的情况进行及时把握,在上述在代理服务器所控制的物理机中新建一个节点承建器的步骤之后,上述方法还可以包括:

监测是否成功新建节点承建器;

如果不成功,生成失败报警信息;

如果成功,执行上述基于目标从节点所生成的持久化文件,在所新建的节点承建器中新建目标主节点的步骤。

可以理解,在新建节点承建器失败的情况下,同样表明目标主节点无法被新建,所以此时需要及时针对此次新建节点承建器的情况生成失败报警信息,以告知工作人员及时针对此问题做出应对措施。

s1022:在第一节点承建器未宕机或者宕机后被成功重启的情况下,基于目标从节点所生成的持久化文件,重启发生宕机的目标主节点。

如上所述,在检测到目标主节点和目标从节点发生宕机后,代理服务器可以检查该第一节点承建器是否发生宕机,一种情况下,该第一节点承建器未发生宕机,则执行步骤:基于目标从节点所生成的持久化文件,重启发生宕机的目标主节点;再一种情况下,该第一节点承建器发生宕机,代理服务器重启该第一节点承建器,并且重启成功,则代理服务器同样执行步骤:基于目标从节点所生成的持久化文件,重启发生宕机的目标主节点。

需要说明的是,在此处第一节点承建器未宕机或者宕机后被成功重启的情况下,代理服务器也可以新建一个节点承建器,并在所新建的节点承建器上新建目标主节点。

缓存数据库中的所有数据可以通过一个主节点及主节点对应的从节点进行缓存,还可以是利用集群来进行缓存,如常见的redis集群。集群所包含的主节点的数量至少为两个,每个主节点负责一部分的缓存数据,每个主节点都对应有一个从节点。

所以,当本发明实施例所涉及的目标主节点以及目标从节点为集群中的节点时,上述主从系统可以还包括除目标主节点外该代理服务器所控制的非目标主节点、以及每个非目标主节点所对应非目标从节点。如图3所示,主从服务系统中包括代理服务器、目标主节点、目标从节点、非目标主节点1~m以及非目标从节点1~m。

此情况下,本发明实施例所涉及的主从系统中所有主节点与从节点构成缓存数据库集群,即,上述目标主节点、目标从节点、非目标主节点1~m以及非目标从节点1~m构成缓存数据库集群。

应该说明的是,在缓存数据库集群中,目标主节点以及目标从节点仅是对当前均宕机的一组主节点和从节点的区别称呼,即,在缓存数据库集群中,某一主节点及其对应的从节点均宕机时,则该主节点及从节点即分别为本发明实施例中所涉及的目标主节点及目标从节点,而缓存数据库集群中除该主节点及从节点外的所有主节点及从节点即分别为本发明实施例中所涉及的非目标主节点及非目标从节点。

本发明实施例中,该缓存数据库集群中的每个节点中均携带有节点配置文件,节点配置文件中包含缓存数据库集群中每个节点的通用唯一识别码uuid(universallyuniqueidentifier)。

本领域技术人员公知的是,在缓存数据库集群中,所有的节点之间可以存在信息交互,所有的节点需要知晓缓存数据库集群中除自身外所存在的节点。所以,所有缓存数据库集群中的每个节点中均携带有节点配置文件,该节点配置文件中包含有缓存数据库集群中每个节点的ip地址(internetprotocoladdress,互联网协议地址),以及用以标识每个节点的标识信息,即上述通用唯一识别码uuid。

需要注意的是,在缓存数据库集群中,通用唯一识别码uuid是各个节点的唯一标识,所以无论是重启发生宕机的目标主节点还是新建目标主节点,所部署的目标主节点必须是配置有发生宕机的目标主节点宕机前所配置的通用唯一识别码uuid,以使得缓存数据库集群中的其他节点能对所部署的目标主节点进行识别。

在此情况下,上述步骤s1021中关于基于目标从节点所生成的持久化文件,在所新建的节点承建器中新建目标主节点的步骤,可以包括下述步骤a1~a3:

a1:判断发生宕机的目标主节点中的目标节点配置文件是否丢失。

目标节点配置文件即为目标主节点中所存储的节点配置文件,目标主节点发生宕机,则上述目标节点配置文件可能会随着目标主节点的宕机而丢失。对于步骤a1,示例性的,目标主节点创建在lxc容器中,目标主节点发生宕机前,其上的目录x下存储着目标节点配置文件node.conf,在目标主节点发生宕机后,代理服务器在该lxc容器中查找是否存在目标节点配置文件node.conf,如果存在,判定目标节点配置文件未丢失,否则,判定目标节点配置文件丢失。

如果步骤a1的判断结果为是,则执行步骤a2:基于目标从节点所生成的持久化文件,在所新建的节点承建器中创建一个节点;将所创建节点配置到缓存数据库集群中,并从缓存数据库集群中除目标主节点外的节点中获得目标主节点的uuid,将目标主节点的uuid配置给所创建的节点,完成目标主节点的新建。

首先需要说明的是,基于目标从节点所生成的持久化文件,在所新建的节点承建器中创建一个节点,表明所创建的节点中缓存有利用持久化文件所得到的缓存数据,但是该所创建的节点当前还不是新的目标主节点。可以理解,目标主节点是缓存数据库集群中的一个节点,并且负责着一部分槽(slot),所以为了让所创建的节点成为新的主节点,代理服务器需要使得所创建节点成为缓存数据库集群中的一个节点,并负责宕机的目标主节点所负责的槽。

本发明实施例中,在所新建的节点承建器中创建一个节点后,首先将所创建的节点加入到缓存数据库集群中,使得所创建节点成为缓存数据库集群中一个节点。在缓存数据库集群中加入节点的方式属于现有技术,本领域技术人员可以基于现有技术实现在缓存数据库集群中加入所创建节点的目的;例如,该缓存数据库集群为redis集群,代理服务器可以将所创建节点的ip地址发送给缓存数据库集群的其他节点,并在这些节点中运行cluster_meet命令,使得缓存数据库集群的其他节点知晓该ip地址对应的节点为缓存数据库集群中的节点,完成所创建节点加入到缓存数据库集群的目的。

然后代理服务器从缓存数据库集群中除目标主节点外的节点中获得目标主节点的uuid,并将目标主节点的uuid配置给所创建的节点。如前所述,节点的uuid是节点的唯一标识信息,所创建节点被分配了目标主节点的uuid后,缓存数据库集群中的其他节点可以根据目标主节点的uuid,识别出所创建节点为目标主节点,即此时完成目标主节点的新建;相应的,缓存数据库集群中的其他节点也可以知晓所创建节点所负责的槽。

在此需要说明的是,此情况下,新建的目标主节点与前述发生宕机的目标主节点的ip地址不同,所以新建目标主节点后,对于缓存数据库集群中除新建目标主节点外的每个节点,还需更新其节点配置文件中目标主节点的uuid所对应ip地址为:新建目标主节点的ip地址,并为新建的目标主节点配置此处所更新的节点配置文件。

例如,前述发生宕机的目标主节点的ip地址为ip1,新建目标主节点的ip地址为ip2,则此时对于缓存数据库集群中除新建目标主节点外的每个节点,将其节点配置文件中目标主节点的uuid所对应ip地址ip1替换为ip2,并且为新建的目标主节点配置此处所述的替换了ip地址的节点配置文件。

步骤a2的具体实现可以参照现有技术,本发明实施例在此不再详细介绍,仅以下述举例进行示例性说明。

针对步骤a2,示例性的,假设缓存数据库集群为redis集群,代理服务器首先利用数据库配置文件redis.conf以及目标从节点所生成的持久化文件appendonly.aof,在所新建的节点承建器中创建一个节点;然后将所创建节点的ip地址发送给redis集群中的其他节点,并在这些其他节点中运行cluster_meet命令,完成将所创建节点加入到缓存数据库节点的目的。最后,代理服务器从缓存数据库集群中除目标主节点外的节点中获得目标主节点的uuid,并将目标主节点的uuid配置给所创建的节点,完成目标主节点的新建。

如果步骤a1的判断结果为否,则执行步骤a3:基于目标从节点所生成的持久化文件和目标节点配置文件,在所新建的节点承建器中创建一个节点,将所创建节点配置到缓存数据库集群中,完成目标主节点的新建。

在步骤a3中,所创建的节点配置有目标主节点的uuid,同时还具有目标主节点所缓存的数据,但是所创建节点的ip地址与宕机的目标主节点的ip地址不同,所以在此还需要将所创建节点加入到缓存数据库集群,才可以完成目标主节点的新建。

同样的,与步骤a2同理的是,此情况下,新建的目标主节点与前述发生宕机的目标主节点的ip地址不同,所以新建目标主节点后,对于缓存数据库集群中除新建目标主节点外的每个节点,还需更新其节点配置文件中目标主节点的uuid所对应ip地址为:新建目标主节点的ip地址,并为新建的目标主节点配置此处所更新的节点配置文件。

步骤a3的具体实现同样可以参照现有技术,本发明实施例在此不再详细介绍,仅以下述举例进行示例性说明。

针对步骤a3,示例性的,假设缓存数据库集群为redis集群,代理服务器首先利用数据库配置文件redis.conf、目标节点配置文件node.conf以及目标从节点所生成的持久化文件appendonly.aof,在所新建的节点承建器中创建一个节点;然后将所创建节点的ip地址发送给redis集群中的其他节点,并在这些其他节点中运行cluster_meet命令,完成将所创建节点加入到缓存数据库节点的目的,进而完成目标主节点的新建。

相应的,上述步骤s1022中关于基于目标从节点所生成的持久化文件,重启发生宕机的目标主节点的步骤,可以包括下述步骤b1~b3:

b1:判断发生宕机的目标主节点中的目标节点配置文件是否丢失。

步骤b1与上述步骤a1相同,步骤b1的具体内容和解释说明可以参照上述步骤a1,本发明实施例在此不再详细介绍。

如果步骤b1的判断结果为是,则执行步骤b2:从缓存数据库集群中除目标主节点外的节点中获得节点配置文件,基于目标从节点所生成的持久化文件以及所获得的节点配置文件,重启发生宕机的目标主节点。

可以理解,在发生宕机的目标主节点中的目标节点配置文件丢失的情况下,如果直接基于目标从节点所生成的持久化文件,重启发生宕机的目标主节点,重启得到的节点并不知道缓存数据库集群中其他节点的信息,也不知道自己所负责的槽,所以代理服务器还需要先从缓存数据库集群中除目标主节点外的节点中获得节点配置文件,以使得在重启目标主节点时,将目标主节点的uuid配置给所重启的节点。

如果步骤b1的判断结果为否,则执行步骤b3:基于目标从节点所生成的持久化文件以及目标节点配置文件,重启发生宕机的目标主节点。

在此情况下,直接利用目标节点配置文件以及目标从节点所生成的持久化文件,重启发生宕机的目标主节点即可。

示例性的,假设缓存数据库集群为redis集群,则代理服务器可以直接利用数据库配置文件redis.conf、目标节点配置文件node.conf以及目标从节点所生成的持久化文件appendonly.aof,重启发生发生宕机的目标主节点。

如图1所示,s103:部署该未宕机的目标主节点对应的目标从节点。

同样的,本发明实例中,部署该未宕机的目标主节点对应的目标从节点,可以是重启发生宕机的目标从节点;还可以是重新创建一个新的目标从节点。

作为本发明实施例的一种可选的实现方式,代理服务器部署该未宕机的目标主节点对应的目标从节点,同样可以基于发生宕机的目标从节点所生成的持久化文件,部署该未宕机的目标主节点对应的目标从节点。具体的,基于发生宕机的目标从节点所生成的持久化文件,部署该未宕机的目标主节点对应的目标从节点的原理,与步骤s102的原理相同,可以参照上述步骤s102的具体内容和相关解释执行步骤s103,本发明实施例在此不再详细介绍。

作为本发明实施例的另一种可选的实现方式,上述部署该未宕机的目标主节点对应的目标从节点(s103)的步骤,可以包括:

基于主从复制机制,部署该未宕机的目标主节点对应的目标从节点。

可以理解,此实现方式下所部署的目标从节点中缓存的数据是基于主从复制机制所获得的。另外,基于主从复制机制,部署该未宕机的目标主节点对应的目标从节点所对应的具体实现方式可以参照现有技术,本发明实施例在此不做详细介绍。

作为本发明实施例的一种可选实现方式,在上述主从系统中的节点创建在节点承建器上的情况下,上述基于主从复制机制,部署该未宕机的目标主节点对应的目标从节点的步骤,可以包括下述步骤c1和c2:

步骤c1:在第二节点承建器宕机且重启第二节点承建器失败的情况下,在代理服务器所控制的物理机中新建一个节点承建器;并基于主从复制机制,在所新建的节点承建器中新建目标从节点;其中,该第二节点承建器为创建有上述发生宕机的目标从节点的节点承建器。

步骤c2:在第二节点承建器未宕机或者宕机后被成功重启的情况下,基于主从复制机制,重启发生宕机的目标从节点。

与前述步骤s1021和s1022不同的是,步骤c1和c2中,所部署目标从节点中的缓存数据是基于主从复制机制所获得的,而步骤s1021和s1022中所部署目标从节点中的缓存数据是基于持久化文件所获得的;除此以外,步骤c1和c2的具体实现原理可以参照前述步骤s1021和s1022,本发明实施例在此不再详细介绍。

另外,无论是在新建的节点承建器中新建目标从节点,还是重启发生宕机的目标从节点,代理服务器都可以监测所部署目标从节点复制所部署目标主节点中缓存数据到本地所消耗的时间是否超过一预设时长;在实际应用中,可以通过检查所部署目标从节点中的字段master_link_status为up还是down,如果为up,表明所部署目标从节点完成主从复制,如果为down,则表明所部署目标从节点未完成主从复制。如果超过,则针对此生成报警信息,以使得操作人员可以查找所部署目标从节点复制所部署目标主节点中缓存数据到本地所消耗的时间超过预设时长的原因。

由以上可知,与现有技术相比,本实施例提供的方案中,目标从节点中被配置有针对于缓存数据的持久化机制,所以通过目标从节点基于所配置持久化机制生成的持久化文件可以复原目标主节点中的缓存数据;在目标主节点和目标从节点均宕机后,可以利用该持久化文件复原主从系统的缓存数据,进而将主从系统恢复到正常的工作状态,达到提高主从系统可用性的目的。此外,上述目标主节点中未配置有持久化机制,可以有效避免目标主节点因自身配置持久化机制而导致的主从系统提供数据读写服务性能降低的问题。

可以理解,上述任一实施例中代理服务器都是在先部署目标主节点的,目标主节点被成功部署后,所部署目标主节点即可对外提供数据读写服务;但是,如果在完成目标从节点的部署之前,目标主节点执行了数据写操作并导致目标主节点中所缓存的数据发生改变,显然的,由于此时目标从节点仍然处于宕机状态,此段时间发生的数据写操作对应的缓存数据无法被记录到目标从节点中的持久化文件中。如果此后,在目标从节点的部署完成之前,刚部署的目标主节点再次发生宕机,则会因为持久化文件中未记录上述时间内未持久化的缓存数据,导致数据丢失问题。

例如,在redis集群中,目标主节点部署好后,在部署目标从节点的过程中,如果目标主节点中写入了数据a,此时目标从节点还未部署好,如果在完成部署目标从节点之前,所部署的目标主节点再次发生宕机,此时由于数据a仅被写在目标主节点中,则数据a将随着目标主节点的再次宕机而丢失。

本发明实施例中,为了避免上述数据丢失问题的发生,在图1或图2所示任一方法实施例的基础上,在上述部署该未宕机的目标主节点对应的目标从节点的步骤(s103)之前,上述方法还可以包括:

控制所部署的目标主节点关闭自身缓存数据库的写服务;

相应的,在上述部署该未宕机的目标主节点对应的目标从节点的步骤(s103)之后,上述方法还可以包括:

控制所部署的目标主节点开启自身缓存数据库的写服务。

即如图4所示,在本发明实施例中,上述方法包括:

s201:当检测到目标主节点和目标从节点均宕机时,确定目标从节点基于持久化机制生成的持久化文件。

s202:基于目标从节点所生成的持久化文件,部署未宕机的目标主节点。

s203:控制所部署的目标主节点关闭自身缓存数据库的写服务。

代理服务器作为目标主节点的控制设备,其完全可以控制目标主节点关闭自身缓存数据库的写服务;具体的实现方式可以是多种多样的,示例性的,代理服务器向所部署的目标主节点发送一个client_pause命令,则目标主节点基于该命令不再处理目标主节点对应的客户端所发送的写请求,保证此后目标主节点不会再执行数据写操作。

s204:部署该未宕机的目标主节点对应的目标从节点。

s205:控制所部署的目标主节点开启自身缓存数据库的写服务。

在完成目标从节点的部署后,代理服务器可以向目标主节点发送一个开启目标主节点缓存数据库写服务的指令,以使得目标主节点开启缓存数据库写服务。

应该说明的是,图4所示方法实施例中的步骤s201、s202和s204分别对应与图1所示方法实施例中的s101、s102和s103相同,步骤s201、s202和s204的解释说明和具体实现可以参照图1所示方法实施例,本实施例在此不再赘述。

另外,可以理解,所部署目标从节点中写入的所有缓存数据持久化为持久数据是需要消耗时间的,如果在成功部署目标从节点之后、所部署目标从节点将其中写入的所有缓存数据持久化为持久数据之前,所部署的目标主节点和目标从节点再次发生宕机,此时由于主从系统中不再存在所有缓存数据对应的完整的持久化文件,所以代理服务器无法复原所有缓存数据,导致数据丢失的问题。本发明实施例中,为了避免此问题,在上述图4所示方法实施例的基础上,在上述控制所部署的目标主节点开启自身缓存数据库的写服务(s205)的步骤之前,所述方法还可以包括:

判断在部署该未宕机的目标主节点对应的目标从节点后,所部署目标从节点中写入的所有缓存数据是否均被完整持久化为持久数据;如果均被持久化为持久数据,执行上述控制所部署的目标主节点开启自身缓存数据库的写服务的步骤。

具体的,判断在部署该未宕机的目标主节点对应的目标从节点后,所部署目标从节点中写入的所有缓存数据是否均被完整持久化为持久数据的具体实现方式可以是多种多样的。示例性的,对于aof持久化机制,代理服务器可以判断所部署目标从节点中的字段aof_base_size的数值是否为0,如果为0,则表示上述判断的判断结果为否,如果为非零值,则表示上述判断的判断结果为是。

可以理解,如果此判断过程的判断结果为否,则代理服务器不会执行上述控制所部署的目标主节点开启自身缓存数据库的写服务的步骤。另外,在此判断过程的判断结果为否的情况下,代理服务器还可以检测从目标从节点完成部署至所部署目标从节点完成持久化操作的时间是否超过预设时长,如果超过,则生成持久化操作超过预设时长的报警信息,以使得操作人员可以针对此问题做出应对措施。

可以理解,图1、2和4分别所示的宕机恢复方法实施例中,均是针对主从系统中目标主节点和目标从节点均宕机的情况进行说明的,在实际的主从系统中,还存在另外两种节点宕机情况。

第一种情况下,目标主节点正常工作,目标从节点宕机,此情况即为上述,恢复主从系统的过程直接参照上述步骤s103实现即可。

另一种情况下,目标主节点宕机,目标从节点正常工作,此时,假设目标主节点和目标从节点为redis集群中的一组主节点和主节点对应的从节点,则恢复主从系统的过程可以如下:

当检测到目标主节点宕机时,首先关闭目标从节点的服务,例如向该未宕机的目标从节点发送client_pasue命令,然后,执行切换该目标从节点为新的目标主节点的操作,另外,代理服务器监测着从检测到目标主节点宕机至目标从节点成为新的目标主节点所经过的时间是否超过一预设时长,当超过该预设时长时,针对此生成报警信息,以使得操作人员可以及时发现目标从节点无法成为新的目标从节点的原因。

在目标从节点成功切换为新的目标主节点后,主从系统中不再存在目标从节点,所以此时需要部署一个新的目标从节点。

首先,代理服务器可以判断宕机的目标主节点所在的节点承建器是否宕机,如果目标主节点所在的节点承建器未宕机,则利用数据库配置文件redis.conf以及宕机的目标主节点中的节点配置文件node.conf重启发生宕机的目标主节点,得到一个节点s;如果目标主节点所在的节点承建器宕机,则重启目标主节点所在的节点承建器宕机,如果成功重启目标主节点所在的节点承建器,则同样利用数据库配置文件redis.conf以及宕机的目标主节点中的节点配置文件node.conf重启发生宕机的目标主节点,得到一个节点s。

如果重启目标主节点所在的节点承建器宕机失败,则代理服务器需要在其所控制的物理机上新建一个节点承建器。如果未能成功创建节点承载器,则生成创建节点承载器失败的报警信息;如果成功创建节点承载器,在所创建节点承载器中创建一个节点,并将该节点通过cluster_add_slave命令将所创建节点加入到redis集群中,得到节点s。

在得到节点s后,代理服务器将该节点s配置为当前的目标主节点的目标从节点,即新的目标从节点;此后,新的目标从节点基于主从复制机制开始复制当前目标主节点中的数据至新的目标从节点本地,而代理服务器则监测着新的目标从节点是否完成主从复制操作,在实际应用中,可以通过检查目标从节点中的字段master_link_status为up还是down,如果为up,表明新的目标从节点完成主从复制,如果为down,则表明新的目标从节点未完成主从复制;同时,代理服务器还监测新的目标从节点复制当前目标主节点中缓存数据到本地所消耗的时间是否超过一预设时长;如果超过,则针对此生成报警信息,以使得操作人员可以查找新的目标从节点复制当前目标主节点中缓存数据到本地所消耗的时间超过预设时长的原因。

需要说明的是,在新的目标从节点完成主从复制之前,如果新的目标主节点再次发生宕机,则此时可以看作是主从系统中的目标主节点和目标从节点均宕机的情况,而此时持久化文件存在于原目标从节点中,即最新宕机的目标主节点中。

可以理解,该新的目标从节点配置有持久化机制,假设为aof持久化机制,则代理服务器还应该监测新的目标从节点是否将新的目标从节点中写入的所有缓存数据持久化为持久数据,如代理服务器可以判断新的目标从节点中的字段aof_base_size的数值是否为0,如果为0,则表示当前新的目标从节点还未将新的目标从节点中写入的所有缓存数据持久化为持久数据;如果为非零值,当前新的目标从节点已将新的目标从节点中写入的所有缓存数据持久化为持久数据。

如果新的目标从节点已将新的目标从节点中写入的所有缓存数据持久化为持久数据,则代理服务器可以开启新的目标主节点的数据库写服务,并关闭新的目标主节点中所部署的持久化机制,删除新的目标主节点中所存储的持久化文件。

另外,在新的目标从节点还未将新的目标从节点中写入的所有缓存数据持久化为持久数据的情况下,代理服务器还可以检测从新的目标从节点完成主从复制至为新的目标从节点完成持久化操作的时间是否超过预设时长,如果超过,则生成持久化操作超过预设时长的报警信息,以使得操作人员可以针对此问题做出应对措施。

相应于图1所示方法实施例,本发明实施例还提供了一种节点宕机恢复装置,应用于主从系统中的代理服务器,该主从系统还包括代理服务器所控制的目标主节点以及目标主节点对应的目标从节点,该目标主节点为缓存数据库的主节点;

该目标从节点中被配置有针对于缓存数据的持久化机制,该目标主节点中未配置有持久化机制;

如图5所示,上述节点宕机恢复装置包括:

确定模块110,用于当检测到目标主节点和目标从节点均宕机时,确定目标从节点基于持久化机制生成的持久化文件;

第一部署模块120,用于基于持久化文件,部署未宕机的目标主节点;

第二部署模块130,用于部署该未宕机的目标主节点对应的目标从节点。

具体的,相应于上述图2所示方法实施例,上述主从系统中的节点创建在节点承建器上,节点承建器包括lxc容器或虚拟机;

相应的,上述第一部署模块120,可以具体用于:

在第一节点承建器宕机且重启第一节点承建器失败的情况下,在代理服务器所控制的物理机中新建一个节点承建器;基于持久化文件,在所新建的节点承建器中新建目标主节点;其中,该第一节点承建器为创建有上述发生宕机的目标主节点的节点承建器;

在第一节点承建器未宕机或者宕机后被成功重启的情况下,基于持久化文件,重启发生宕机的目标主节点。

作为本发明实施例一种可选的实现方式,上述主从系统还包括除目标主节点外代理服务器所控制的非目标主节点、以及每个非目标主节点所对应的非目标从节点;

主从系统中所有主节点与从节点构成缓存数据库集群,缓存数据库集群中的每个节点中均携带有节点配置文件,节点配置文件中包含缓存数据库集群中每个节点的通用唯一识别码uuid;

相应于图2所示方法实施例,上述第一部署模块120,可以具体用于:

在第一节点承建器宕机且重启第一节点承建器失败的情况下,在代理服务器所控制的物理机中新建一个节点承建器;判断发生宕机的目标主节点中的目标节点配置文件是否丢失;

如果丢失,基于持久化文件,在所新建的节点承建器中创建一个节点;将所创建节点配置到缓存数据库集群中,并从缓存数据库集群中除目标主节点外的节点中获得目标主节点的uuid,将目标主节点的uuid配置给所创建的节点,完成目标主节点的新建;

如果未丢失,基于持久化文件和目标节点配置文件,在所新建的节点承建器中创建一个节点,将所创建节点配置到缓存数据库集群中,完成目标主节点的新建;

在第一节点承建器未宕机或者宕机后被成功重启的情况下,判断发生宕机的目标主节点中的目标节点配置文件是否丢失;

如果丢失,从缓存数据库集群中除目标主节点外的节点中获得节点配置文件,基于持久化文件以及所获得的节点配置文件,重启发生宕机的目标主节点;

如果未丢失,基于持久化文件以及目标节点配置文件,重启发生宕机的目标主节点。

作为本发明实施例一种可选的实现方式,上述装置还可以包括:

监测模块,用于在代理服务器所控制的物理机中新建节点承建器后,监测是否成功新建节点承建器;

生成模块,用于在监测模块的监测结果为否的情况下,生成失败报警信息;

相应的,第一部署模块120基于持久化文件,在所新建的节点承建器中新建目标主节点,可以具体为:

在监测模块的监测结果为是的情况下,基于持久化文件,在所新建的节点承建器中新建目标主节点。

作为本发明实施例一种可选的实现方式,相应于图4所示方法实施例,如图6所示,上述装置还可以包括:

控制模块140,用于在部署该未宕机的目标主节点对应的目标从节点之前,控制所部署的目标主节点关闭自身缓存数据库的写服务;在部署该未宕机的目标主节点对应的目标从节点之后,控制所部署的目标主节点开启自身缓存数据库的写服务。

作为本发明实施例一种可选的实现方式,上述装置还可以包括:

判断模块,用于在控制所部署的目标主节点开启自身缓存数据库的写服务之前,判断在部署该未宕机的目标主节点对应的目标从节点后,所部署目标从节点中写入的所有缓存数据是否均被完整持久化为持久数据;

相应的,上述控制模块140控制所部署的目标主节点开启自身缓存数据库的写服务,可以具体为:

在判断模块的判断结果为是的情况下,控制所部署的目标主节点开启自身缓存数据库的写服务。

作为本发明实施例一种可选的实现方式,上述第二部署模块130,可以具体用于:

基于主从复制机制,部署该未宕机的目标主节点对应的目标从节点。

更进一步的,具体的,在上述主从系统中的节点创建在节点承建器上的情况下,上述第二部署模块,可以具体用于:

在第二节点承建器宕机且重启第二节点承建器失败的情况下,在代理服务器所控制的物理机中新建一个节点承建器;并基于主从复制机制,在所新建的节点承建器中新建目标从节点;其中,该第二节点承建器为创建有上述发生宕机的目标从节点的节点承建器;

在第二节点承建器未宕机或者宕机后被成功重启的情况下,基于主从复制机制,重启发生宕机的目标从节点。

由以上可知,与现有技术相比,本实施例提供的方案中,目标从节点中被配置有针对于缓存数据的持久化机制,所以通过目标从节点基于所配置持久化机制生成的持久化文件可以复原目标主节点中的缓存数据;在目标主节点和目标从节点均宕机后,可以利用该持久化文件复原主从系统的缓存数据,进而将主从系统恢复到正常的工作状态,达到提高主从系统可用性的目的。此外,上述目标主节点中未配置有持久化机制,可以有效避免目标主节点因自身配置持久化机制而导致的主从系统提供数据读写服务性能降低的问题。

本发明实施例还提供了一种电子设备,如图7所示,包括处理器210和存储器220,其中,

存储器220,用于存放计算机程序;

处理器210,用于执行存储器220上所存放的程序时,实现如下步骤:

当检测到目标主节点和目标从节点均宕机时,确定目标从节点基于持久化机制生成的持久化文件;

基于目标从节点所生成的持久化文件,部署未宕机的目标主节点;

部署该未宕机的目标主节点对应的目标从节点。

关于该方法各个步骤的具体实现以及相关解释内容可以参见上述图1、2和3所示的方法实施例,在此不做赘述。

上述电子设备可以具备有实现上述电子设备与其他设备之间通信的通信接口。

上述的处理器210,通信接口,存储器220通过通信总线完成相互间的通信,此处所提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。

存储器220可以包括随机存取存储器(randomaccessmemory,ram),也可以包括非易失性存储器(non-volatilememory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器210可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

由以上可知,与现有技术相比,本实施例提供的方案中,目标从节点中被配置有针对于缓存数据的持久化机制,所以通过目标从节点基于所配置持久化机制生成的持久化文件可以复原目标主节点中的缓存数据;在目标主节点和目标从节点均宕机后,可以利用该持久化文件复原主从系统的缓存数据,进而将主从系统恢复到正常的工作状态,达到提高主从系统可用性的目的。此外,上述目标主节点中未配置有持久化机制,可以有效避免目标主节点因自身配置持久化机制而导致的主从系统提供数据读写服务性能降低的问题。

在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的节点宕机恢复方法。

由以上可知,与现有技术相比,本实施例提供的方案中,目标从节点中被配置有针对于缓存数据的持久化机制,所以通过目标从节点基于所配置持久化机制生成的持久化文件可以复原目标主节点中的缓存数据;在目标主节点和目标从节点均宕机后,可以利用该持久化文件复原主从系统的缓存数据,进而将主从系统恢复到正常的工作状态,达到提高主从系统可用性的目的。此外,上述目标主节点中未配置有持久化机制,可以有效避免目标主节点因自身配置持久化机制而导致的主从系统提供数据读写服务性能降低的问题。

在本发明提供的再一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一节点宕机恢复方法所述的方法步骤。

由以上可知,与现有技术相比,本实施例提供的方案中,目标从节点中被配置有针对于缓存数据的持久化机制,所以通过目标从节点基于所配置持久化机制生成的持久化文件可以复原目标主节点中的缓存数据;在目标主节点和目标从节点均宕机后,可以利用该持久化文件复原主从系统的缓存数据,进而将主从系统恢复到正常的工作状态,达到提高主从系统可用性的目的。此外,上述目标主节点中未配置有持久化机制,可以有效避免目标主节点因自身配置持久化机制而导致的主从系统提供数据读写服务性能降低的问题。

在本发明提供的再一实施例中,还提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述任一节点宕机恢复方法所述的方法步骤。

由以上可知,与现有技术相比,本实施例提供的方案中,目标从节点中被配置有针对于缓存数据的持久化机制,所以通过目标从节点基于所配置持久化机制生成的持久化文件可以复原目标主节点中的缓存数据;在目标主节点和目标从节点均宕机后,可以利用该持久化文件复原主从系统的缓存数据,进而将主从系统恢复到正常的工作状态,达到提高主从系统可用性的目的。此外,上述目标主节点中未配置有持久化机制,可以有效避免目标主节点因自身配置持久化机制而导致的主从系统提供数据读写服务性能降低的问题。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、计算机可读存储介质、包含指令的计算机程序产品以及计算机程序实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1