分布式数据库扩容方法、分布式数据库系统及计算机可读存储介质与流程

文档序号:23963722发布日期:2021-02-18 20:35阅读:223来源:国知局
分布式数据库扩容方法、分布式数据库系统及计算机可读存储介质与流程

[0001]
本申请涉及通信技术领域,尤其涉及一种分布式数据库扩容方法、分布式数据库系统及计算机可读存储介质。


背景技术:

[0002]
现有分布式数据库扩容方法一般通过如图1-图3所示流程实现。具体地如图1中,分布式数据库中的数据分片通过数据传输工具(例如关系数据库mysql原生复制)汇聚到新建的数据库中间件服务(简称为中间件)dble2,由dble2路由到各新建数据分片所在的节点服务器node中。如图2,需客户端停下应用服务,完成增量数据的同步。如图3中,在完成数据同步后,需切换应用服务到新的数据库中间件dble2及新的分布式数据库上,以删除旧的数据库中间件及分布式数据库。
[0003]
然而在实践中发现,首先现有分布式数据库扩容方案中需停下应用服务,导致应用服务有段时间不可用,停止时间取决于增量数据的大小及同步速度,通常为几分钟到几个小时。这样会影响应用服务的正常使用,影响用户体验。其次扩容期间需额外建立一套完整的数据库中间件及对应的后端节点服务器,扩容后原有的节点服务器及分布式数据库需回收,增加回收工作。再者,难以保证扩容前后分布式数据库中数据的一致性。因此亟需一种便捷地分布式数据库扩容方案。


技术实现要素:

[0004]
本申请实施例提供了一种分布式数据库扩容方法,能解决现有分布式扩容方法中存在的影响应用服务的正常使用、回收扩容后原有的节点服务器及分布式数据库、数据一致性难以保证等问题。
[0005]
第一方面,提供了一种分布式数据库扩容方法,所述分布式数据库包括中间件及其通信连接的若干原有的第一数据分片,每个原有的第一数据分片部署在一个对应的节点服务器中,该分布式数据库扩容方法包括:基于原有的第一数据分片扩容得到第二数据分片,该第二数据分片位于扩容出的新的节点服务器上;基于原有的第一数据分片的数据为第二数据分片创建第二数据分片的主库和从库,并在第二数据分片的主库和从库之间创建主从复制,在所述第一数据分片和所述第二数据分片之间创建异步复制,以将第一数据分片中的待同步数据异步复制于所述第二数据分片中,断开所述第一数据分片和所述第二数据分片之间的异步复制,并调整所述分布式数据库的路由配置信息,使得中间件能分别与第一数据分片和第二数据分片通信连接,以实现第一数据分片和第二数据分片的分别访问。
[0006]
在一些实施例中,所述为所述第二数据分片创建所述第二数据分片的主库和从库的步骤包括:在所述原有的第一数据分片所对应的节点服务器中,对所述原有的第一数据分片的数
据进行全备份;使用所述原有的第一数据分片的备份,为所述第二数据分片创建所述第二数据分片的主库;对所述第二数据分片的主库进行备份,并利用所述第二数据分片的主库的备份,为所述第二数据分片创建所述第二数据分片的从库,且进一步为所述第二数据分片的主库和从库建立半同步复制,作为所述第二数据分片的主库和从库之间的所述主从复制。
[0007]
在一些实施例中,所述第一数据分片和所述第二数据分片之间创建异步复制的步骤包括:通过命令行在所述第一数据分片的从库和所述第二数据分片的主库之间创建异步复制,等待所述待同步数据在所述第一数据分片和所述第二数据分片之间的同步完成。
[0008]
在一些实施例中,所述调整所述分布式数据库的路由配置信息后,所述待同步数据的访问路由从所述第一数据分片调整到所述第二数据分片上。
[0009]
在一些实施例中,在将所述第一数据分片中的待同步数据异步复制于所述第二数据分片中之后,且在断开所述第一数据分片和所述第二数据分片之间的异步复制之前,先断开所述中间件与所述第一数据分片的连接,以停止对所述第一数据分片的写入;所述调整所述分布式数据库的路由配置信息的步骤包括:生成所述第二数据分片的路由配置信息;使用所述中间件的热加载功能,加载所述第二数据分片和所述第一数据分片的路由配置信息,以实现所述中间件能分别与所述第一数据分片和所述第二数据分片通信连接。
[0010]
在一些实施例中,在实现所述中间件能分别与所述第一数据分片和所述第二数据分片通信连接之后,还包括:删除所述第一数据分片中的所述待同步数据,和/或,删除所述第二数据分片中留存于所述第一数据分片上的数据。
[0011]
第二方面,提供了一种分布式数据库系统,包括中间件以及其通信连接的若干原有的第一数据分片,每个原有的第一数据分片部署在一个对应的节点服务器中,所述中间件可执行上述第一方面或第一方面的任意一种可选的实施方式中的方法。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的单元。该单元可以是软件和/或硬件。
[0012]
第三方面,提供了一种中间件,该中间件包括:处理器以及和处理器相连的存储器;其中,该存储器包括计算机可读指令;该处理器用于执行该存储器中的计算机可读指令,从而使得该汽车执行上述第一方面或第一方面的任意一种可选的实施方式中的方案。
[0013]
第四方面,提供了一种计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面或第一方面的任意一种可选的实施方式中的方法。
[0014]
第五方面,提供了一种芯片产品,执行上述第一方面或第一方面的任意一种可选的实施方式中的方法。
[0015]
第六方面,提了供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面或第一方面的任意一种可选的实施方式中的方法。
附图说明
[0016]
图1-图3是现有技术中提供的几种分布式数据库扩容方法涉及的操作示意图。
[0017]
图4是本申请实施例提供的一种分布式数据库扩容方法的流程示意图。
[0018]
图5-图12是本申请实施例提供的几种分布式数据库扩容方法涉及的操作示意图。
[0019]
图13是本申请实施例提供的一种分布式数据库系统的结构示意图。
[0020]
图14是本申请实施例提供的一种中间件的结构示意图。
[0021]
图15是本申请实施例提供的另一种中间件的结构示意图。
具体实施方式
[0022]
下面结合附图对本申请具体实施例作进一步的详细描述。
[0023]
请参见图4,图4是本申请实施例提供的一种分布式数据库扩容方法的流程示意图。该分布式数据库包括中间件及与中间件通信的若干原有的第一数据分片,每个第一数据分片对应部署在一个节点服务器中,如图4所示的分布式数据库扩容方法包括:s101、基于原有的第一数据分片扩容得到第二数据分片,该第二数据分片位于扩容出的新的节点服务器上。
[0024]
本申请中间件基于第一数据分片(例如数据分片a)扩张出新的第二数据分片(例如数据分片b)。该数据分片b和数据分片a对应部署于不同的节点服务器上。
[0025]
s102、基于原有的第一数据分片的数据,为第二数据分片创建第二数据分片的主库和从库,并在第二数据分片的主库和从库之间创建主从复制。
[0026]
在一个示例中,中间件在第一数据分片所在的节点服务器中对原有的第一数据分片的数据进行全备份,使用第一数据分片的备份为第二数据分片创建第二数据分片的主库。具体的,请参见图5所示,中间件对数据分片a的数据进行全备份,创建数据分片b的数据库组,并创建数据分片b的主库m
b
,使得主库的各种信息(例如各种用户名和密码)与数据分片a一致。进而使用数据分片a的备份重置数据分片b的主库m
b
,以保证数据分片b的主库m
b
与数据分片a的备份数据一致。
[0027]
再一个示例中,中间件对第二数据分片的主库进行备份,并利用第二数据分片的主库的备份,为第二数据分片创建第二数据分片的从库,进一步为第二数据分片的主库和从库建立半同步复制,以作为第二数据分片的主库和从库之间的主从复制。具体的,请参见图6所示,中间件需为第二数据分片的主库m
b
创建从库s
b
,具体可对数据分片b的从库进行备份,使用该备份数据创建数据分片b的从库,并为数据分片b建立主从复制,以在主库奔溃或出现问题时,从库能正常提供服务,保证数据不丢失,系统正常运行。
[0028]
s103、在第一数据分片和第二数据分片之间创建异步复制,以将第一数据分片中待同步数据异步复制于第二数据分片中。
[0029]
再一个示例中,中间件通过命令行在第一数据分片的从库和第二数据分片的主库之间创建异步复制,等待增量数据(待同步数据)在第一数据分片和第二数据分片之间的同步完成。请参见图7所示,中间件通过命令行能创建第一数据分片的从库s
a
和第二数据分片的主库m
b
之间的异步复制。
[0030]
s104、断开第一数据分片和第二数据分片之间的异步复制,并调整分布式数据库的路由配置信息,使得中间件能分别与第一数据分片和第二数据分片通信连接,以实现第
一数据分片和第二数据分片的分别访问。
[0031]
再一个示例中,中间件断开第一数据分片和第二数据分片之间的异步复制,并调整分布式数据库的路由配置信息,使得中间件能分别与第一数据分片和第二数据分片通信连接。具体的,请参见图8所示中间件dble能先断开与第一数据分片的连接,以停止对第一数据分片的写入。原有数据分片a和新数据分片b在追击时长内,其数据差异较小(例如小于预设阈值),可暂停原有数据分片a的数据写入,同时相应的应用访问被冻结/挂起,让数据分片a和数据分片b之间的数据彻底追平,有利于保证数据一致性,即数据分片a的主库/从库和数据分片b的主库/从库中的数据一致。
[0032]
请参见图9所示,中间件能在数据分片b的主库m
b
上执行停止异步复制操作,使得数据分片a的从库s
a
与数据分片b的主库m
b
之间的异步复制断开。
[0033]
再一个示例中,中间件能生成第二数据分片的路由配置信息,使用中间件的热加载功能加载第一数据分片和第二数据分片各自的路由配置信息,以恢复流量实现中间件能分别与第一数据分片和第二数据分片通信连接。具体地请参见图10所示,中间件启用新数据分片b的访问,且恢复原数据分片b的访问。中间件按照新数据分片b生成新的路由配置信息,然后使用中间件的热加载功能加载数据分片a和数据分片b各自的路由配置信息,以恢复暂停的流量通信。
[0034]
再一个示例中,中间件还能清理第一数据分片和第二数据分片中不需要的数量,以释放磁盘空间,扩展关系型数据库mysql存储能力上的性能容量。请参见图11所示,中间件能删除第一数据分片中的待同步数据,该待同步数据为第一数据分片中的部分数据。可选地,中间件还能删除第二数据分片中留存于第一数据分片上的数据。
[0035]
可选地参见图12示出一种分布式数据库扩容方法的总操作流程示意图。如图12中,当某些步骤出现错误时还能退回至相应步骤状态。具体的如图12中,箭头“—>”表示往下下一步骤的图示,“<—”表示退回上一步骤的图示。如图12中在步骤ii和步骤iii中如果第二数据分片的主库或从库创建失败,则可退回至步骤i所处状态,现有分布式数据库中仅包括第一数据分片的主库m
a
和从库s
a
。同理,在步骤iv中若第一数据分片的从库s
a
和第二数据分片的主库m
b
之间异步复制创建失败,则可退回至第iii步骤状态分布式数据库中创建有第一数据分片的主从库和第二数据分片的主从库,但此时它们之间并未创建异步复制。
[0036]
在步骤v中若存在一些特殊原因导致分布式数据库与第一数据分片之间的连接断开失败,则分布式数据库此时仍处于步骤iv状态中,分布式数据库与第一数据分片之间仍保持通信连接。若步骤vi和步骤vii中出现异常(例如vi中断开第一数据分片和第二数据分片之间的异步复制失败,或vii中新建中间件与第一数据分片和第二数据分片之间的通信连接失败),则可退回至步骤iii所处状态,此时在分布式数据库中中间件仍与第一数据分片通信连接,分布式数据库中仍存在第一数据分片的主从库和第二数据分片的主从库,以等待新的尝试重建第一数据分片和第二数据分片的异步复制等等。
[0037]
通过实施本申请,基于原有的第一数据分片扩容得到第二数据分片,基于原有的第一数据分片的数据为第二数据分片创建主库和从库,并在第二数据分片的主库和从库之间创建主从复制,在第一数据分片和第二数据分片之间创建异步复制,以将第一数据分片中待同步数据异步复制于第二数据分片中,断开第一数据分片和第二数据分片之间的异步复制,并调整分布式数据库的路由配置信息,使得中间件能分别与第一数据分片与第二数
据分片通信连接,以实现第一数据分片和第二数据分片的分别访问。能够横线扩展系统,使其具有更高的吞吐量,且不需要应用停止服务全过程透明,还能保证扩容前后数据的一致性,且扩容期间不需过量资源的消耗。这样能解决现有分布式数据库扩容方法中存在的影响应用服务的正常使用、回收扩容后原有的节点服务器及分布式数据库、数据一致性难以保证等问题。
[0038]
请参见图13,图13是本申请实施例提供的一种分布式数据库系统400,包括中间件401及与其通信连接的若干原有的第一数据分片402,每个原有的第一数据分片部署在一个对应的节点服务器中。请参见图14示出一种中间件401的结构示意图。如图14所示的中间件401包括:扩容单元4011、第一处理单元4012及第二处理单元4013,其中:扩容单元4011,用于基于所述原有的第一数据分片扩容得到第二数据分片,所述第二数据分片位于扩容出的新的节点服务器上;第一处理单元4012,用于基于所述原有的第一数据分片的数据,为所述第二数据分片创建所述第二数据分片的主库和从库,并在所述第二数据分片的主库和从库之间创建主从复制,在所述第一数据分片和所述第二数据分片之间创建异步复制,以将所述第一数据分片中的待同步数据异步复制于所述第二数据分片中;第二处理单元4013,用于断开所述第一数据分片和所述第二数据分片之间的异步复制,并调整所述分布式数据库的路由配置信息,使得所述中间件能分别与所述第一数据分片和所述第二数据分片通信连接,以实现所述第一数据分片和所述第二数据分片的分别访问。
[0039]
在一些实施例中,第一处理单元4012具体用于:在所述原有的第一数据分片所对应的节点服务器中,对所述原有的第一数据分片的数据进行全备份;使用所述原有的第一数据分片的备份,为所述第二数据分片创建所述第二数据分片的主库;对所述第二数据分片的主库进行备份,并利用所述第二数据分片的主库的备份,为所述第二数据分片创建所述第二数据分片的从库,且进一步为所述第二数据分片的主库和从库建立半同步复制,作为所述第二数据分片的主库和从库之间的所述主从复制。
[0040]
在一些实施例中,所述第一处理单元4012具体用于:通过命令行在所述第一数据分片的从库和所述第二数据分片的主库之间创建异步复制,等待所述待同步数据在所述第一数据分片和所述第二数据分片之间的同步完成。
[0041]
在一些实施例中,所述调整所述分布式数据库的路由配置信息后,所述待同步数据的访问路由从所述第一数据分片调整到所述第二数据分片上。
[0042]
在一些实施例中,所述第一处理单元4012具体用于先断开所述中间件与所述第一数据分片的连接,以停止对所述第一数据分片的写入;所述第二处理单元4013具体用于生成所述第二数据分片的路由配置信息;使用所述中间件的热加载功能,加载所述第二数据分片和所述第一数据分片的路由配置信息,以实现所述中间件能分别与所述第一数据分片和所述第二数据分片通信连接。
[0043]
在一些实施例中,所述第二处理单元4013还用于删除所述第一数据分片中的所述待同步数据,和/或,删除所述第二数据分片中留存于所述第一数据分片上的数据。
[0044]
通过实施本申请,能解决现有分布式数据库扩容方法中存在的影响应用服务的正常使用、回收扩容后原有的节点服务器及分布式数据库、数据一致性难以保证等问题。
[0045]
请参见图15,是本申请实施例提供的另一种中间件的结构示意图。如图15所示的中间件600包括:至少一个输入设备601;至少一个输出设备602;至少一个微控制单元603(也可称为处理器603),例如cpu;和存储器604,上述输入设备601、输出设备602、处理器603和存储器604通过总线605连接。
[0046]
其中,上述输入设备601具体可为移动终端的触控面板,包括触摸屏和触控屏,用于检测终端触控面板上的操作指令。
[0047]
上述输出设备602具体可为移动终端的显示屏,用于输出、显示信息。
[0048]
上述存储器604可以是高速ram存储器,也可为非不稳定的存储器(non-volatile memory),例如磁盘存储器。上述存储器604用于存储一组程序代码,上述输入设备601、输出设备602和处理器603用于调用存储器604中存储的程序代码执行相应操作,其中处理器603具体用于执行如下操作:基于所述原有的第一数据分片扩容得到第二数据分片,所述第二数据分片位于扩容出的新的节点服务器上;基于所述原有的第一数据分片的数据,为所述第二数据分片创建所述第二数据分片的主库和从库,并在所述第二数据分片的主库和从库之间创建主从复制,在所述第一数据分片和所述第二数据分片之间创建异步复制,以将所述第一数据分片中的待同步数据异步复制于所述第二数据分片中;断开所述第一数据分片和所述第二数据分片之间的异步复制,并调整所述分布式数据库的路由配置信息,使得所述中间件能分别与所述第一数据分片和所述第二数据分片通信连接,以实现所述第一数据分片和所述第二数据分片的分别访问。
[0049]
在一些实施例中,处理器603具体用于执行如下操作:在所述原有的第一数据分片所对应的节点服务器中,对所述原有的第一数据分片的数据进行全备份;使用所述原有的第一数据分片的备份,为所述第二数据分片创建所述第二数据分片的主库;对所述第二数据分片的主库进行备份,并利用所述第二数据分片的主库的备份,为所述第二数据分片创建所述第二数据分片的从库,且进一步为所述第二数据分片的主库和从库建立半同步复制,作为所述第二数据分片的主库和从库之间的所述主从复制。
[0050]
在一些实施例中,处理器603具体用于执行如下操作:通过命令行在所述第一数据分片的从库和所述第二数据分片的主库之间创建异步复制,等待所述待同步数据在所述第一数据分片和所述第二数据分片之间的同步完成。
[0051]
在一些实施例中,处理器603具体用于执行如下操作:调整所述分布式数据库的路由配置信息后,所述待同步数据的访问路由从所述第一数据分片调整到所述第二数据分片上。
[0052]
在一些实施例中,处理器603具体用于执行如下操作:在将所述第一数据分片中的待同步数据异步复制于所述第二数据分片中之后,且在断开所述第一数据分片和所述第二数据分片之间的异步复制之前,先断开所述中间件与所述第一数据分片的连接,以停止对
所述第一数据分片的写入;生成所述第二数据分片的路由配置信息;使用所述中间件的热加载功能,加载所述第二数据分片和所述第一数据分片的路由配置信息,以实现所述中间件能分别与所述第一数据分片和所述第二数据分片通信连接。
[0053]
在一些实施例中,处理器603还用于执行如下操作:在实现所述中间件能分别与所述第一数据分片和所述第二数据分片通信连接之后,删除所述第一数据分片中的所述待同步数据,和/或,删除所述第二数据分片中留存于所述第一数据分片上的数据。
[0054]
通过实施本申请,能够横线扩展系统,使其具有更高的吞吐量,且不需要应用停止服务全过程透明,还能保证扩容前后数据的一致性,且扩容期间不需过量资源的消耗。
[0055]
基于同一发明构思,本申请实施例中提供的终端设备解决问题的原理与本申请方法实施例中控制器解决问题的原理相似,因此各设备的实施可以参见方法的实施,为简洁描述,在这里不再赘述。
[0056]
需要说明的是,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其他实施例的相关描述。
[0057]
本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
[0058]
本发明实施例终端设备中的模块可以根据实际需要进行合并、划分和删减。
[0059]
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1