首页> 中国专利> 副本集群的创建方法和装置、电子设备和存储介质

副本集群的创建方法和装置、电子设备和存储介质

摘要

本申请提供了一种副本集群的创建方法和装置、电子设备和存储介质,其中,该方法包括:将目标数据目录存储到多个第一节点中的每个第一节点上,其中,多个第一节点为待创建的第一副本集群中的节点,目标数据目录为第二副本集群的第二节点上为目标数据库所配置的数据目录;将每个第一节点上的目标数据库表中的集群成员信息修改为与第一副本集群对应的目标集群成员信息,其中,目标数据库表为目标数据目录中的一个数据库表;控制多个第一节点根据目标集群成员信息建立网络连接,以创建出第一副本集群。通过本申请,解决了相关技术中的副本集群迁移方式存在的迁移速度慢、迁移过程不稳定的问题。

著录项

  • 公开/公告号CN112948354A

    专利类型发明专利

  • 公开/公告日2021-06-11

    原文格式PDF

  • 申请/专利权人 北京金山云网络技术有限公司;

    申请/专利号CN202110226840.X

  • 发明设计人 陈青松;

    申请日2021-03-01

  • 分类号G06F16/21(20190101);G06F16/22(20190101);G06F16/27(20190101);

  • 代理机构11662 北京华夏泰和知识产权代理有限公司;

  • 代理人刘晓燕

  • 地址 100085 北京市海淀区西二旗中路33号院4号楼6层006号

  • 入库时间 2023-06-19 11:22:42

说明书

技术领域

本申请涉及数据处理领域,尤其涉及一种副本集群的创建方法和装置、电子设备和存储介质。

背景技术

目前,云厂商可以通过云数据库,如,MongoDB(Mongo Database,一种文档数据库),提供云服务。随着提供的云服务越来越稳定,用户越来越倾向于把自建的副本集群迁移到云厂商。

相关技术中,一般采用逻辑迁移的方式进行副本集群迁移,其中,逻辑迁移是指:由驱动或者客户端向已有的副本集群(例如,MongoDB服务进程)发起全量查询操作(由查询条件进行数据过滤),然后经由磁盘被加载到内存,再然后被查询到客户端。

上述副本集群的迁移方式,由于所有数据先由查询条件经过过滤、然后经由磁盘被加载到内存、再被查询到客户端,操作过程过于繁琐和沉重,副本集群的迁移速度较慢。并且,副本迁移的过程不可中断,必须一次成功,因此,副本集群的迁移过程不稳定。同时,用户需要学习副本集群的迁移过程,需要很高的学习成本。

因此,相关技术中的副本集群迁移方式,存在迁移速度慢、迁移过程不稳定的问题。

发明内容

本申请提供了一种副本集群的创建方法和装置、电子设备和存储介质,以至少解决相关技术中的副本集群迁移方式存在的迁移速度慢、迁移过程不稳定的问题。

根据本申请实施例的一个方面,提供了一种副本集群的创建方法,包括:将目标数据目录存储到多个第一节点中的每个第一节点上,其中,所述多个第一节点为待创建的第一副本集群中的节点,所述目标数据目录为第二副本集群的第二节点上为目标数据库所配置的数据目录;将所述每个第一节点上的目标数据库表中的集群成员信息修改为与所述第一副本集群对应的目标集群成员信息,其中,所述目标数据库表为所述目标数据目录中的一个数据库表;控制所述多个第一节点根据所述目标集群成员信息建立网络连接,以创建出所述第一副本集群。

可选地,将所述目标数据目录存储到所述多个第一节点中的所述每个第一节点上包括:获取待迁移的目标压缩文件,其中,所述目标压缩文件是对所述目标数据目录进行压缩所得到的文件;将所述目标压缩文件拷贝到所述每个第一节点的目标位置上;控制对所述每个第一节点上的所述目标压缩文件进行解压,得到所述目标数据目录。

可选地,在控制所述多个第一节点根据所述目标集群成员信息建立网络连接之前,所述方法还包括:控制所述每个第一节点按照第一启动方式指定第一配置文件启动所述每个第一节点上的所述目标数据库的服务进程,其中,所述第一启动方式为开启身份认证的启动方式,所述每个第一节点上的所述第一配置文件中包含用于指示所述每个第一节点为副本集群中的一个副本的副本集信息。

可选地,在控制所述每个第一节点按照所述第一启动方式指定所述第一配置文件启动所述每个第一节点上的所述目标数据库的服务进程之前,所述方法还包括:将所述第二副本集群的第二配置文件存储到所述每个第一节点上;控制将所述每个第一节点上的所述第二配置文件的监听网络地址修改为所述每个第一节点的网络地址,得到所述第一配置文件。

可选地,将所述每个第一节点上的所述目标数据库表中的集群成员信息修改为与所述第一副本集群对应的所述目标集群成员信息包括:通过目标客户端控制所述每个第一节点将所述目标数据库表的成员字段中的地址端口信息修改为所述多个第一节点的地址端口信息,其中,所述目标集群成员信息包含所述多个第一节点的地址端口信息。

可选地,在将所述每个第一节点上的所述目标数据库表中的集群成员信息修改为与所述第一副本集群对应的所述目标集群成员信息之前,所述方法还包括:将所述每个第一节点上的第一配置文件中、用于指示所述每个第一节点为副本集群中的一个副本的副本集信息修改为无效状态,得到第三配置文件;控制所述每个第一节点按照第二启动方式指定所述第三配置文件启动所述每个第一节点上的所述目标数据库的服务进程,其中,所述第二启动方式为不开启身份认证的启动方式;在将所述每个第一节点上的所述目标数据库表中的集群成员信息修改为与所述第一副本集群对应的所述目标集群成员信息之后,所述方法还包括:控制将所述每个第一节点上的所述第三配置文件中的所述副本集信息修改为生效状态,得到所述第一配置文件,然后关闭所述每个第一节点的服务进程。

可选地,在控制所述多个第一节点根据所述目标集群成员信息建立网络连接之后,所述方法还包括:从所述多个第一节点中选举出目标节点,其中,所述目标节点为所述第一副本集群中允许执行数据读写操作的主节点,所述多个第一节点中除了所述目标节点以外的其他节点为所述目标节点的从节点。

根据本申请实施例的另一个方面,还提供了一种副本集群的创建装置,包括:第一存储单元,用于将目标数据目录存储到多个第一节点中的每个第一节点上,其中,所述多个第一节点为待创建的第一副本集群中的节点,所述目标数据目录为第二副本集群的第二节点上为目标数据库所配置的数据目录;第一修改单元,用于将所述每个第一节点上的目标数据库表中的集群成员信息修改为与所述第一副本集群对应的目标集群成员信息,其中,所述目标数据库表为所述目标数据目录中的一个数据库表;第一控制单元,用于控制所述多个第一节点根据所述目标集群成员信息建立网络连接,以创建出所述第一副本集群。

可选地,所述第一存储单元包括:获取模块,用于获取待迁移的目标压缩文件,其中,所述目标压缩文件是对所述目标数据目录进行压缩所得到的文件;拷贝模块,用于将所述目标压缩文件拷贝到所述每个第一节点的目标位置上;控制模块,用于控制对所述每个第一节点上的所述目标压缩文件进行解压,得到所述目标数据目录。

可选地,所述装置还包括:第二控制单元,用于在控制所述多个第一节点根据所述目标集群成员信息建立网络连接之前,控制所述每个第一节点按照第一启动方式指定第一配置文件启动所述每个第一节点上的所述目标数据库的服务进程,其中,所述第一启动方式为开启身份认证的启动方式,所述每个第一节点上的所述第一配置文件中包含用于指示所述每个第一节点为副本集群中的一个副本的副本集信息。

可选地,所述装置还包括:第二存储单元,用于在控制所述每个第一节点按照所述第一启动方式指定所述第一配置文件启动所述每个第一节点上的所述目标数据库的服务进程之前,将所述第二副本集群的第二配置文件存储到所述每个第一节点上;第三控制单元,用于控制将所述每个第一节点上的所述第二配置文件的监听网络地址修改为所述每个第一节点的网络地址,得到所述第一配置文件。

可选地,所述第一修改单元包括:修改模块,用于通过目标客户端控制所述每个第一节点将所述目标数据库表的成员字段中的地址端口信息修改为所述多个第一节点的地址端口信息,其中,所述目标集群成员信息包含所述多个第一节点的地址端口信息。

可选地,所述装置还包括:第二修改单元,用于在将所述每个第一节点上的所述目标数据库表中的集群成员信息修改为与所述第一副本集群对应的所述目标集群成员信息之前,将所述每个第一节点上的第一配置文件中、用于指示所述每个第一节点为副本集群中的一个副本的副本集信息修改为无效状态,得到第三配置文件;第四控制单元,用于控制所述每个第一节点按照第二启动方式指定所述第三配置文件启动所述每个第一节点上的所述目标数据库的服务进程,其中,所述第二启动方式为不开启身份认证的启动方式;第五控制单元,用于在将所述每个第一节点上的所述目标数据库表中的集群成员信息修改为与所述第一副本集群对应的所述目标集群成员信息之后,控制将所述每个第一节点上的所述第三配置文件中的所述副本集信息修改为生效状态,得到所述第一配置文件,然后关闭所述每个第一节点的服务进程。

可选地,所述装置还包括:选举单元,用于在控制所述多个第一节点根据所述目标集群成员信息建立网络连接之后,从多个第一节点中选举出目标节点,其中,所述目标节点为所述第一副本集群中允许执行数据读写操作的主节点,所述多个第一节点中除了所述目标节点以外的其他节点为所述目标节点的从节点。

根据本申请实施例的又一个方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;其中,存储器,用于存储计算机程序;处理器,用于通过运行所述存储器上所存储的所述计算机程序来执行上述任一实施例中的方法步骤。

根据本申请实施例的又一个方面,还提供了一种计算机可读的存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一实施例中的方法步骤。

在本申请实施例中,采用将原副本的数据目录存储到新节点上、并作为新节点上的数据目录进行副本集群创建的方式,通过将目标数据目录存储到多个第一节点中的每个第一节点上,其中,多个第一节点为待创建的第一副本集群中的节点,目标数据目录为第二副本集群的第二节点上为目标数据库所配置的数据目录;将每个第一节点上的目标数据库表中的集群成员信息修改为与第一副本集群对应的目标集群成员信息,其中,目标数据库表为目标数据目录中的一个数据库表;控制多个第一节点根据目标集群成员信息建立网络连接,以创建出第一副本集群,由于将原副本的数据目录直接存储到新的节点上,无需执行全量查询操作,从而可以实现完成副本集群的迁移的目的,达到了提高副本集群的迁移速度、提高迁移过程的稳定性的技术效果,进而解决了相关技术中的副本集群迁移方式存在的迁移速度慢、迁移过程不稳定的问题。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。

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

图1是根据本发明实施例的一种可选的副本集群的创建方法的硬件环境的示意图;

图2是根据本申请实施例的一种可选的副本集群的创建方法的流程示意图;

图3是根据本申请实施例的另一种可选的副本集群的创建方法的流程示意图;

图4是根据本申请实施例的一种可选的副本集群的创建装置的结构框图;

图5是根据本申请实施例的一种可选的电子设备的结构框图。

具体实施方式

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

需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

根据本申请实施例的一个方面,提供了一种副本集群的创建方法。可选地,在本实施例中,上述副本集群的创建方法可以应用于如图1所示的由终端102和服务器104所构成的硬件环境中。如图1所示,服务器104通过网络与终端102进行连接,可用于为终端或终端上安装的客户端提供服务(应用服务等),可在服务器上或独立于服务器设置数据库,用于为服务器104提供数据存储服务。

上述网络可以包括但不限于以下至少之一:有线网络,无线网络。上述有线网络可以包括但不限于以下至少之一:广域网,城域网,局域网,上述无线网络可以包括但不限于以下至少之一:WIFI(Wireless Fidelity,无线保真),蓝牙。终端102可以并不限定于为PC、手机、平板电脑等。

本申请实施例的副本集群的创建方法可以由服务器104来执行,也可以由终端102来执行,还可以是由服务器104和终端102共同执行。其中,终端102执行本申请实施例的副本集群的创建方法也可以是由安装在其上的客户端来执行。

以由终端102来执行本实施例中的副本集群的创建方法为例,图2是根据本申请实施例的一种可选的副本集群的创建方法的流程示意图,如图2所示,该方法的流程可以包括以下步骤:

步骤S202,将目标数据目录存储到多个第一节点中的每个第一节点上,其中,多个第一节点为待创建的第一副本集群中的节点,目标数据目录为第二副本集群的第二节点上为目标数据库所配置的数据目录。

本实施例中的副本集群的创建方法可以应用于将副本集群迁移到云服务端的场景,例如,将原数据库的副本集群迁移到云端数据库的副本集群中,即,将目标数据库的副本集群迁移到云端的目标数据库的副本集群,目标数据库的副本集群可以是由目标数据库服务进程所组成的集群。目标数据库可以有多种形式,例如,MongoDB。对应地,目标数据库的副本集群为MongoDB副本集群。本实施例中以MongoDB副本集群为例说明上述副本集群的创建方法,对于其他类似的数据库,可以采用相同或者类似的方式进行创建。

对于MongoDB,MongoDB副本集群是由多个MongoDB服务进程组成的集群,同一集群内的所有MongoDB服务进程所拥有的用户数据具有一致性:用户数据有多个副本,每个副本由一个MongoDB服务进程所拥有。一个MongoDB服务进程可以运行在一个服务器上的。对应地,用户数据的多个副本存放在多个服务器上,每个服务器存放的用户数据是相同的。

在本实施例中,用户只需提供所需迁移的数据(待迁移数据),云厂商的相关人员即可在云服务器上利用提供的数据构建新副本集群,构建的新副本集群即可被客户直接使用。原副本集群为第二副本集群,该第二副本集群中可以包含多个第二节点。待迁移数据可以为目标数据目录,该目标数据目录为第二副本集群的(某一个)第二节点上为目标数据库所配置的数据目录。数据目录是指节点上所存储的数据在磁盘上的目录的绝对位置(包含整个数据文件),每个节点都有自己的数据目录。

为了将第二副本集群迁移到云端的目标数据库的第一副本集群中,也就是,完成第一副本集群的创建,可以首先为第一副本集群分配多个云端节点,即,多个第一节点。多个第一节点上的目标数据库(目标数据库服务进程)的版本与第二节点上的目标数据库(目标数据库服务进程)的版本可以是相同的。多个第一节点的数量与第二副本集群中包含的节点(第二节点)的数量可以是相同的,也可以是不同的,例如,配置更多或者更少的节点,本实施例中对第一节点的数量对此不作限定。

需要说明的是,一个节点就是一个容器,一个物理机上有多个节点,也就是多个容器。节点或者容器上可以运行数据库服务进程的环境。

本实施例中的副本集群的创建方法的执行主体可以是目标终端,该目标终端上可以运行有目标客户端,例如,mongo shell(一种MongoDB管理工具)客户端(具有mongoshell的客户端),本实施例中的部分步骤可以是由目标客户端执行的。

对于多个第一节点,目标终端可以通过网络与每个第一节点相连,并可以将目标数据目录存储到每个第一节点上,可以是将目标数据目录存储到为目标数据库所配置的第一位置上,该第一位置与目标数据目录在第二节点上的第二位置是对应的。由于直接进行数据目录的迁移,可以避免新集群成员间的数据的全量同步,快速达到一致性的稳定可用状态。

将目标数据目录存储到每个第一节点上的方式可有一种或者多种,例如,可以将目标数据目录的压缩包复制到每个第一节点(的第一位置)上,然后在每个第一节点上进行解压,从而将目标数据目录存储到每个第一节点(的第一位置)上。又例如,也可以分批将目标数据目录中的数据文件存储到每个第一节点上,并且按照目标数据目录中数据文件之间的关系进行数据文件存放,从而将目标数据目录存储到每个第一节点上。

对于每个第一节点,其可以将存储的目标数据目录作为本节点上的目标数据库的数据目录启动,从而完成数据迁移。

步骤S204,将每个第一节点上的目标数据库表中的集群成员信息修改为与第一副本集群对应的目标集群成员信息,其中,目标数据库表为目标数据目录中的一个数据库表。

第一副本集群中包含多个第一节点,多个第一节点之间需要基于节点之间的关联关系(例如,属于同一个副本集群的集群成员)建立网络连接,完成新集群的构建过程,构建出的新集群才能被用户正常使用。

多个第一节点之间的网络连接可以是根据数据库里的集群成员信息建立的。集群成员信息可以位于目标数据目录中的目标数据库表中,该目标数据库表可以是,local.system.replset表。由于每个第一节点上存储的是第二节点上为目标数据库所配置的数据目录,那么,每个第一节点上的目标数据库表中的集群成员信息为原副本集群的集群成员信息。目标终端可以控制每个第一节点上将其上的目标数据库表中的集群成员信息修改为与第一副本集群对应的目标集群成员信息。

可选地,也可以先通过目标终端或者其他设备将目标数据库表中的集群成员信息修改为与第一副本集群对应的目标集群成员信息,再将目标数据目录存储到每个第一节点上。

步骤S206,控制多个第一节点根据目标集群成员信息建立网络连接,以创建出第一副本集群。

在将每个第一节点上的目标数据库表中的集群成员信息修改为目标集群成员信息之后,目标终端可以控制每个第一节点读取目标数据库表中的集群成员信息,即,目标集群成员信息,确定与本节点位于同一副本集群的节点的信息,并建立多个第一节点之间的网络连接,从而完成第一副本集群的建立。

建立好的第一副本集群可以被用户正常使用,用户可以使用构建的第一副本集群执行多种数据操作,例如,数据的增、删、改、查等,本实施例中对于第一副本集群的使用过程不作限定。

通过上述步骤S202至步骤S206,将目标数据目录存储到多个第一节点中的每个第一节点上,其中,多个第一节点为待创建的第一副本集群中的节点,目标数据目录为第二副本集群的第二节点上为目标数据库所配置的数据目录;将每个第一节点上的目标数据库表中的集群成员信息修改为与第一副本集群对应的目标集群成员信息,其中,目标数据库表为目标数据目录中的一个数据库表;控制多个第一节点根据目标集群成员信息建立网络连接,以创建出第一副本集群,解决了相关技术中的副本集群迁移方式存在的迁移速度慢、迁移过程不稳定的问题,提高了副本集群的迁移速度,提高了迁移过程的稳定性。

作为一种可选的实施例,将目标数据目录存储到多个第一节点中的每个第一节点上包括:

S11,获取待迁移的目标压缩文件,其中,目标压缩文件是对目标数据目录进行压缩所得到的文件;

S12,将目标压缩文件拷贝到每个第一节点的目标位置上;

S13,控制对每个第一节点上的目标压缩文件进行解压,得到目标数据目录。

为了将目标数据目录存储到每个第一节点上,目标终端可以首先获取待迁移的目标压缩文件,目标压缩文件是对目标数据目录进行压缩所得到的文件。对目标数据目录进行压缩所采用的压缩方式可以有多种,例如,tar或zip压缩。

例如,用户可以将为MongoDB实例所配置的数据目录直接使用tar或zip压缩打包工具进行压缩打包,然后将数据压缩包(例如,data.tar.gz)发送给云厂商,从而可以使目标终端获取到该数据压缩包。

目标终端可以将目标压缩文件拷贝到每个第一节点的目标位置(前述第一位置)上,使用控制命令控制每个第一节点对其上的目标压缩文件进行解压,得到目标数据目录,从而可以将目标数据目录存储到每个第一节点的目标位置上。

例如,可以对上述数据压缩包进行解压,分别拷到集群机器的所有节点对应的目标位置上。

通过本实施例,通过将数据目录的压缩包拷贝到集群机器的节点对应的位置上,然后进行解压,可以提高数据目录存储到集群机器的节点的便捷性,提高数据迁移的效率。

作为一种可选的实施例,在控制多个第一节点根据目标集群成员信息建立网络连接之前,上述方法还包括:

S21,控制每个第一节点按照第一启动方式指定第一配置文件启动每个第一节点上的目标数据库的服务进程,其中,第一启动方式为开启身份认证的启动方式,每个第一节点上的第一配置文件中包含用于指示每个第一节点为副本集群中的一个副本的副本集信息。

每个第一节点可以均配置有一个配置文件,该配置文件可以包含多个配置项,每一个配置项相当于一个参数,配置项可以包含但不限于以下至少之一:监听网络地址,副本集信息等。第一配置文件可以包含用户自己在启动数据库(例如,MongoDB)服务进程时所指定的配置文件的所有内容。

例如,配置文件的一个示例如下:

replication:

oplogSizeMB:990

replSetName:xxxxxxxxxxxxxx

security:

authorization:enabled

keyFile:/etc/mongodb/mongodb-keyfile

在上述配置文件中,oplogSizeMB是用于副本同步的参数,replSetName是集群名称,authorization为身份认证,keyFile为密钥文件。

为了建立多个第一节点之间的网络连接,目标终端可以控制每个第一节点按照第二启动方式指定第一配置文件启动每个第一节点上的目标数据库服务进程,其中,第一启动方式是开启身份认证的启动方式。按照第一启动方式启动,可以保证节点运行的安全性。

第一配置文件中可以包含用于指示每个第一节点为副本集群中的一个副本的副本集信息,通过该副本集信息,每个第一节点可以确定自己是一个副本集群中的一个副本,进而读取目标数据库表中的目标集群成员信息,并与其他集群成员之间的建立网络连接。

例如,目标终端可以控制以auth(认证)方式指定v2.conf(作用同第一配置文件)启动,即,启动时指定v2.conf文件参数,此时的启动方式是auth方式。新集群的所有节点启动后,可以读取local.system.replset表的成员信息,建立网络连接。

通过本实施例,通过开启身份认证的启动方式指定新集群的配置文件进行节点启动,可以保证节点运行的安全性,同时保证网络连接建立的准确性。

作为一种可选的实施例,在控制每个第一节点按照第一启动方式指定第一配置文件启动每个第一节点上的目标数据库的服务进程之前,上述方法还包括:

S31,将第二副本集群的第二配置文件存储到每个第一节点上;

S32,控制将每个第一节点上的第二配置文件的监听网络地址修改为每个第一节点的网络地址,得到第一配置文件。

为了使用第一配置文件,目标终端可以控制将前述第一配置文件存储到每个第一节点上。第一配置文件可以是根据第二副本集群的配置文件(即,第二配置文件)生成的,例如,可以是根据第二配置文件所拥有的配置项生成的。生成第一配置文件的过程可以是由每个第一节点上执行的,也可以是在目标终端上或者其他设备上预先执行的,生成第一配置文件可以再被存储到每个第一节点上。

可选地,在本实施例中,由每个第一节点上执行生成第一配置文件的过程。目标终端可以先将第二集群副本的第二配置文件拷贝到每个第一节点上,第二配置文件和目标压缩文件可以是同时拷贝的,也可以是分别拷贝的。

例如,用户可以将数据压缩包和原副本集群的配置文件(xxxx.conf,作用同第二配置文件)一起发送给云厂商,从而可以使目标终端获取到该数据压缩包和该配置文件。目标终端可以将该数据压缩包和该配置文件同时拷贝到新副本集群的各个节点上。

目标终端可以通过控制命令控制对每个第一节点上的第二配置文件进行修改,修改操作可以是:将每个第一节点上的第二配置文件的监听网络地址修改为每个第一节点的网络地址。通过将配置文件中的网络地址由原节点(第二节点)的网络地址修改到对应的当前节点所拥有的网络地址,可以便于启动当前节点的目标数据库的服务进程,以及其他节点连接上当前节点。

通过本实施例,通过将原副本集群的配置文件拷贝到新集群的节点中,并通过修改配置文件中的监听网络地址生成当前节点的配置文件,可以提高配置文件的生成效率。

作为一种可选的实施例,将每个第一节点上的目标数据库表中的集群成员信息修改为与第一副本集群对应的目标集群成员信息包括:

S41,通过目标客户端控制每个第一节点将目标数据库表的成员字段中的地址端口信息修改为多个第一节点的地址端口信息,其中,目标集群成员信息包含多个第一节点的地址端口信息。

集群成员信息可以对应于数据库表的成员字段,该成员字段包含有各个成员的地址端口信息,目标数据库表中的成员字段为第二副本集群中的多个第二节点的地址端口信息,需要将其修改为多个第一节点的地址端口信息。

修改集群成员信息的操作可以是在目标终端或者其他设备处执行的,还可以是目标终端通过目标客户端登录每个第一节点之后执行的。对于一些数据库,例如,MongoDB,集群成员信息所在的数据库表是加密的,不可直接修改文件,需要通过操作数据库提供的命令工具(例如,mongo shell)登录以后通过接口才可以修改。

可选地,在本实施例中,目标终端可以通过目标客户端分别登录每个第一节点,并通过目标客户端控制每个第一节点将目标数据库表的成员字段中的地址端口信息修改为多个第一节点的地址端口信息,从而将目标数据库表中的集群成员信息修改为目标集群成员信息。对于MongoDB,目标客户端可以是mongo shell客户端。

例如,终端可以利用mongo shell客户端登录新副本集群中的各个容器,修改local.system.replset表的文档,其文档只有一个,文档里包含members字段,修改可以是将members中对应的成员的host(主机)信息修改为新容器的地址端口信息。members字段的一个示例如下:

"members":[{"_id":0,"host":"10.111.50.8:37017","arbiterOnly":false,"buildIndexes":true,"hidden":false,"priority":1,"tags":{},"slaveDelay":NumberLong(0),"votes":1},{"_id":1,"host":"10.111.50.8:47017","arbiterOnly":false,"buildIndexes":true,"hidden":true,"priority":0,"tags":{},"slaveDelay":NumberLong(0),"votes":1},{"_id":2,"host":"10.111.50.8:57017","arbiterOnly":false,"buildIndexes":true,"hidden":false,"priority":2,"tags":{},"slaveDelay":NumberLong(0),"votes":1}]。

通过本实施例,通过客户端修改新集群的节点上的集群成员信息,可以提高集群成员信息修改的便捷性和兼容性。

作为一种可选的实施例,在将每个第一节点上的目标数据库表中的集群成员信息修改为与第一副本集群对应的目标集群成员信息之前,上述方法还包括:

S51,将每个第一节点上的第一配置文件中、用于指示每个第一节点为副本集群中的一个副本的副本集信息修改为无效状态,得到第三配置文件;

S52,控制每个第一节点按照第二启动方式指定第三配置文件启动每个第一节点上的目标数据库的服务进程,其中,第二启动方式为不开启身份认证的启动方式;

在将每个第一节点上的目标数据库表中的集群成员信息修改为与多第一副本集群对应的目标集群成员信息之后,上述方法还包括:

S53,控制将每个第一节点上的第三配置文件中的副本集信息修改为生效状态,得到第一配置文件,然后关闭每个第一节点的服务进程。

为了保证每个第一节点可以顺利启动,从而可以对每个第一节点上的目标数据库表中的集群成员信息进行修改,目标终端可以将每个第一节点上的第一配置文件中、用于指示每个第一节点为副本集群中的一个副本的副本集信息修改为无效状态,得到第三配置文件。可选地,将每个第一节点上的第二配置文件中的监测网络地址每个第一节点的网络地址和将副本集信息修改为无效状态可以是同时执行的,修改之后得到的是第三配置文件。

目标终端可以控制每个第一节点按照第二启动方式指定第三配置文件启动每个第一节点上的目标数据库的服务进程。第二启动方式是不开启身份认证的启动方式。而由于第三配置文件中的副本集信息为无效状态,在节点启动时目标数据库的服务进程会认为当前节点不是副本集群中的一员,只是单独的一个节点,所以不会去和在数据库中存储的集群中的副本成员进行网络连接,避免由于还没完成集群成员信息修改,导致当前节点与旧的副本成员进行通信。

例如,目标终端可以将各个容器的xxxx.conf中的监听网络地址修改为容器对应的地址,然后将副本集信息注释掉,变为新的配置文v1.conf,然后以noauth方式指定v1.conf启动,即,启动时指定–noauth参数和v1.conf文件参数。

例如,对于MongoDB副本集群,针对所有机器使用同版本的MongoDB二进制文件进行noauth(无认证)和单节点方式启动。使用同版本的MongoDB二进制文件是为了保证数据目录的兼容性,因为MongoDB不同版本具有不同的特性,不同版本并不完全兼容。而noauth方式参数表示不开启用户身份认证。

在每个第一节点启动之后,目标终端可以针对每个第一节点进行集群成员信息修改。如果已经将每个第一节点上的目标数据库表中的集群成员信息修改为目标集群成员信息,由于第三配置文件中的副本集信息仍为无效状态,为了保证可以读取并执行对应的操作(例如,读取目标集群成员信息,建立网络连接),目标终端可以控制将第三配置文件中的副本集信息修改为生效状态,从而得到第一配置文件。

在得到第一配置文件之后,目标终端可以控制关闭每个第一节点的服务进程。在需要时,目标终端可以控制每个第一节点按照第一启动方式指定第一配置文件启动每个第一节点上的目标数据库的服务进程。

例如,在修改完local.system.replset表的文档之后,目标终端可以控制将上述容器上的v1.conf(作用同第三配置文件)中的副本集信息注释打开,使其配置生效,变为新的配置文件v2.conf(作用同第一配置文件)。

通过本实施例,通过使用不开启身份认证、且不与同一副本集群内的其他节点进行数据通信的启动方式控制副本集群中的节点启动,可以保证节点启动的便捷性,避免由于节点启动异常导致的无法修改配置文件;通过将配置文件中的副本集信息注释掉,可以避免节点启动异常,同时保证配置文件修改的准确性。

作为一种可选的实施例,在控制多个第一节点根据目标集群成员信息建立网络连接之后,上述方法还包括:

S61,从多个第一节点中选举出目标节点,其中,目标节点为第一副本集群中允许执行数据读写操作的主节点,多个第一节点中除了目标节点以外的其他节点为目标节点的从节点。

第一副本集群可以有多种形式,例如,主从集群,也可以是非主从集群。如果第一副本集群是主从集群,在建立网络连接之后,多个第一节点可以执行多个第一节点之间的选取主节点的流程。

每个第一节点可以基于选取主节点的条件进行投票,按照每个第一节点的投票结果,从多个第一节点中选举出目标节点,也就是,第一副本集群的主节点,主节点可以允许执行数据的读操作和写操作,读操作可以包括查询操作(查),写操作可以包括:插入操作(增),删除操作(删),更新操作(改)。

除了第一节点以外的其他节点是目标节点的从节点,从节点可以(仅)允许执行数据的读操作。本实施例中的读写操作针对的是客户端的读写操作,主从节点之间允许进行数据同步,在数据同步的过程中从节点的数据会跟随主节点的数据同步改变。

通过本实施例,通过在多个节点之间进行选主,从而建立主从集群,对外主从集群中仅有主节点允许写操作,从而可以保证数据操作的便捷性,同时保证副本集群中保存的用户数据的一致性。

需要说明的是,对于MongoDB,可以只有修改集群成员信息是由mongo shell客户端登录到数据库执行的,其他步骤是由终端登录到服务器以后,通用的bash shell完成的,bash shell是Linux系统自带的一套命令行软件,提供了很多的操作计算机的命令。

下面结合可选示例对本申请实施例中的副本集群的创建方法进行解释说明。在本示例中,目标数据库为MongoDB,目标客户端为mongo shell客户端,云端节点为云容器。

为了解决MongoDB逻辑迁移比较慢且不稳定、且用户需要很高学习成本的问题,本示例中提供了一种MongoDB物理备份异地创建副本集群的方案,用户只需提供原副本集群的配置文件和为MongoDB实例所配置的数据目录的数据压缩包,云厂商即可根据用户提供的数据创建新副本集群。

在创建新副本集群时,首先,可以根据用户的配置文件所拥有的配置项生成新副本集群的配置文件,可以将用户的配置文件中的IP(Internet Protocol Address,互联网协议地址)和端口号修改为云端集群机器对应的IP和端口号,每个集群机器都要对应修改;然后,对数据压缩包进行解压,分别拷到集群机器的所有节点对应的目标位置上,并针对所有集群机器使用同版本的MongoDB二进制文件进行noauth和单节点方式启动;再然后,针对所有节点修改集群成员信息,针对所有节点的配置文件增加auth和集群信息;最后,针对所有的节点用新的配置文件重启MongoDB进程。

如图3所示,本可选示例中的副本集群的创建方法的流程可以包括以下步骤:

步骤S302,获取用户的数据压缩包和配置文件,在云容器准备n个新的容器。

为了构建新的副本集群,可以首先获取用户的数据压缩包data.tar.gz和配置文件xxxx.conf。由于新副本集群的节点个数为n,可以在云容器准备n个新容器。

步骤S304,将数据压缩包和配置文件分别拷贝到新副本集群的所有容器上。

目标终端可以远端控制将数据压缩包data.tar.gz和配置文件xxxx.conf拷贝到新副本集群的所有容器上的目标位置上(这个位置跟数据目录在原集群节点上的位置是一样的)。

步骤S306,将所有容器的数据压缩包进行解压,获取数据目录。

目标终端可以远端控制所有容器解压其上的数据压缩包data.tar.gz,获取到数据目录。

步骤S308,将容器的配置文件中的监听网络地址修改为容器对应的地址,将副本集信息注释掉,变为新的配置文件,以noauth方式指定新的配置文件启动。

针对所有容器,目标终端可以远端控制所有容器将其上的配置文件中的监听网络地址修改为容器对应的地址,将副本集信息注释掉,变为新的配置文件v1.conf,然后以noauth方式指定v1.conf启动。

步骤S310,利用目标客户端登录容器,修改集群成员信息。

针对所有容器,利用mongo shell客户端登录各个容器,修改集群成员信息,即,修改local.system.replset表中的members字段,将members字段中对应的成员的host信息修改新的容器的地址端口信息。

步骤S312,将上述容器的配置文件中的副本集信息注释打开,使其配置生效,变为新的配置文件,然后以auth方式指定新的配置文件启动。

针对所有容器,目标终端可以远端控制将上述容器的配置文件v1.conf中的副本集信息注释打开,使其配置生效,变为新的配置文件v2.conf,然后以auth方式指定v2.conf启动,即,启动时指定v2.conf文件参数,此时的启动方式即为auth方式。

步骤S314,新集群的所有节点启动后,读取集群成员信息,建立网络连接,进行选主,完成新集群的构建。

新集群的所有节点启动后,可以读取local.system.replset表的成员信息,建立网络连接,进行选主,从而完成新集群的构建过程。

通过本示例,利用数据目录的物理备份,并修改local.system.replset完成新集群的构建,集群构建成本低,构建简单快速。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM(Read-Only Memory,只读存储器)/RAM(Random Access Memory,随机存取存储器)、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。

根据本申请实施例的另一个方面,还提供了一种用于实施上述副本集群的创建方法的副本集群的创建装置。图4是根据本申请实施例的一种可选的副本集群的创建装置的结构框图,如图4所示,该装置可以包括:

第一存储单元402,用于将目标数据目录存储到多个第一节点中的每个第一节点上,其中,多个第一节点为待创建的第一副本集群中的节点,目标数据目录为第二副本集群的第二节点上为目标数据库所配置的数据目录;

第一修改单元404,与第一存储单元402相连,用于将每个第一节点上的目标数据库表中的集群成员信息修改为与第一副本集群对应的目标集群成员信息,其中,目标数据库表为目标数据目录中的一个数据库表;

第一控制单元406,与第一修改单元404相连,用于控制多个第一节点根据目标集群成员信息建立网络连接,以创建出第一副本集群。

需要说明的是,该实施例中的第一存储单元402可以用于执行上述步骤S202,该实施例中的第一修改单元404可以用于执行上述步骤S204,该实施例中的第一控制单元406可以用于执行上述步骤S206。

通过上述模块,将目标数据目录存储到多个第一节点中的每个第一节点上,其中,多个第一节点为待创建的第一副本集群中的节点,目标数据目录为第二副本集群的第二节点上为目标数据库所配置的数据目录;将每个第一节点上的目标数据库表中的集群成员信息修改为与第一副本集群对应的目标集群成员信息,其中,目标数据库表为目标数据目录中的一个数据库表;控制多个第一节点根据目标集群成员信息建立网络连接,以创建出第一副本集群,解决了相关技术中的副本集群迁移方式存在的迁移速度慢、迁移过程不稳定的问题,提高了副本集群的迁移速度,提高了迁移过程的稳定性。

作为一种可选的实施例,第一存储单元402包括:

获取模块,用于获取待迁移的目标压缩文件,其中,目标压缩文件是对目标数据目录进行压缩所得到的文件;

拷贝模块,用于将目标压缩文件拷贝到每个第一节点的目标位置上;

控制模块,用于控制对每个第一节点上的目标压缩文件进行解压,得到目标数据目录。

作为一种可选的实施例,上述装置还包括:

第二控制单元,用于在控制多个第一节点根据目标集群成员信息建立网络连接之前,控制每个第一节点按照第一启动方式指定第一配置文件启动每个第一节点上的目标数据库的服务进程,其中,第一启动方式为开启身份认证的启动方式,每个第一节点上的第一配置文件中包含用于指示每个第一节点为副本集群中的一个副本的副本集信息。

作为一种可选的实施例,上述装置还包括:

第二存储单元,用于在控制每个第一节点按照第一启动方式指定第一配置文件启动每个第一节点上的目标数据库的服务进程之前,将第二副本集群的第二配置文件存储到每个第一节点上;

第三控制单元,用于控制将每个第一节点上的第二配置文件的监听网络地址修改为每个第一节点的网络地址,得到第一配置文件。

作为一种可选的实施例,第一修改单元404包括:

修改模块,用于通过目标客户端控制每个第一节点将目标数据库表的成员字段中的地址端口信息修改为多个第一节点的地址端口信息,其中,目标集群成员信息包含多个第一节点的地址端口信息。

作为一种可选的实施例,上述装置还包括:

第二修改单元,用于在将每个第一节点上的目标数据库表中的集群成员信息修改为与第一副本集群对应的目标集群成员信息之前,将每个第一节点上的第一配置文件中、用于指示每个第一节点为副本集群中的一个副本的副本集信息修改为无效状态,得到第三配置文件;

第四控制单元,用于控制每个第一节点按照第二启动方式指定第三配置文件启动每个第一节点上的目标数据库的服务进程,其中,第二启动方式为不开启身份认证的启动方式;

第五控制单元,用于在将每个第一节点上的目标数据库表中的集群成员信息修改为与第一副本集群对应的目标集群成员信息之后,控制将每个第一节点上的第三配置文件中的副本集信息修改为生效状态,得到第一配置文件,然后关闭每个第一节点的服务进程。

作为一种可选的实施例,上述装置还包括:

选举单元,用于在控制多个第一节点根据目标集群成员信息建立网络连接之后,从多个第一节点中选举出目标节点,其中,目标节点为第一副本集群中允许执行数据读写操作的主节点,多个第一节点中除了目标节点以外的其他节点为目标节点的从节点。

此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现,其中,硬件环境包括网络环境。

根据本申请实施例的又一个方面,还提供了一种用于实施上述副本集群的创建方法的电子设备,该电子设备可以是服务器、终端、或者其组合。

图5是根据本申请实施例的一种可选的电子设备的结构框图,如图5所示,包括处理器502、通信接口504、存储器506和通信总线508,其中,处理器502、通信接口504和存储器506通过通信总线508完成相互间的通信,其中,

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

处理器502,用于执行存储器506上所存放的计算机程序时,实现如下步骤:

S1,将目标数据目录存储到多个第一节点中的每个第一节点上,其中,多个第一节点为待创建的第一副本集群中的节点,目标数据目录为第二副本集群的第二节点上为目标数据库所配置的数据目录;

S2,将每个第一节点上的目标数据库表中的集群成员信息修改为与第一副本集群对应的目标集群成员信息,其中,目标数据库表为目标数据目录中的一个数据库表;

S3,控制多个第一节点根据目标集群成员信息建立网络连接,以创建出第一副本集群。

可选地,在本实施例中,上述的通信总线可以是PCI(Peripheral ComponentInterconnect,外设部件互连标准)总线、或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口用于上述电子设备与其他设备之间的通信。

存储器可以包括RAM,也可以包括非易失性存储器(non-volatile memory),例如,至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器的存储装置。

作为一种示例,上述存储器506中可以但不限于包括上述副本集群的创建装置中的第一存储单元402、第一修改单元404以及第一控制单元406。此外,还可以包括但不限于上述副本集群的创建装置中的其他模块单元,本示例中在此不做赘述。

上述处理器可以是通用处理器,可以包含但不限于:CPU(Central ProcessingUnit,中央处理器)、NP(Network Processor,网络处理器)等;还可以是DSP(DigitalSignal Processing,数字信号处理器)、ASIC(Application Specific IntegratedCircuit,专用集成电路)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。

本领域普通技术人员可以理解,图5所示的结构仅为示意,实施上述副本集群的创建方法的设备可以是终端设备,该终端设备可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。图5其并不对上述电子设备的结构造成限定。例如,电子设备还可包括比图5中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图5所示的不同的配置。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、ROM、RAM、磁盘或光盘等。

根据本申请实施例的又一个方面,还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行本申请实施例中上述任一项副本集群的创建方法的程序代码。

可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:

S1,将目标数据目录存储到多个第一节点中的每个第一节点上,其中,多个第一节点为待创建的第一副本集群中的节点,目标数据目录为第二副本集群的第二节点上为目标数据库所配置的数据目录;

S2,将每个第一节点上的目标数据库表中的集群成员信息修改为与第一副本集群对应的目标集群成员信息,其中,目标数据库表为目标数据目录中的一个数据库表;

S3,控制多个第一节点根据目标集群成员信息建立网络连接,以创建出第一副本集群。

可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例中对此不再赘述。

可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、ROM、RAM、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。

在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例中所提供的方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号