本公开涉及计算机技术领域,尤其涉及一种数据库集群升级方法、装置、设备以及存储介质。
背景技术:
远程字典服务(remotedictionaryserver,redis)从2011年开源以来,由于其强大的性能、良好的稳定性、丰富的功能以及简单易用性等特点,一跃成为互联网和一些传统it企业缓存数据库的首选。近几年来,redis每年都会有一个大版本升级,不仅修复了前一个版本的一些问题,同时增加了许多优良的特性,许多项目也非常期待使用这些特性。
在redis的实际应用过程中,经常会将数据存储在redis集群中。在进行版本升级时,如何实时、高速、跨大版本实现redis集群的升级,就变成了对redis集群进行有效管理的必要条件。
相关技术中,常用的redis集群升级方案通常包括:基于官方工具的升级方案;基于增量文件(appendonlyfile,aof)的升级方案;集群内升级的升级方案。其中,redis官方提供了基于快照文件rdb的升级方案,可以实现将一个单机版本的redis升级到集群。基于增量文件aof的升级方案,利用aof的写日志特性,可以实时将写日志从低版本redis同步到高版本redis中。集群内升级的升级方案,将高版本的redis实例逐步融合到低版本的集群中,最终将低版本集群的redis全部替换掉。
但是,上述相关技术的问题在于,redis官方提供的基于快照文件rdb的升级方案基于静态的快照文件rdb无法实现实时升级,在不停止服务的前提下,会造成数据丢失;基于增量文件aof的升级方案解决了不能实时升级的问题,但速度较慢,不适合大规模集群升级;集群内升级的升级方案无法实现跨大版本的升级。
技术实现要素:
本公开提供一种数据库集群升级方法、装置、设备以及存储介质,以至少解决相关技术中的升级方案无法实时、高速、跨大版本实现数据库集群的升级的问题。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种数据库集群升级方法,包括:建立与原数据库集群中的待升级集群节点数量相同的升级进程,分别为每一个升级进程分配一个待升级集群节点;通过各所述升级进程,并行地根据数据库主从复制协议,获取各所述待升级集群节点的全量快照文件以及实时数据;通过各所述升级进程,并行地对各所述待升级集群节点的全量快照文件进行解析,将解析完成的全量快照文件发送给预设的目标数据库集群;通过各所述升级进程,并行地将各所述待升级集群节点的实时数据同步给所述预设的目标数据库集群;在检测到各所述待升级集群节点满足数据同步完成条件时,将所述原数据库集群的客户端流量切换到所述预设的目标数据库集群中,所述目标数据库集群中的数据库版本高于所述原数据库集群中的数据库版本。
可选的,所述通过各所述升级进程,并行地根据数据库主从复制协议,获取各所述待升级集群节点的全量快照文件以及实时数据,包括:
通过每一个升级进程并行执行下述操作:
向所分配的待升级集群节点发送主从配置命令,成为所分配的待升级集群节点的从节点;
作为所分配的待升级集群节点的从节点,得到所分配的待升级集群节点的全量快照文件以及实时数据。
可选的,所述通过各所述升级进程,并行地对各所述待升级集群节点的全量快照文件进行解析,将解析完成的全量快照文件发送给预设的目标数据库集群,包括:
通过每一个升级进程并行执行下述操作:
根据所分配的待升级集群节点的快照文件协议,对所分配的待升级集群节点的各快照文件进行解析,并将解析完成的快照文件发送给预设的目标数据库集群。
可选的,所述根据所分配的待升级集群节点的快照文件协议,对所分配的待升级集群节点的各快照文件进行解析,并将解析完成的快照文件发送给预设的目标数据库集群,包括:
依次从所分配的待升级集群节点的全量快照文件中获取一个快照文件作为目标快照文件;
根据所分配的待升级集群节点的快照文件协议,对所述目标快照文件进行解析,将解析完成的目标快照文件发送给预设的目标数据库集群;
对与所分配的待升级集群节点对应的快照文件解析行为的计数加1;
返回执行依次从所分配的待升级集群节点的全量快照文件中获取一个快照文件作为目标快照文件的操作,直至完成对所分配的待升级集群节点的全量快照文件的处理;
在检测到所述快照文件解析行为的计数等于所分配的待升级集群节点的全量快照文件数量时,将与所分配的待升级集群节点对应的快照文件解析完成字段的数值设置为1。
可选的,所述通过各所述升级进程,并行地将各所述待升级集群节点的实时数据同步给所述预设的目标数据库集群,包括:
通过每一个升级进程并行执行下述操作:
在检测到与所分配的待升级集群节点对应的快照文件解析完成字段的数值为1时,作为复制客户端,将从所分配的待升级集群节点的输入缓冲区和输出缓冲区中复制的实时数据发送给预设的目标数据库集群。
可选的,所述在检测到各所述待升级集群节点满足数据同步完成条件时,将所述原数据库集群的客户端流量切换到所述预设的目标数据库集群中,包括:
在通过各所述升级进程检测到与各待升级集群节点对应的快照文件解析完成字段的数值为1,且与各升级进程对应的输入缓冲区和输出缓冲区为空时,计算所述原数据库集群的升级前数据量与所述预设的目标数据库集群的当前数据量的差值;
判断所述差值是否小于等于预设数据量差值阈值;
如果所述差值小于等于预设数据量差值阈值,则确定各所述待升级集群节点满足数据同步完成条件,将所述原数据库集群的客户端流量切换到所述预设的目标数据库集群中。
可选的,所述将所述原数据库集群的客户端流量切换到所述预设的目标数据库集群中,包括:
获取所述预设的目标数据库集群的互联网协议地址;
将所述预设的目标数据库集群的互联网协议地址添加到与所述原数据库集群对应的客户端的访问列表中;
将所述原数据库集群的互联网协议地址从所述客户端的访问列表中删除。
根据本公开实施例的第二方面,提供一种数据库集群升级装置,包括:升级进程建立单元,被配置为建立与原数据库集群中的待升级集群节点数量相同的升级进程,分别为每一个升级进程分配一个待升级集群节点;节点数据获取单元,被配置为通过各所述升级进程,并行地根据数据库主从复制协议,获取各所述待升级集群节点的全量快照文件以及实时数据;快照文件同步单元,被配置为通过各所述升级进程,并行地对各所述待升级集群节点的全量快照文件进行解析,将解析完成的全量快照文件发送给预设的目标数据库集群;实时数据同步单元,被配置为通过各所述升级进程,并行地将各所述待升级集群节点的实时数据同步给所述预设的目标数据库集群;客户端切换单元,被配置为在检测到各所述待升级集群节点满足数据同步完成条件时,将所述原数据库集群的客户端流量切换到所述预设的目标数据库集群中,所述目标数据库集群中的数据库版本高于所述原数据库集群中的数据库版本。
可选的,所述节点数据获取单元被具体配置为:
通过每一个升级进程并行执行下述操作:
向所分配的待升级集群节点发送主从配置命令,成为所分配的待升级集群节点的从节点;
作为所分配的待升级集群节点的从节点,得到所分配的待升级集群节点的全量快照文件以及实时数据。
可选的,所述快照文件同步单元被具体配置为:
通过每一个升级进程并行执行下述操作:
根据所分配的待升级集群节点的快照文件协议,对所分配的待升级集群节点的各快照文件进行解析,并将解析完成的快照文件发送给预设的目标数据库集群。
可选的,所述根据所分配的待升级集群节点的快照文件协议,对所分配的待升级集群节点的各快照文件进行解析,并将解析完成的快照文件发送给预设的目标数据库集群,包括:
依次从所分配的待升级集群节点的全量快照文件中获取一个快照文件作为目标快照文件;
根据所分配的待升级集群节点的快照文件协议,对所述目标快照文件进行解析,将解析完成的目标快照文件发送给预设的目标数据库集群;
对与所分配的待升级集群节点对应的快照文件解析行为的计数加1;
返回执行依次从所分配的待升级集群节点的全量快照文件中获取一个快照文件作为目标快照文件的操作,直至完成对所分配的待升级集群节点的全量快照文件的处理;
在检测到所述快照文件解析行为的计数等于所分配的待升级集群节点的全量快照文件数量时,将与所分配的待升级集群节点对应的快照文件解析完成字段的数值设置为1。
可选的,所述实时数据同步单元被具体配置为:
通过每一个升级进程并行执行下述操作:
在检测到与所分配的待升级集群节点对应的快照文件解析完成字段的数值为1时,作为复制客户端,将从所分配的待升级集群节点的输入缓冲区和输出缓冲区中复制的实时数据发送给预设的目标数据库集群。
可选的,所述客户端切换单元被具体配置为:
在通过各所述升级进程检测到与各待升级集群节点对应的快照文件解析完成字段的数值为1,且与各升级进程对应的输入缓冲区和输出缓冲区为空时,计算所述原数据库集群的升级前数据量与所述预设的目标数据库集群的当前数据量的差值;
判断所述差值是否小于等于预设数据量差值阈值;
如果所述差值小于等于预设数据量差值阈值,则确定各所述待升级集群节点满足数据同步完成条件,将所述原数据库集群的客户端流量切换到所述预设的目标数据库集群中。
可选的,所述将所述原数据库集群的客户端流量切换到所述预设的目标数据库集群中,包括:
获取所述预设的目标数据库集群的互联网协议地址;
将所述预设的目标数据库集群的互联网协议地址添加到与所述原数据库集群对应的客户端的访问列表中;
将所述原数据库集群的互联网协议地址从所述客户端的访问列表中删除。
根据本公开实施例的第三方面,提供一种计算机设备,包括:处理器;用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令,以实现如本公开任一实施例所述的数据库集群升级方法。
根据本公开实施例的第四方面,提供一种存储介质,所述存储介质中的指令由计算机设备的处理器执行时,使得计算机设备能够执行如本公开任一实施例所述的数据库集群升级方法。
根据本公开实施例的第五方面,提供一种计算机应用程序,所述计算机应用程序由计算机设备的处理器执行时,使得计算机设备能够执行如本公开任一实施例所述的数据库集群升级方法。
根据本公开实施例的第六方面,提供一种计算机程序产品,用于与计算机设备结合使用,所述计算机程序产品包括计算机可读存储介质和内嵌于其中的计算机程序机制,经由计算机载入该程序并执行后能够实现如本公开任一实施例所述的数据库集群升级方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
解决了相关技术中的升级方案无法实时、高速、跨大版本实现数据库集群的升级的问题,可以通过建立的各升级进程,基于数据库主从复制协议,并行地获取各待升级集群节点的全量快照文件以及实时数据,然后并行地将解析完成的全量快照文件、以及各待升级集群节点的实时数据同步给预设的目标数据库集群,相比于相关技术中的基于增量文件aof的升级方案,速度会快数十倍,可以在原数据库集群不需要停止服务的前提下,实现实时升级,相比于redis官方提供的基于快照文件rdb的升级方案,保证了数据的实时性,只要保证各待升级集群节点的全量快照文件能被正常解析,就可以做到版本升级,甚至是版本降级,相比于集群内升级的升级方案,可以实现跨大版本的升级,即本公开的实施例提供的技术方案可以实时、高速、跨大版本实现数据库集群的升级。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1a是根据一示例性实施例示出的一种数据库集群升级方法的流程图。
图1b是根据本公开实施例所适用的一种数据库集群升级过程的示意图。
图2是根据一示例性实施例示出的一种数据库集群升级方法的流程图。
图3是根据一示例性实施例示出的一种数据库集群升级装置的框图。
图4是根据一示例性实施例示出的一种计算机设备的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
为了便于理解,将本公开示例性实施例的主要发明构思进行简述。
相关技术中,redis官方提供的基于快照文件rdb的升级方案基于静态的快照文件rdb无法实现实时升级,在不停止服务的前提下,会造成数据丢失;基于增量文件aof的升级方案解决了不能实时升级的问题,但速度较慢,不适合大规模集群升级;集群内升级的升级方案无法实现跨大版本的升级。因此,相关技术中的升级方案无法实时、高速、跨大版本实现数据库集群的升级。
发明人针对相关技术中的升级方案无法实时、高速、跨大版本实现数据库集群的升级的问题,考虑是否可以通过一种方法,可以实时、高速、跨大版本实现数据库集群的升级。
基于上述思考,发明人创造性的提出:建立与原数据库集群中的待升级集群节点数量相同的升级进程,分别为每一个升级进程分配一个待升级集群节点;通过各所述升级进程,并行地根据数据库主从复制协议,获取各所述待升级集群节点的全量快照文件以及实时数据;通过各所述升级进程,并行地对各所述待升级集群节点的全量快照文件进行解析,将解析完成的全量快照文件发送给预设的目标数据库集群;通过各所述升级进程,并行地将各所述待升级集群节点的实时数据同步给所述预设的目标数据库集群;在检测到各所述待升级集群节点满足数据同步完成条件时,将所述原数据库集群的客户端流量切换到所述预设的目标数据库集群中,所述目标数据库集群中的数据库版本高于所述原数据库集群中的数据库版本。
这样做的好处是:通过建立的各升级进程,并行地基于数据库主从复制协议,伪装成所分配的待升级集群节点的从节点,获取各待升级集群节点的全量快照文件以及实时数据,然后并行地对各待升级集群节点的全量快照文件进行解析,将解析完成的全量快照文件发送给预设的目标数据库集群,并行地将各待升级集群节点的实时数据同步给预设的目标数据库集群,当检测到各待升级集群节点满足数据同步完成条件时,将原数据库集群的客户端流量切换到预设的目标数据库集群中,可以基于数据库主从复制协议,并行地获取各待升级集群节点的全量快照文件以及实时数据,然后并行地将解析完成的全量快照文件、以及各待升级集群节点的实时数据同步给预设的目标数据库集群,相比于相关技术中的基于增量文件aof的升级方案,速度会快数十倍,可以在原数据库集群不需要停止服务的前提下,实现实时升级,相比于redis官方提供的基于快照文件rdb的升级方案,保证了数据的实时性。上述方案只要保证各待升级集群节点的全量快照文件能被正常解析,就可以做到版本升级,甚至是版本降级,相比于集群内升级的升级方案,可以实现跨大版本的升级。由此,上述方案可以实时、高速、跨大版本实现数据库集群的升级。
图1a是根据一示例性实施例示出的一种数据库集群升级方法的流程图,本实施例可适用于对为客户端提供数据服务的原数据库集群进行升级的情况。该方法可以由数据库集群升级装置来执行,该装置可以采用硬件和/或软件的方式实现,可配置于独立于原数据库集群的第三方设备中。示例性的,第三方设备可以为服务器。
如图1a所示,本公开实施例所提供的数据库集群升级方法包括以下步骤:
在步骤s11中,建立与原数据库集群中的待升级集群节点数量相同的升级进程,分别为每一个升级进程分配一个待升级集群节点。
本实施例中,原数据库集群为低版本的redis数据库集群。当原数据库集群支撑互联网的某项业务时,与原数据库集群对应的客户端会访问原数据库集群,从原数据库集群拉取数据。为了保证原数据库集群可以更好地为客户端提供数据服务,需要及时将与客户端对应的原数据库集群升级为目标数据库集群。
升级进程是用于将待升级集群节点中存储的数据迁移至预设的目标数据库集群中的进程。建立与原数据库集群中的待升级集群节点数量相同的升级进程,分别为每一个升级进程分配一个待升级集群节点,从而可以通过各升级进程,并行地将原数据库集群中的各待升级集群节点中存储的数据迁移至预设的目标数据库集群中。
示例性的,原数据库集群中包括200个集群节点。200个集群节点部署在10台服务器上。即原数据库集群中的待升级集群节点数量为200。建立200个升级进程,分别为每一个升级进程分配一个待升级集群节点,从而可以通过各升级进程,并行地将原数据库集群中的200个待升级集群节点中存储的数据迁移至预设的目标数据库集群中。
在步骤s12中,通过各所述升级进程,并行地根据数据库主从复制协议,获取各所述待升级集群节点的全量快照文件以及实时数据。
本实施例中,待升级集群节点中存储的数据包括:保存在待升级集群节点的磁盘中的快照文件rdb和保存在待升级集群节点的输入缓冲区和输出缓冲区的实时数据。
在本公开实施例的一个实施方式中,可选的,所述通过各所述升级进程,并行地根据数据库主从复制协议,获取各所述待升级集群节点的全量快照文件以及实时数据,包括:通过每一个升级进程并行执行下述操作:向所分配的待升级集群节点发送主从配置命令,成为所分配的待升级集群节点的从节点;作为所分配的待升级集群节点的从节点,得到所分配的待升级集群节点的全量快照文件以及实时数据。
具体的,对于一个redis集群节点来说,根据redis数据库主从复制协议,只需要向其发送一个主从配置命令(slaveof命令)即可成为它的从节点,之后便可以得到它的全量快照文件以及实时数据。根据此原理,升级进程向所分配的待升级集群节点发送主从配置命令,成为所分配的待升级集群节点的从节点之后,便可以作为所分配的待升级集群节点的从节点,接收所分配的待升级集群节点同步过来的全量快照文件,将所分配的待升级集群节点的输入缓冲区和输出缓冲区中的实时数据复制到与升级进程对应的输入缓冲区和输出缓冲区中,从而得到所分配的待升级集群节点的全量快照文件以及实时数据。
在步骤s13中,通过各所述升级进程,并行地对各所述待升级集群节点的全量快照文件进行解析,将解析完成的全量快照文件发送给预设的目标数据库集群。
在本公开实施例的一个实施方式中,可选的,所述通过各所述升级进程,并行地对各所述待升级集群节点的全量快照文件进行解析,将解析完成的全量快照文件发送给预设的目标数据库集群,包括:通过每一个升级进程并行执行下述操作:根据所分配的待升级集群节点的快照文件协议,对所分配的待升级集群节点的各快照文件进行解析,并将解析完成的快照文件发送给预设的目标数据库集群。
具体的,快照文件协议规定了快照文件格式。不同版本的数据库集群的集群节点对应不同的快照文件协议。集群节点根据对应的快照文件协议,将自然语言可以识别的数据转换为二进制的快照文件。
升级进程根据所分配的待升级集群节点的快照文件协议,对所分配的待升级集群节点的各快照文件进行解析,将各快照文件解析为自然语言可以识别的数据,然后将解析完成的各快照文件发送给预设的目标数据库集群。
预设的目标数据库集群接收解析完成的各快照文件,根据自身的节点空间均衡占用策略,将解析完成的快照文件分配至一个或者多个集群节点进行存储。集群节点根据对应的快照文件协议,将所分配的解析完成的快照文件中的自然语言可以识别的数据转换为二进制的快照文件,保存在磁盘中。可选的,节点空间均衡占用策略可以为根据数据的键域(key)的哈希进行均衡,通过哈希保证数据基本均匀的存储在预设的目标数据库集群中的各个集群节点。
在本公开实施例的一个实施方式中,可选的,所述根据所分配的待升级集群节点的快照文件协议,对所分配的待升级集群节点的各快照文件进行解析,并将解析完成的快照文件发送给预设的目标数据库集群,包括:依次从所分配的待升级集群节点的全量快照文件中获取一个快照文件作为目标快照文件;根据所分配的待升级集群节点的快照文件协议,对所述目标快照文件进行解析,将解析完成的目标快照文件发送给预设的目标数据库集群;对与所分配的待升级集群节点对应的快照文件解析行为的计数加1;返回执行依次从所分配的待升级集群节点的全量快照文件中获取一个快照文件作为目标快照文件的操作,直至完成对所分配的待升级集群节点的全量快照文件的处理;在检测到所述快照文件解析行为的计数等于所分配的待升级集群节点的全量快照文件数量时,将与所分配的待升级集群节点对应的快照文件解析完成字段的数值设置为1。
具体的,当一个快照文件解析完成并发送给发送给预设的目标数据库集群之后,升级进程会对与所分配的待升级集群节点对应的快照文件解析行为的计数加1。当所分配的待升级集群节点对应的所有快照文件解析完成并发送给发送给预设的目标数据库集群之后,升级进程会将内部预设的与所分配的待升级集群节点对应的快照文件解析完成字段的数值设置为1。快照文件解析完成字段一方面可以作为下一步同步实时数据的依据,另一方面可以作为接口数据提供给外部,帮助外部了解整个迁移进度。
在步骤s14中,通过各所述升级进程,并行地将各所述待升级集群节点的实时数据同步给所述预设的目标数据库集群。
在本公开实施例的一个实施方式中,可选的,所述通过各所述升级进程,并行地将各所述待升级集群节点的实时数据同步给所述预设的目标数据库集群,包括:通过每一个升级进程并行执行下述操作:在检测到与所分配的待升级集群节点对应的快照文件解析完成字段的数值为1时,作为复制客户端,将从所分配的待升级集群节点的输入缓冲区和输出缓冲区中复制的实时数据发送给预设的目标数据库集群。
具体的,与所分配的待升级集群节点对应的快照文件解析完成字段的数值为1,表明升级进程已将所分配的待升级集群节点的全量快照文件迁移至预设的目标数据库集群,即所分配的待升级集群节点的快照文件同步已完成。升级进程在确定所分配的待升级集群节点的快照文件同步已完成之后,开始将从所分配的待升级集群节点的输入缓冲区和输出缓冲区中复制的实时数据迁移至预设的目标数据库集群。
可选的,升级进程作为复制客户端,将与升级进程对应的输入缓冲区和输出缓冲区中的实时数据发送给预设的目标数据库集群,同时在升级工具内部会对与升级进程对应的输入缓冲区和输出缓冲区的输入网络流量、输出网络流量、输入缓冲区容量、输出缓冲区队列计数,帮助外部系统了解其内部状态。与升级进程对应的输入缓冲区和输出缓冲区为空,表明升级进程已将所分配的待升级集群节点的实时数据迁移至预设的目标数据库集群,即所分配的待升级集群节点的实时数据同步已完成。
在步骤s15中,在检测到各所述待升级集群节点满足数据同步完成条件时,将所述原数据库集群的客户端流量切换到所述预设的目标数据库集群中,所述目标数据库集群中的数据库版本高于所述原数据库集群中的数据库版本。
在本公开实施例的一个实施方式中,可选的,在通过各所述升级进程检测到与各待升级集群节点对应的快照文件解析完成字段的数值为1,且与各升级进程对应的输入缓冲区和输出缓冲区为空时,计算所述原数据库集群的升级前数据量与所述预设的目标数据库集群的当前数据量的差值;判断所述差值是否小于等于预设数据量差值阈值;如果所述差值小于等于预设数据量差值阈值,则确定各所述待升级集群节点满足数据同步完成条件,将所述原数据库集群的客户端流量切换到所述预设的目标数据库集群中。
具体的,与各待升级集群节点对应的快照文件解析完成字段的数值为1,表明各升级进程已将所分配的待升级集群节点的全量快照文件迁移至预设的目标数据库集群,即各待升级集群节点的快照文件同步已完成。与各升级进程对应的输入缓冲区和输出缓冲区为空,表明各升级进程已将所分配的待升级集群节点的实时数据迁移至预设的目标数据库集群,即各待升级集群节点的实时数据同步已完成。
在确定各待升级集群节点的快照文件同步和实时数据同步已完成之后,计算所述原数据库集群的升级前数据量与所述预设的目标数据库集群的当前数据量的差值。在理想情况下,各待升级集群节点的快照文件同步和实时数据同步已完成之后,所述原数据库集群的升级前数据量与所述预设的目标数据库集群的当前数据量应当是一致的。但是在实际场景中,不可控因素可能导致所述原数据库集群的升级前数据量与所述预设的目标数据库集群的当前数据量存在一定差异。
预设数据量差值阈值是用于判断所述原数据库集群的升级前数据量与所述预设的目标数据库集群的当前数据量之间的差异是否在合理范围内的阈值。
如果所述差值小于等于预设数据量差值阈值,表明所述原数据库集群的升级前数据量与所述预设的目标数据库集群的当前数据量之间的差异在合理范围内,则确定各所述待升级集群节点满足数据同步完成条件,将所述原数据库集群的客户端流量切换到所述预设的目标数据库集群中。
如果所述差值大于预设数据量差值阈值,表明所述原数据库集群的升级前数据量与所述预设的目标数据库集群的当前数据量之间的差异超过合理范围,则确定各所述待升级集群节点不满足数据同步完成条件,可以将各所述待升级集群节点不满足数据同步完成条件的信息反馈给外部。
在本公开实施例的一个实施方式中,可选的,所述将所述原数据库集群的客户端流量切换到所述预设的目标数据库集群中,包括:获取所述预设的目标数据库集群的互联网协议地址;将所述预设的目标数据库集群的互联网协议地址添加到与所述原数据库集群对应的客户端的访问列表中;将所述原数据库集群的互联网协议地址从所述客户端的访问列表中删除。
本公开实施例中,以原redis数据库集群为例进行说明。如图1b所示,原redis数据库集群101中包括多个待升级集群节点(原redis)。原redis数据库集群101与客户端102对应,用于为客户端102提供数据服务。预设的目标数据库集群103中包括多个集群节点(目标redis)。升级工具104中包括与原redis数据库集群101中的待升级集群节点数量相同的升级进程。通过升级工具104中的各升级进程,并行地基于redis数据库主从复制协议,伪装成所分配的待升级集群节点的从节点,获取各待升级集群节点的全量快照文件以及实时数据,然后将各待升级集群节点的快照文件同步到预设的目标数据库集群103中,将各待升级集群节点的实时数据同步到预设的目标数据库集群103中。在确定各待升级集群节点的快照文件同步和实时数据同步已完成,且原数据库集群的升级前数据量与预设的目标数据库集群的当前数据量之间的差异在合理范围内之后,确定各待升级集群节点满足数据同步完成条件,将原redis数据库集群101的客户端流量切换到预设的目标数据库集群103。
本公开实施例的技术方案通过建立的各升级进程,并行地基于数据库主从复制协议,伪装成所分配的待升级集群节点的从节点,获取各待升级集群节点的全量快照文件以及实时数据,然后并行地对各待升级集群节点的全量快照文件进行解析,将解析完成的全量快照文件发送给预设的目标数据库集群,并行地将各待升级集群节点的实时数据同步给预设的目标数据库集群,当检测到各待升级集群节点满足数据同步完成条件时,将原数据库集群的客户端流量切换到预设的目标数据库集群中,解决了相关技术中的升级方案无法实时、高速、跨大版本实现数据库集群的升级的问题,可以通过建立的各升级进程,基于数据库主从复制协议,并行地获取各待升级集群节点的全量快照文件以及实时数据,然后并行地将解析完成的全量快照文件、以及各待升级集群节点的实时数据同步给预设的目标数据库集群,相比于相关技术中的基于增量文件aof的升级方案,速度会快数十倍,可以在原数据库集群不需要停止服务的前提下,实现实时升级,相比于redis官方提供的基于快照文件rdb的升级方案,保证了数据的实时性,只要保证各待升级集群节点的全量快照文件能被正常解析,就可以做到版本升级,甚至是版本降级,相比于集群内升级的升级方案,可以实现跨大版本的升级,即本公开的实施例的技术方案可以实时、高速、跨大版本实现数据库集群的升级。
图2是根据一示例性实施例示出的一种数据库集群升级方法的流程图,本实施例是对上述技术方案的进一步细化,本实施例中的技术方案可以与上述一个或者多个实施例中的各个可选方案结合。如图2所示,数据库集群升级方法包括以下步骤。
在步骤s21中,建立与原数据库集群中的待升级集群节点数量相同的升级进程,分别为每一个升级进程分配一个待升级集群节点。
本实施例中未详尽的描述可以参考前述实施例。
在步骤s22中,通过各所述升级进程,并行地根据数据库主从复制协议,获取各所述待升级集群节点的全量快照文件以及实时数据。
在步骤s23中,通过各所述升级进程,并行地对各所述待升级集群节点的全量快照文件进行解析,将解析完成的全量快照文件发送给预设的目标数据库集群。
在步骤s24中,通过各所述升级进程,并行地将各所述待升级集群节点的实时数据同步给所述预设的目标数据库集群。
在步骤s25中,在检测到各所述待升级集群节点满足数据同步完成条件时,获取所述预设的目标数据库集群的互联网协议地址。
本实施例中,与原数据库集群对应的客户端将原数据库集群的互联网协议地址保存在客户端的访问列表中,根据原数据库集群的互联网协议地址向原数据库集群发送数据访问请求,进行线上数据访问。
在检测到各所述待升级集群节点满足数据同步完成条件时,获取所述预设的目标数据库集群的互联网协议地址,用预设的目标数据库集群的互联网协议地址替换原数据库集群的互联网协议地址。与原数据库集群对应的客户端根据预设的目标数据库集群的互联网协议地址向预设的目标数据库集群的互联网协议地址发送数据访问请求,进行线上数据访问,从而将原数据库集群的客户端流量切换到预设的目标数据库集群中。
在步骤s26中,将所述预设的目标数据库集群的互联网协议地址添加到与所述原数据库集群对应的客户端的访问列表中。
本实施例中,客户端的访问列表用于存储与客户端对应的数据库集群的互联网协议地址。
在步骤s27中,将所述原数据库集群的互联网协议地址从所述客户端的访问列表中删除。
本实施例中,将所述原数据库集群的互联网协议地址从所述客户端的访问列表中删除之后,与原数据库集群对应的客户端开始根据预设的目标数据库集群的互联网协议地址向预设的目标数据库集群的互联网协议地址发送数据访问请求,进行线上数据访问,从而完成对为客户端提供数据服务的原数据库集群的升级,将为客户端提供数据服务的原数据库集群升级为目标数据库集群。原数据库集群不再继续使用。
本公开实施例的技术方案通过建立的各升级进程,并行地基于数据库主从复制协议,伪装成所分配的待升级集群节点的从节点,获取各待升级集群节点的全量快照文件以及实时数据,然后并行地对各待升级集群节点的全量快照文件进行解析,将解析完成的全量快照文件发送给预设的目标数据库集群,并行地将各待升级集群节点的实时数据同步给预设的目标数据库集群,当检测到各待升级集群节点满足数据同步完成条件时,获取预设的目标数据库集群的互联网协议地址,添加到与原数据库集群对应的客户端的访问列表中,然后将原数据库集群的互联网协议地址从客户端的访问列表中删除,解决了相关技术中的升级方案无法实时、高速、跨大版本实现数据库集群的升级的问题,可以通过建立的各升级进程,基于数据库主从复制协议,并行地获取各待升级集群节点的全量快照文件以及实时数据,然后并行地将解析完成的全量快照文件、以及各待升级集群节点的实时数据同步给预设的目标数据库集群,实现高速升级,可以在原数据库集群不需要停止服务的前提下,实现实时升级,保证了数据的实时性,只要保证各待升级集群节点的全量快照文件能被正常解析,就可以做到版本升级,甚至是版本降级,可以实现跨大版本的升级,可以在检测到各待升级集群节点满足数据同步完成条件时,自动将原数据库集群的客户端流量切换到预设的目标数据库集群中,完成对为客户端提供数据服务的原数据库集群的升级。
图3是根据一示例性实施例示出的一种数据库集群升级装置的框图。参照图3该装置包括升级进程建立单元31、节点数据获取单元32、快照文件同步单元33、实时数据同步单元34以及客户端切换单元35。
升级进程建立单元31,被配置为建立与原数据库集群中的待升级集群节点数量相同的升级进程,分别为每一个升级进程分配一个待升级集群节点。
节点数据获取单元32,被配置为通过各所述升级进程,并行地根据数据库主从复制协议,获取各所述待升级集群节点的全量快照文件以及实时数据。
快照文件同步单元33,被配置为通过各所述升级进程,并行地对各所述待升级集群节点的全量快照文件进行解析,将解析完成的全量快照文件发送给预设的目标数据库集群。
实时数据同步单元34,被配置为通过各所述升级进程,并行地将各所述待升级集群节点的实时数据同步给所述预设的目标数据库集群。
客户端切换单元35,被配置为在检测到各所述待升级集群节点满足数据同步完成条件时,将所述原数据库集群的客户端流量切换到所述预设的目标数据库集群中,所述目标数据库集群中的数据库版本高于所述原数据库集群中的数据库版本。
本公开实施例的技术方案通过建立的各升级进程,并行地基于数据库主从复制协议,伪装成所分配的待升级集群节点的从节点,获取各待升级集群节点的全量快照文件以及实时数据,然后并行地对各待升级集群节点的全量快照文件进行解析,将解析完成的全量快照文件发送给预设的目标数据库集群,并行地将各待升级集群节点的实时数据同步给预设的目标数据库集群,当检测到各待升级集群节点满足数据同步完成条件时,将原数据库集群的客户端流量切换到预设的目标数据库集群中,解决了相关技术中的升级方案无法实时、高速、跨大版本实现数据库集群的升级的问题,可以通过建立的各升级进程,基于数据库主从复制协议,并行地获取各待升级集群节点的全量快照文件以及实时数据,然后并行地将解析完成的全量快照文件、以及各待升级集群节点的实时数据同步给预设的目标数据库集群,相比于相关技术中的基于增量文件aof的升级方案,速度会快数十倍,可以在原数据库集群不需要停止服务的前提下,实现实时升级,相比于redis官方提供的基于快照文件rdb的升级方案,保证了数据的实时性,只要保证各待升级集群节点的全量快照文件能被正常解析,就可以做到版本升级,甚至是版本降级,相比于集群内升级的升级方案,可以实现跨大版本的升级,即本公开的实施例的技术方案可以实时、高速、跨大版本实现数据库集群的升级。
在本公开实施例的一个实施方式中,可选的,所述节点数据获取单元32被具体配置为:
通过每一个升级进程并行执行下述操作:
向所分配的待升级集群节点发送主从配置命令,成为所分配的待升级集群节点的从节点;
作为所分配的待升级集群节点的从节点,得到所分配的待升级集群节点的全量快照文件以及实时数据。
在本公开实施例的一个实施方式中,可选的,所述快照文件同步单元33被具体配置为:
通过每一个升级进程并行执行下述操作:
根据所分配的待升级集群节点的快照文件协议,对所分配的待升级集群节点的各快照文件进行解析,并将解析完成的快照文件发送给预设的目标数据库集群。
在本公开实施例的一个实施方式中,可选的,所述根据所分配的待升级集群节点的快照文件协议,对所分配的待升级集群节点的各快照文件进行解析,并将解析完成的快照文件发送给预设的目标数据库集群,包括:
依次从所分配的待升级集群节点的全量快照文件中获取一个快照文件作为目标快照文件;
根据所分配的待升级集群节点的快照文件协议,对所述目标快照文件进行解析,将解析完成的目标快照文件发送给预设的目标数据库集群;
对与所分配的待升级集群节点对应的快照文件解析行为的计数加1;
返回执行依次从所分配的待升级集群节点的全量快照文件中获取一个快照文件作为目标快照文件的操作,直至完成对所分配的待升级集群节点的全量快照文件的处理;
在检测到所述快照文件解析行为的计数等于所分配的待升级集群节点的全量快照文件数量时,将与所分配的待升级集群节点对应的快照文件解析完成字段的数值设置为1。
在本公开实施例的一个实施方式中,可选的,所述实时数据同步单元34被具体配置为:
通过每一个升级进程并行执行下述操作:
在检测到与所分配的待升级集群节点对应的快照文件解析完成字段的数值为1时,作为复制客户端,将从所分配的待升级集群节点的输入缓冲区和输出缓冲区中复制的实时数据发送给预设的目标数据库集群。
在本公开实施例的一个实施方式中,可选的,所述客户端切换单元35被具体配置为:
在通过各所述升级进程检测到与各待升级集群节点对应的快照文件解析完成字段的数值为1,且与各升级进程对应的输入缓冲区和输出缓冲区为空时,计算所述原数据库集群的升级前数据量与所述预设的目标数据库集群的当前数据量的差值;
判断所述差值是否小于等于预设数据量差值阈值;
如果所述差值小于等于预设数据量差值阈值,则确定各所述待升级集群节点满足数据同步完成条件,将所述原数据库集群的客户端流量切换到所述预设的目标数据库集群中。
在本公开实施例的一个实施方式中,可选的,所述将所述原数据库集群的客户端流量切换到所述预设的目标数据库集群中,包括:
获取所述预设的目标数据库集群的互联网协议地址;
将所述预设的目标数据库集群的互联网协议地址添加到与所述原数据库集群对应的客户端的访问列表中;
将所述原数据库集群的互联网协议地址从所述客户端的访问列表中删除。
关于上述实施例中的装置,其中各个单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图4是根据一示例性实施例示出的一种计算机设备的框图。计算机设备可以为独立于数据库集群的服务器。如图4所示,该计算机设备包括:一个或多个处理器41,图4中以一个处理器41为例;存储器42;所述设备中的处理器41和存储器42可以通过总线或者其他方式连接,图4中以通过总线连接为例。
存储器42作为一种非暂态计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本公开实施例中的一种数据库集群升级方法对应的程序指令/模块(例如,附图3所示的升级进程建立单元31、节点数据获取单元32、快照文件同步单元33、实时数据同步单元34以及客户端切换单元35)。处理器41通过运行存储在存储器42中的软件程序、指令以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现上述方法实施例的一种数据库集群升级方法,即:
建立与原数据库集群中的待升级集群节点数量相同的升级进程,分别为每一个升级进程分配一个待升级集群节点;
通过各所述升级进程,并行地根据数据库主从复制协议,获取各所述待升级集群节点的全量快照文件以及实时数据;
通过各所述升级进程,并行地对各所述待升级集群节点的全量快照文件进行解析,将解析完成的全量快照文件发送给预设的目标数据库集群;
通过各所述升级进程,并行地将各所述待升级集群节点的实时数据同步给所述预设的目标数据库集群;
在检测到各所述待升级集群节点满足数据同步完成条件时,将所述原数据库集群的客户端流量切换到所述预设的目标数据库集群中,所述目标数据库集群中的数据库版本高于所述原数据库集群中的数据库版本。
存储器42可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器42可以包括高速随机存取存储器,还可以包括非暂态性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态性固态存储器件。在一些实施例中,存储器42可选包括相对于处理器41远程设置的存储器,这些远程存储器可以通过网络连接至终端设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置43可用于输入调用者编写的计算机程序。输出装置44包括输出接口,可用于输出信息。
在示例性实施例中,还提供了一种包括指令的存储介质,例如存储指令的存储器(42),上述指令可由计算机设备的处理器(41)执行以完成上述方法。可选地,存储介质可以是非临时性计算机可读存储介质,例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供了一种计算机应用程序,所述计算机应用程序由计算机设备的处理器执行时,使得计算机设备能够执行如本公开任一实施例所述的数据库集群升级方法。
在示例性实施例中,还提供一种计算机程序产品,用于与计算机设备(终端设备或者服务器)结合使用,所述计算机程序产品包括计算机可读存储介质和内嵌于其中的计算机程序机制,经由计算机载入该程序并执行后能够实现如本公开任一实施例所述的数据库集群升级方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。