CN118170747A - 数据库的迁移方法、装置和服务器 - Google Patents

数据库的迁移方法、装置和服务器 Download PDF

Info

Publication number
CN118170747A
CN118170747A CN202410291282.9A CN202410291282A CN118170747A CN 118170747 A CN118170747 A CN 118170747A CN 202410291282 A CN202410291282 A CN 202410291282A CN 118170747 A CN118170747 A CN 118170747A
Authority
CN
China
Prior art keywords
database
data
migration
module
service data
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.)
Pending
Application number
CN202410291282.9A
Other languages
English (en)
Inventor
杨佳铭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Industrial and Commercial Bank of China Ltd ICBC
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Industrial and Commercial Bank of China Ltd ICBC filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN202410291282.9A priority Critical patent/CN118170747A/zh
Publication of CN118170747A publication Critical patent/CN118170747A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本说明书提供了数据库的迁移方法、装置和服务器,可用于金融领域。基于该方法,在需要迁移第一数据库时,可以先创建空的第二数据库;并部署相应的数据库迁移***。具体进行数据库迁移时,可以先利用该数据库迁移***建立连接有数据缓存模块的数据迁移通道和指令传输通道;再根据预设的迁移规则,利用该数据库迁移***基于上述数据迁移通道和指令传输通道,将业务数据经数据缓存模块以数据队列的形式从第一数据库迁移并存入第二数据库中;同时,还可以通过指令传输通道对迁移并存入第二数据库中的业务数据进行数据核对。从而能够以较低的处理成本,在用户无感知的情况下,高效、准确地实现数据库的不停机迁移,避免对用户正常使用造成影响。

Description

数据库的迁移方法、装置和服务器
技术领域
本说明书属于数据库技术领域,尤其涉及数据库的迁移方法、装置和服务器。
背景技术
在金融业务场景中,随着金融交易平台业务的发展、规模的增大,平台原有的数据库已无法满足现有的业务需求,这时需要对平台原有的数据库进行迁移升级。
但是,基于现有的数据库的迁移方法,迁移成本通常相对较高;并且,迁移过程往往还会涉及到平台应用层,进而会对用户基于平台的正常使用产生影响,降低用户的服务体验。
针对上述问题,目前尚未提出有效的解决方案。
发明内容
本说明书提供了一种数据库的迁移方法、装置和服务器,能够以较低的处理成本,在用户无感知的情况下,高效、准确地实现数据库的不停机迁移。
本说明书提供了一种数据库的迁移方法,包括:
响应关于第一数据库的迁移请求,创建第二数据库;并部署关于第一数据库和第二数据库的数据库迁移***;
利用数据库迁移***在第一数据库与第二数据库之间建立数据迁移通道和指令传输通道;其中,所述数据迁移通道还连接有数据缓存模块;
根据预设的迁移规则,利用数据库迁移***通过数据迁移通道,将第一数据库中的业务数据迁移至数据缓存模块;并根据业务数据的属性信息,将迁移至数据缓存模块中的业务数据保存成相应的数据队列;
利用数据库迁移***读取数据缓存模块中的数据队列;并通过数据迁移通道,将该数据队列中的业务数据迁移并存入第二数据库中;
利用数据库迁移***通过指令传输通道与第一数据库进行指令交互,对迁移并存入第二数据库中的业务数据进行数据核对;
在确定第一数据库中的业务数据迁移完毕,且迁移并存入第二数据库中的业务数据核对通过的情况下,结束数据库的迁移处理;并切换使用第二数据库。
在一个实施例中,所述数据库迁移***至少包括数据库接入模块;相应的,利用数据库迁移***在第一数据库与第二数据库之间建立数据迁移通道和指令传输通道,包括:
利用数据库迁移***的数据库接入模块获取第一数据库的版本信息和类型信息,以及第二数据库的版本信息和类型信息;
根据第一数据库的版本信息和类型信息,以及第二数据库的版本信息和类型信息,确定出相匹配的数据接口;
利用所述相匹配的数据接口在第一数据库与第二数据库之间建立相应的数据迁移通道和指令传输通道。
在一个实施例中,所述数据库迁移***还包括数据解析模块;相应的,利用数据库迁移***读取数据缓存模块中的数据队列,包括:
利用数据库迁移***的数据解析模块读取数据缓存模块中当前数据队列中的业务数据,获取与该业务数据对应的关键字段;
将该业务数据解析转换为与第二数据库相匹配的转换后的业务数据;
组合关键字段、转换后的业务数据,得到与该业务数据相对应的组合数据。
在一个实施例中,通过数据迁移通道,将该数据队列中的业务数据迁移并存入第二数据库中,包括:
根据所述组合数据,通过数据迁移通道,将该数据队列中相对应的业务数据迁移并存入第二数据库相对应的库表区域中。
在一个实施例中,所述数据库迁移***还包括路由策略模块和数据处理模块;相应的,根据所述组合数据,通过数据迁移通道,将该数据队列中相对应的业务数据迁移并存入第二数据库相对应的库表区域中,包括:
利用数据库迁移***的路由策略模块根据组合数据中的关键字段,确定出相对应的基于第二数据库的落库信息;
利用路由策略模块根据落库信息标记组合数据中的变换后的业务数据,得到标记后的业务数据;
利用数据处理模块通过数据迁移通道,将标记后的业务数据迁移并存入第二数据库相对应的库表区域中。
在一个实施例中,所述关键字段包括分库分表字段;其中,所述关键字段按照以下方式生成:确定业务数据的业务类型;根据业务数据的业务类型,从预设的规则模板中确定出相匹配的目标规则模板;根据目标规则模板,从业务数据中提取出特征字段;根据特征字段确定出相应的分库分表字段,作为所述关键字段。
在一个实施例中,所述数据迁移通道包括多个数据迁移通道;所述数据队列包括多个数据队列;
相应的,通过数据迁移通道,将该数据队列中的业务数据迁移并存入第二数据库中,包括:
通过多个数据迁移通道,以异步任务的方式,将多个数据队列分别迁移并存入第二数据库中。
在一个实施例中,所述数据库迁移***还包括数据核对模块和指令发送模块;相应的,利用数据库迁移***通过指令传输通道与第一数据库进行指令交互,对迁移并存入第二数据库中的业务数据进行数据核对,包括:
利用数据库迁移***的数据核对模块监测第二数据库;
在监测第二数据库中存入新增的数据队列时,生成关于该新增的数据队列的第一核对查询指令;
利用指令发送模块通过指令传输通道将所述第一核对查询指令发送至第一数据库;并接收第一数据库反馈的第一查询结果数据;
利用数据核对模块根据第一查询结果数据,对该新增的数据队列进行数据核对。
在一个实施例中,在利用数据核对模块根据第一查询结果数据,对该新增的数据队列进行数据核对之后,所述方法还包括:
在确定新增的数据队列中的业务数据核对未通过的情况下,将该新增的数据队列确定为错误数据队列;
生成关于该错误数据队列的重置指令;利用指令发送模块通过指令传输通道将该重置指令发送至第一数据库;
接收第一数据库通过数据迁移通道反馈的针对该错误数据队列的重置业务数据;并根据该重置业务数据重置存储于第二数据库中的错误数据队列中的业务数据的数据值。
在一个实施例中,利用数据库迁移***通过指令传输通道与第一数据库进行指令交互,对迁移并存入第二数据库中的业务数据进行数据核对,还包括:
利用数据库迁移***的数据核对模块监测第二数据库;
在监测到第一数据库中的业务数据迁移完毕时,生成关于第二数据库中的业务数据的第二核对查询指令;
利用指令发送模块通过指令传输通道将所述第二核对查询指令发送至第一数据库;并接收第一数据库反馈的第二查询结果数据;
利用数据核对模块根据第二查询结果数据,对第二数据库中的业务数据进行数据核对。
在一个实施例中,在利用数据库迁移***在第一数据库与第二数据库之间建立数据迁移通道和指令传输通道之后,所述方法还包括:
确定数据迁移通道和指令传输通道的建立时间作为第一时间点,并在第一数据库中确定出存入时间在第一时间点之前的第一批业务数据;
根据预设的迁移规则,利用数据库迁移***通过数据迁移通道,将第一数据库中的第一批业务数据迁移至数据缓存模块;并通过数据迁移通道,将第一批业务数据以数据队列的形式迁移并存入第二数据库中;
确定第一批业务数据迁移并存入第二数据库中的存入时间,作为第二时间点;
在第一数据库中确定出存入时间在第一时间点之后,第二时间点之前的第二批业务数据;
根据预设的迁移规则,利用数据库迁移***通过数据迁移通道,将第一数据库中的第二批业务数据迁移并存入第二数据库中;
在确定第二批业务数据迁移并存入第二数据库中时,确定第一数据库中的业务数据迁移完毕。
在一个实施例中,在确定第一数据库中的业务数据迁移完毕,且迁移并存入第二数据库中的业务数据核对通过的情况下,所述方法还包括:
生成关于第二数据库的测试指令;
响应所述测试指令,在测试时间段通过同时运行第一数据库和第二数据库,得到相应的测试结果;
根据测试结果,确定第二数据库是否符合预设要求;
在确定所述第二数据库符合预设要求的情况下,切换使用第二数据库。
本说明书还提供了一种数据库的迁移装置,包括:
创建部署模块,用于响应关于第一数据库的迁移请求,创建第二数据库;并部署关于第一数据库和第二数据库的数据库迁移***;
建立模块,用于利用数据库迁移***在第一数据库与第二数据库之间建立数据迁移通道和指令传输通道;其中,所述数据迁移通道还连接有数据缓存模块;
第一迁移模块,用于根据预设的迁移规则,利用数据库迁移***通过数据迁移通道,将第一数据库中的业务数据迁移至数据缓存模块;并根据业务数据的属性信息,将迁移至数据缓存模块中的业务数据保存成相应的数据队列;
第二迁移模块,用于利用数据库迁移***读取数据缓存模块中的数据队列;并通过数据迁移通道,将该数据队列中的业务数据迁移并存入第二数据库中;
核对模块,用于利用数据库迁移***通过指令传输通道与第一数据库进行指令交互,对迁移并存入第二数据库中的业务数据进行数据核对;
切换模块,用于在确定第一数据库中的业务数据迁移完毕,且迁移并存入第二数据库中的业务数据核对通过的情况下,结束数据库的迁移处理;并切换使用第二数据库。
本说明书还提供了一种服务器,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现所述数据库的迁移方法的相关步骤。
本说明书还提供了一种计算机可读存储介质,其上存储有计算机指令,所述指令被处理器执行时实现所述数据库的迁移方法的相关步骤。
基于本说明书提供的数据库的迁移方法、装置和服务器,在需要迁移第一数据库时,可以先创建空的第二数据库;并部署相应的数据库迁移***。具体进行数据库迁移时,可以先利用该数据库迁移***建立相互独立的指令传输通道,以及连接有数据缓存模块的数据迁移通道;再根据预设的迁移规则,先通过数据迁移通道将第一数据库中的业务数据迁移至数据缓存模块,划分并保存为相对应的数据队列;再以数据队列为处理单位,通过数据迁移通道将数据队列中的业务数据迁移并存入第二数据库中;同时,通过指令传输通道与第一数据库进行指令交互,对迁移并存入第二数据库中的业务数据进行数据核对;在确定第一数据库中的业务数据迁移完毕,且迁移并存入第二数据库中的业务数据核对通过的情况下,结束数据库的迁移处理;并切换使用第二数据库。从而能够以较低的处理成本,无需涉及平台应用层,在用户无感知的情况下,就可以高效、准确地实现数据库的不停机迁移,避免对用户正常使用造成影响,使得用户能够获得较好的服务体验。
附图说明
为了更清楚地说明本说明书实施例,下面将对实施例中所需要使用的附图作简单地介绍,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本说明书的一个实施例提供的数据库的迁移方法的流程示意图;
图2是在一个场景示例中,应用本说明书实施例提供的数据库的迁移方法的一种实施例的示意图;
图3是基于本说明书实施例提供的数据库的迁移方法的构建的数据库迁移***的结构组成的一个实施例示意图;
图4是在一个场景示例中,应用本说明书实施例提供的数据库的迁移方法的一种实施例的示意图;
图5是在一个场景示例中,应用本说明书实施例提供的数据库的迁移方法的一种实施例的示意图;
图6是在一个场景示例中,应用本说明书实施例提供的数据库的迁移方法的一种实施例的示意图;
图7是在一个场景示例中,应用本说明书实施例提供的数据库的迁移方法的一种实施例的示意图;
图8是在一个场景示例中,应用本说明书实施例提供的数据库的迁移方法的一种实施例的示意图;
图9是在一个场景示例中,应用本说明书实施例提供的数据库的迁移方法的一种实施例的示意图;
图10是本说明书的一个实施例提供的服务器的结构组成示意图;
图11是本说明书的一个实施例提供的数据库的迁移装置的结构组成示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
参阅图1所示,本说明书实施例提供了一种数据库的迁移方法,其中,该方法具体应用于服务器一侧。具体实施时,该方法可以包括以下内容:
S101:响应关于第一数据库的迁移请求,创建第二数据库;并部署关于第一数据库和第二数据库的数据库迁移***;
S102:利用数据库迁移***在第一数据库与第二数据库之间建立数据迁移通道和指令传输通道;其中,所述数据迁移通道还连接有数据缓存模块;
S103:根据预设的迁移规则,利用数据库迁移***通过数据迁移通道,将第一数据库中的业务数据迁移至数据缓存模块;并根据业务数据的属性信息,将迁移至数据缓存模块中的业务数据保存成相应的数据队列;
S104:利用数据库迁移***读取数据缓存模块中的数据队列;并通过数据迁移通道,将该数据队列中的业务数据迁移并存入第二数据库中;
S105:利用数据库迁移***通过指令传输通道与第一数据库进行指令交互,对迁移并存入第二数据库中的业务数据进行数据核对;
S106:在确定第一数据库中的业务数据迁移完毕,且迁移并存入第二数据库中的业务数据核对通过的情况下,结束数据库的迁移处理;并切换使用第二数据库。
其中,上述第一数据库具体可以理解为当前在使用,待迁移的数据库,也可以称为主数据库。上述第一数据库可以存储有交易平台的多个业务数据。
具体实施时,需要使用上述第一数据库来进行基于交易平台的交易数据处理(例如,转账交易数据处理、汇款交易数据处理等)。
上述第二数据库具体可以理解为第一数据库将迁移到的新的数据库,也可以成为从数据库。其中,第一数据库和第二数据库的数据库类型、版本号可以相同,也可以不同。
基于上述实施例,可以利用数据库迁移***分别建立单独的数据迁移通道和指令传输通道;再根据预设的迁移规则,综合利用该数据库迁移***基于上述数据迁移通道和指令传输通道,将业务数据经数据缓存模块以数据队列的形式从第一数据库迁移并存入第二数据库中;同时,还可以对迁移并存入第二数据库中的业务数据及时自动进行数据核对。从而能够以较低的处理成本,在用户无感知的情况下,高效、准确地实现数据库的不停机迁移,避免数据库迁移对用户正常使用造成影响。
在一些实施例中,具体可以参阅图2所示,上述数据库的迁移方法具体可以应用于服务器一侧。
其中,上述服务器具体可以包括一种应用于交易平台一侧,能够实现基于该交易平台的交易数据传输、交易数据处理等功能的后台服务器。具体的,所述服务器例如可以为一个具有数据运算、存储功能以及网络交互功能的电子设备。或者,所述服务器也可以为运行于该电子设备中,为数据处理、存储和网络交互提供支持的软件程序。在本实施例中,并不具体限定所述服务器的数量。所述服务器具体可以为一个服务器,也可以为几个服务器,或者,由若干服务器形成的服务器集群。
具体的,当用户(例如,交易平台的技术人员)想要对该交易平台的某个交易数据库(记为第一数据库)进行数据库迁移时,可以通过用户终端向服务器发送关于该第一数据库的迁移请求。
其中,上述用户终端具体可以包括一种应用于用户一侧,能够实现数据采集、数据传输等功能的前端。具体的,所述用户终端例如可以为台式电脑、平板电脑、笔记本电脑、手机、网络电视等电子设备。或者,所述用户终端也可以为能够运行于上述电子设备中的软件应用。
服务器在接收到上述迁移请求后,可以相应该迁移请求,按照本说明书提供的数据库的迁移方法,创建空白的第二数据库,并部署相应的数据库迁移***;再利用上述数据库迁移***高效、准确地将第一数据库中存储的业务数据经数据缓存模块以数据队列的形式迁移并存入至第二数据库中,从而实现第一数据库的迁移。
在一些实施例中,上述迁移请求至少可以携带有第一数据库的数据库标识。其中,上述第一数据库的数据库标识具体可以包括:第一数据库的编号、第一数据库的名称、第一数据库的存储地址等。
相应的,服务器可以根据迁移请求所携带的第一数据库的数据库标识,确定出待迁移的数据库,作为上述第一数据库。
进一步,上述迁移请求还可以携带有用户设置的自定义迁移参数。相应的,具体实施时,服务器可以根据第一数据库的属性参数(例如,第一数据库的数据库规模、第一数据库的数据库类型等),结合用户设置的自定义迁移参数(例如,用户设置的第二数据库的数据库类型范围参数、第二数据库的存储介质的地址参数、第二数据库的分库分表规则等),新建一个与第一数据库相匹配,且满足用户的迁移要求的空数据库,作为第二数据库。
在一些实施例中,在创建第二数据库之后,进一步可以部署一个关于第一数据库和第二数据库的数据库迁移***。使用上述数据库迁移***连接第一数据库和第二数据库,再利用上述数据库迁移***在第一数据库和第二数据库之间分别建立相互独立的数据迁移通道和指令传输通道。
其中,上述数据库迁移***具体可以理解为一种协助自动完成数据库迁移的插件。具体的,上述数据库迁移***至少可以包括数据缓存模块。
进一步,参阅图3所示,上述数据库迁移***还可以包括数据库接入模块、数据解析模块、路由策略模块、数据处理模块、数据核对模块,以及指令发送模块。
此外,上述数据库迁移***还可以包括监控报警模块等。
其中,上述数据库接入模块用于适配和对接第一数据库和第二数据库,并建立两者之间的数据连接(例如,数据迁移通道和指令传输通道)。
上述数据缓存模块用于缓存从第一数据库中迁移出来的业务数据。
上述数据解析模块用于通过对数据缓存模块中的业务数据进行解析处理,将原始的业务数据转换成第二数据库相匹配、可执行的转换后的业务数据;以及,从原始的业务数据中提取出对应第二数据库的与分库分表相关的关键字段。
上述路由策略模块用于根据业务数据的关键字段,确定出与该业务数据基于第二数据库的库表的落库信息,并利用上述落库信息对该业务数据进行标记。
上述数据处理模块用于根据业务数据所标记的落库信息,将该业务数据迁移并存入第二数据库相对应的库表区域中。
上述指令发送模块用于实现第一数据库和第二数据库之间的相关指令交互。
上述监控报警模块用于监测数据库的迁移过程,并在迁移过程发现异常时,发出相应的异常报警提示。
在一些实施例中,所述数据库迁移***至少可以包括数据库接入模块;相应的,参阅图4和图5所示,上述利用数据库迁移***在第一数据库与第二数据库之间建立数据迁移通道和指令传输通道,具体实施时,可以包括以下内容:
S1:利用数据库迁移***的数据库接入模块获取第一数据库的版本信息和类型信息,以及第二数据库的版本信息和类型信息;
S2:根据第一数据库的版本信息和类型信息,以及第二数据库的版本信息和类型信息,确定出相匹配的数据接口;
S3:利用所述相匹配的数据接口在第一数据库与第二数据库之间建立相应的数据迁移通道和指令传输通道。
基于上述实施例,可以利用数据库迁移***的数据库接入模块根据第一数据库的版本信息和类型,以及第二数据库的版本信息和类型信息,准确地自动建立相匹配的数据迁移通道和指令传输通道。
在一些实施例中,上述数据库的类型信息具体可以包括oracle数据库、mysql数据库、redis数据库等不同的数据库类型。
相应的,具体实施时,可以利用数据库接入模块根据第一数据库的版本信息和类型,以及第二数据库的版本信息和类型信息,调用相匹配的驱动程序,利用所确定出相匹配的数据接口,构建得到能够同时适配第一数据库和第二数据库的数据迁移通道和指令传输通道。
其中,上述数据迁移通道用于独立传输待迁移的第一数据库中的业务数据。并且,上述数据迁移通道还连接有数据缓存模块。
上述指令传输通道用于独立传输第一数据库与第二数据库之间的交互指令。
这样,可以分别利用上述数据迁移通道和指令传输通道,互不干扰地独立传输相关的业务数据和交互指令,能够将数据迁移流程和指令交互流程分离,进而可以独立地实现数据迁移和指令交互。
进一步,上述数据迁移通道和指令传输通道具体可以是基于相应的加密算法加密保护后的连接通道。这样,可以有效避免数据迁移通道、指令传输通道中传输的数据遭到窃取,保护数据库的数据安全。
在一些实施例中,在根据预设的迁移规则,利用数据库迁移***通过数据迁移通道,将第一数据库中的业务数据迁移至数据缓存模块之后,可以获取并根据业务数据的属性信息,在数据缓存模块中将业务数据划分并保存成相应的数据队列。数据缓存模块中可以同时保存有多个不同的数据队列。
其中,上述属性信息具体可以包括以下所列举的至少一种:时间信息、区域信息、接入端口信息、业务标识、执行主体的主体标识等。通常属于相同类型的属性的业务数据会被存储到数据库的同一个库表区域中,以便与后续的查询、读取等操作。例如,在一些情况下,时间信息属于同一个时间段的业务数据会被统一存储到数据库的同一个数据表里。
具体实施时,可以根据业务数据的属性信息,将属于相同类型的属性的业务数据划分到一个数据队列进行保存。相应的,后续可以以数据队列为基本处理单位,对属于相同类的属性的业务数据整体进行迁移等处理。
具体的,例如,可以利用数据库迁移***每次读取数据缓存模块中的一个数据队列;并通过数据迁移通道将一个数据队列中的业务数据迁移并存入到第二数据库中。
在一些实施例中,所述数据库迁移***还可以包括数据解析模块;相应的,上述利用数据库迁移***读取数据缓存模块中的数据队列,具体实施时,可以包括以下内容:
S1:利用数据库迁移***的数据解析模块读取数据缓存模块中当前数据队列中的业务数据,获取与该业务数据对应的关键字段;
S2:将该业务数据解析转换为与第二数据库相匹配的转换后的业务数据;
S3:组合关键字段、转换后的业务数据,得到与该业务数据相对应的组合数据。
基于上述实施例,可以利用数据解析模块自动处理迁移至数据缓存模块中的业务数据,提取得到对应第二数据库的与分库分表相关的关键字段;同时,还可以将原始的业务数据转换为第二数据库能够读取、执行的相匹配的转换后的业务数据。
在一些实施例中,上述关键字段具体可以包括业务数据的分库分表字段。其中,所述关键字段具体可以按照以下方式生成:确定业务数据的业务类型;根据业务数据的业务类型,从预设的规则模板中确定出相匹配的目标规则模板;根据目标规则模板,从业务数据中提取出特征字段;根据特征字段确定出相应的分库分表字段,作为所述关键字段。
具体实施时,可以利用数据解析模块处理业务数据,识别出该业务数据所对应的业务类型(例如,转账业务、注册业务,或者结算业务等);再根据业务类型,从预设的规则模板中确定出相匹配的目标规则模板;其中,预设的规则模板至少对应一种业务类型,包含有所对应的类型业务下不同细分业务数据的存储规则。上述预设的规则模板具体可以是预先获取并利用大量不同类型业务的业务数据的数据库存储方式记录,通过聚类处理所整理得到的。
具体实施时,可以根据目标规则模板,确定出与该业务数据对应的细分业务数据的存储规则;再根据该存储规则,从该业务数据中提取出相应的特征字段(例如,身份证字段、账户名字段,或者手机号码字段等);在根据与该业务数据对应的细分业务数据的存储规则,利用上述特征字段确定出相应的分库分表字段,作为所述关键字段。例如,可以从身份证字段中提取出前六位字段(或者前两位字段);再基于上述后六位字段的数据值通过映射处理,形成得到对应的分库分表字段。
具体的,例如,可以根据数据资产管理***提取到表归属的业务领域信息,再结合目标规则模板,确定出与该业务数据对应的细分业务数据的存储规则。
此外,上述用户设置的自定义迁移参数还可以包括:第二数据库的分库分表规则,或分库分表指示信息。相应的,可以根据上述分库分表指示信息直接生成对应的分库分表字段;或者,根据第二数据库的分库分表规则处理该业务数据,以生成对应的分库分表字段。
基于上述实施例,可以利用数据解析模块自动高效地生成与业务数据对应的关键字段。
在一些实施例中,上述将该数据队列中的业务数据迁移并存入第二数据库中,具体实施时,可以包括:根据所述组合数据,通过数据迁移通道,将该数据队列中相对应的业务数据迁移并存入第二数据库相对应的库表区域中。
基于上述实施例,可以根据组合数据,通过数据迁移通道,较为快速、准确地将该数据队列中的业务数据迁移并存入第二数据库合适的位置区域中。
在一些实施例中,所述数据库迁移***还可以包括路由策略模块和数据处理模块;相应的,参阅图6所示,上述根据所述组合数据,通过数据迁移通道,将该数据队列中相对应的业务数据迁移并存入第二数据库相对应的库表区域中,具体实施时,可以包括以下内容:
S1:利用数据库迁移***的路由策略模块根据组合数据中的关键字段,确定出相对应的基于第二数据库的落库信息;
S2:利用路由策略模块根据落库信息标记组合数据中的变换后的业务数据,得到标记后的业务数据;
S3:利用数据处理模块通过数据迁移通道,将标记后的业务数据迁移并存入第二数据库相对应的库表区域中。
具体的,上述路由策略模块还可以与第二数据库相连,相应的,路由策略模块可以获取第二数据库诸如分库分表等属性信息。此外,上述路由策略模块还配置有预设的路由策略。
相应的,具体实施时,可以利用路由策略模块根据组合数据中的关键字段,结合当前第二数据库的属性信息,确定出与该业务数据所属的数据队列相匹配,且与该业务数据相对应的落库信息。其中,上述落库信息可以用于指示第二数据库中存储该业务数据的位置信息。
具体实施时,上述路由策略模块可以根据业务数据的落库信息,生成对应的落库标记;并将该落库标记添加到业务数据中,得到标记后的业务数据。
基于上述实施例,可以先利用路由策略模块准确地确定并根据数据队列中各个业务数据的落库信息,对各个业务数据进行相应的标记;再利用数据处理模块通过数据迁移通道,根据标记信息,将该数据队列中的各个业务数据以较为合理的方式,准确地存入第二数据库中。这样,一方面可以充分利用第二数据库的存储资源,另一方面也便于后续执行基于第二数据库的业务数据的查询、读写等操作。
在一些实施例中,所述数据迁移通道具体可以包括多个数据迁移通道;所述数据队列具体可以包括多个数据队列;
相应的,上述通过数据迁移通道,将该数据队列中的业务数据迁移并存入第二数据库中,具体可以包括:通过多个数据迁移通道,以异步任务的方式,将多个数据队列分别迁移并存入第二数据库中。
具体实施时,当第一数据库规模较大,存储的业务数据的数据量较多时,可以利用数据库迁移***的数据库对接模块同时建立多个相互独立的数据迁移通道。相应的,在数据缓存模块中可以根据业务数据的属性信息,将业务数据划分保存成多个独立的数据队列。
进而具体实施时,可以利用数据处理模块同时使用多个数据迁移通道,以异步任务的方式,将多个数据队列以并行的方式迁移并存入第二数据库中。
基于上述实施了,可以利用多个数据迁移通道采用异步任务的方式,高效地将多个数据队列中的业务数据同步迁移并存入第二数据库中,提高整体的处理效率。
在一些实施例中,所述数据库迁移***具体还可以包括数据核对模块和指令发送模块;相应的,参阅图7所示,上述利用数据库迁移***通过指令传输通道与第一数据库进行指令交互,对迁移并存入第二数据库中的业务数据进行数据核对,具体实施时,包括以下内容:
S1:利用数据库迁移***的数据核对模块监测第二数据库;
S2:在监测第二数据库中存入新增的数据队列时,生成关于该新增的数据队列的第一核对查询指令;
S3:利用指令发送模块通过指令传输通道将所述第一核对查询指令发送至第一数据库;并接收第一数据库反馈的第一查询结果数据;
S4:利用数据核对模块根据第一查询结果数据,对该新增的数据队列进行数据核对。
基于上述实施例,利用数据库迁移***在每次向第二数据迁移并存入一个新增的数据队列时,可以及时通过指令传输通道与第一数据库交互,对该新增的数据队列同步进行对应的数据核对,以确保每次迁移并存入第二数据库中的新增的数据队列准确、可靠,从而能够有效地减少迁移误差。
在一些实施例中,上述第一核对查询指令具体可以包含有新增的数据队列中的各个业务数据的键值(例如,key值)。相应的,上述第一查询结果数据具体可以包含有与上述新增的数据队列中的各个业务数据的键值对应的数据值(例如,value值)。
具体利用数据核对模块根据第一查询结果数据,对该新增的数据队列进行数据核对时,可以根据存入第二数据库的新增的数据队列和第一查询结果数据,将相同键值所对应的数据值进行数值比较,如果确定新增的数据队列中的各个业务数据的数据值都与第一查询结果数据中相对应的数据值相同时,可以确定该新增的数据队列数据核对通过。如果确定新增的数据队列中至少存在一个业务数据的数据值与第一查询结果数据中相对应的数据值不同时,可以确定该新增的数据队列数据核对未通过。
在一些实施例中,在利用数据核对模块根据第一查询结果数据,对该新增的数据队列进行数据核对之后,所述方法具体实施时,还可以包括以下内容:
S1:在确定新增的数据队列中的业务数据核对未通过的情况下,将该新增的数据队列确定为错误数据队列;
S2:生成关于该错误数据队列的重置指令;利用指令发送模块通过指令传输通道将该重置指令发送至第一数据库;
S3:接收第一数据库通过数据迁移通道反馈的针对该错误数据队列的重置业务数据;并根据该重置业务数据重置存储于第二数据库中的错误数据队列中的业务数据的数据值。
基于上述实施例,在确定新增的数据队列中的业务数据核对未通过的情况下,可以通过指令发送通道与第一数据库交互,以及时对错误数据队列进行整体的覆盖重置,以确保存入第二数据库中的各个数据队列的业务数据准确、可靠。
在一些实施例中,参阅图8所示,上述利用数据库迁移***通过指令传输通道与第一数据库进行指令交互,对迁移并存入第二数据库中的业务数据进行数据核对,具体实施时,还可以包括以下内容:
S1:利用数据库迁移***的数据核对模块监测第二数据库;
S2:在监测到第一数据库中的业务数据迁移完毕时,生成关于第二数据库中的业务数据的第二核对查询指令;
S3:利用指令发送模块通过指令传输通道将所述第二核对查询指令发送至第一数据库;并接收第一数据库反馈的第二查询结果数据;
S4:利用数据核对模块根据第二查询结果数据,对第二数据库中的业务数据进行数据核对。
基于上述实施例,可以在监测到第一数据库中的业务数据迁移完毕时,再通过指令传输通道与第一数据库交互,以对迁移并存入第二数据库中的业务数据整体进行统一、全面的数据核对,以确保第二数据库中最终保存下的业务数据准确、可靠。
在一些实施例中,在利用数据库迁移***在第一数据库与第二数据库之间建立数据迁移通道和指令传输通道之后,参阅图9所示,所述方法具体实施时,还可以包括以下内容:
S1:确定数据迁移通道和指令传输通道的建立时间作为第一时间点,并在第一数据库中确定出存入时间在第一时间点之前的第一批业务数据;
S2:根据预设的迁移规则,利用数据库迁移***通过数据迁移通道,将第一数据库中的第一批业务数据迁移至数据缓存模块;并通过数据迁移通道,将第一批业务数据以数据队列的形式迁移并存入第二数据库中;
S3:确定第一批业务数据迁移并存入第二数据库中的存入时间,作为第二时间点;
S4:在第一数据库中确定出存入时间在第一时间点之后,第二时间点之前的第二批业务数据;
S5:根据预设的迁移规则,利用数据库迁移***通过数据迁移通道,将第一数据库中的第二批业务数据迁移并存入第二数据库中;
S6:在确定第二批业务数据迁移并存入第二数据库中时,确定第一数据库中的业务数据迁移完毕。
其中,上述第一批业务数据具体可以包括第一数据库在第一时间点之前长期积累的全量业务数据。这类业务数据,数据量相对较大,迁移耗时相对较长。
上述第二批业务数据具体可以包括在不停机迁移第一批业务数据的过程中(即,第一时间点之后,第二时间点之前的时间段)第一数据库新增加的部分增量业务数据。这类业务数据,数据量相对较小,迁移耗时相对较短。
具体实施时,由于第一批业务数据的数据量相对较大,导致第一批业务数据的迁移过程的时长较长;又由于是不停机迁移,相应的,导致第一数据库在第一批业务数据的迁移过程中很有可能会出现增量业务数据。因此,在完成第一批业务数据的迁移后,至少需要再进行第二批业务数据的迁移,才能确保第一数据库迁移完毕。
具体实施时,由于第一批业务数据的数据量相对较大,导致I/O响应压力较大,为了提高整体的迁移效率,需要先通过数据迁移通道,将第一批业务数据迁移并存入数据缓存模块,并在数据缓存模块中奖第一批业务数据划分并保存为多个数据队列;再通过数据迁移通道,以异步任务的方式,将各个数据队列迁移并保存到第二数据库中。从而可以避免由于数据量庞大,导致数据库I/O响应缓慢,使得整体的数据迁移效率低下的问题,能够高效地实现第一批业务数据的迁移。
由于第二批业务数据的数据量相对较小,I/O响应压力较小,这时可以将上述第二批业务数据解析转换为与第二数据库相匹配的转换后的业务数据之后,通过数据迁移通道,不存入数据缓存模块,直接迁移存入第二数据库中。从而可以高效地实现第二业务数据的迁移。
通常由于第二批业务数据的数据量相对较小,第二批业务数据的迁移耗时相对较短,例如,可能只有1分钟。相应的,在迁移第二批业务数据的过程中相对很小概率会出现新的增量业务数据。因此,当确定第二批业务数据迁移并存入第二数据库时,可以确定第一数据库中的业务数据迁移完毕。
具体实施时,当在第一数据库中确定出存入时间在第一时间点之前的第一批业务数据时,可以通过数据库迁移***生成关于第一批业务数据的第一迁移指令,并通过指令传输通道将上述第一迁移指令传输至第一数据库、第二数据库,进而可以基于第一迁移指令,利用数据迁移通道,以数据缓存模块完成第一批业务数据的迁移。
当确定第一批业务数据迁移并存入第二数据库中时,可以通过数据库迁移***生成关于第二批业务数据的第二迁移指令,并通过指令传输通道将上述第二迁移指令传输至第一数据库、第二数据库,进而可以基于第二迁移指令,利用数据迁移通道,以数据缓存模块完成第二批业务数据的迁移。
基于上述实施例,通过区分第一批业务数据、第二批业务数据,并采用差异化的方式,依次对第一批业务数据、第二批业务数据进行针对性的迁移处理,从而能够较为高效、可靠地完成第一数据库中的业务数据的不停机迁移,避免迁移时出现数据遗漏。
在一些实施例中,在确定第二批业务数据迁移并存入第二数据库中时,还可以利用数据库迁移***生成日志获取指令,并通过指令传输通道将该日志获取指令发送至第一数据库,以获取第一数据库当前的数据库日志。进而,可以根据当前的数据库日志,核验存入第二数据库中的第二批业务数据,以确定在迁移第二批业务数据的迁移过程中第一数据库是否出现新的增量业务数据。在确定上述迁移过程中未出现新的增量业务数据的情况下,可以确定第一数据库中的业务数据迁移完毕。
相反,在确定上述迁移过程中出现新的增量业务数据的情况下,可以根据当前的数据库日志,确定出第三批业务数据,再根据预设的迁移规则,利用数据库迁移***通过数据迁移通道,将第一数据库中的第三批业务数据迁移并存入第二数据库中;在确定第三批业务数据迁移并存入第二数据库中时,可以最终确定第一数据库中的业务数据迁移完毕。
在一些实施例中,在确定第一数据库中的业务数据迁移完毕,且迁移并存入第二数据库中的业务数据核对通过的情况下,所述方法具体实施时,还可以包括以下内容:
S1:生成关于第二数据库的测试指令;
S2:响应所述测试指令,在测试时间段通过同时运行第一数据库和第二数据库,得到相应的测试结果;
S3:根据测试结果,确定第二数据库是否符合预设要求;
S4:在确定所述第二数据库符合预设要求的情况下,切换使用第二数据库。
具体实施时,在响应测试指令,在测试时间段照旧使用第一数据库进行交易数据处理的同时;可以同步获取相关的交易数据作为测试数据,并使用第二数据库基于上述测试数据,进行模拟交易数据处理,实现在测试时间段同时运行第一数据库和第二数据库。在运行过程中,可以采集使用第一数据库处理交易数据时的第一处理结果,以及使用第二数据库处理测试数据时的第二处理结果,并将上述第一处理结果和第二处理结果确定为相应的测试结果。
进一步,可以根据上述测试结果,比较第二处理结果是否与第一处理结果是否相同;在确定第二处理结果与第一处理结果相同的情况下,可以确定第二数据库符合预设要求,测试通过,数据库迁移成功,可以正常使用第二数据。
在确定第二数据库符合要求的情况下,可以利用数据库迁移***生成切换指令,并通过指令传输通道向第一数据库、第二数据库分别发送上述切换指令。相应的,可以响应上述切换指令停用第一数据库,同时切换使用第二数据库。
基于上述实施例,可以通过在测试时间同时运行第一数据库和第二数据库对第二数据库进行测试,在确定测试通过,迁移成功的情况下,才会切换使用第二数据库进行平台的交易数据处理,从而能够较好地确保平台交易数据处理的稳定、可靠。
具体实施时,在根据测试结果,确定第二数据库不符合预设要求的情况下,可以利用数据库迁移***生成重新迁移指令;并通过指令传输通道向第一数据库和第二数据库分别发送重新迁移指令,以将第二数据库置空,再重新将第一数据库中的业务数据迁移到第二数据库。
在一些实施例中,在通过数据迁移通道,将该数据队列中的业务数据迁移并存入第二数据库中的过程中,所述方法具体实施时,还可以包括以下内容:
S1:利用数据库迁移***监测迁移过程中是否出现异常问题;
S2:在确定出现异常问题的情况下,根据异常问题,查询预设的异常策略方案集,确定出相匹配的目标异常策略方案;
S4:根据目标异常策略方案,进行相匹配的异常应急处理。
其中,上述异常问题具体可以包括以下所列举的至少之一:数据库迁移过程中出现宕机、数据核对时发现存在大量错误的业务数据、数据迁移过程中遭到网络攻击等等。
具体实施前,可以获取大量针对不同异常问题的处理记录,再通过对大量异常问题的处理记录进行聚类处理的,得到与不同异常问题分别对应的处理规则集;再结合专家经验,对各个异常问题的处理规则集分别进行梳理和调整,得到与各个异常问题分别对应的多个预设的异常策略方案;并组合上述多个预设的异常策略方案,得到对应的预设的异常策略方案集。
具体实施时,确定出现异常问题的情况下,数据库迁移***还可以利用监控报警模块生成关于该异常问题的报警提示信息,并将该报警提示信息发送至用户终端,以及时对用户进行相关提示。
具体实施时,例如,在确定异常问题为数据库迁移过程中出现宕机时,上述根据目标异常策略方案,进行相匹配的异常应急处理,具体可以包括:利用数据库迁移***记录当前通过数据迁移通道正迁移存入第二数据库的数据队列的队列标识作为中断队列标识,以及已经迁移存入第二数据库的数据队列的队列标识作为已存队列标识。同时保存下数据缓存模块中的数据队列。待宕机结束恢复正常时,根据中断队列标识和已存队列标识,从数据缓存模块中的数据队列中找出中断队列,以及除中断队列以外的其他待迁移的数据队列。将该中断队列作为起始队列,从中断队列起,通过数据迁移通道,将数据缓存模块中的待迁移的数据队列分别迁移并存入第二数据库中。
又例如,在确定异常问题为数据核对时发现存在大量错误的业务数据时,述根据目标异常策略方案,进行相匹配的异常应急处理,具体可以包括:利用数据库迁移***对第一数据库、第二数据库、数据迁移通道、指令传输通道、数据缓存模块,以及相关运行环境进行健康性检测,得到对应的检测结果;根据检测结果,对存在健康异常的区域进行针对性的自修复处理;在确定自修复完成后,利用数据库迁移***重新进行数据库迁移。
由上可见,基于本说明书实施例提供的数据库的迁移方法,在需要迁移第一数据库时,可以先创建空的第二数据库;并部署相应的数据库迁移***。具体进行数据库迁移时,可以先利用该数据库迁移***建立连接有数据缓存模块的数据迁移通道和指令传输通道;再根据预设的迁移规则,先通过数据迁移通道将第一数据库中的业务数据迁移至数据缓存模块,并保存为相对应的数据队列;再以数据队列为处理单位,通过数据迁移通道将数据队列中的业务数据迁移并存入第二数据库中;同时,通过指令传输通道与第一数据库进行指令交互,对迁移并存入第二数据库中的业务数据进行数据核对;在确定第一数据库中的业务数据迁移完毕,且迁移并存入第二数据库中的业务数据核对通过的情况下,结束数据库的迁移处理;并切换使用第二数据库。从而能够以较低的处理成本,在用户无感知的情况下,高效、准确地实现数据库的不停机迁移,避免对用户正常使用造成影响。
本说明书实施例还提供一种服务器,可以参阅图10所示。其中,所述服务器包括网络通信端口1001、处理器1002以及存储器1003,上述结构通过内部线缆相连,以便各个结构可以进行具体的数据交互。
其中,所述网络通信端口1001,具体可以用于接收关于第一数据库的迁移请求。
所述处理器1002,具体可以用于响应关于第一数据库的迁移请求,创建第二数据库;并部署关于第一数据库和第二数据库的数据库迁移***;利用数据库迁移***在第一数据库与第二数据库之间建立数据迁移通道和指令传输通道;其中,所述数据迁移通道还连接有数据缓存模块;根据预设的迁移规则,利用数据库迁移***通过数据迁移通道,将第一数据库中的业务数据迁移至数据缓存模块;并根据业务数据的属性信息,将迁移至数据缓存模块中的业务数据保存成相应的数据队列;利用数据库迁移***读取数据缓存模块中的数据队列;并通过数据迁移通道,将该数据队列中的业务数据迁移并存入第二数据库中;利用数据库迁移***通过指令传输通道与第一数据库进行指令交互,对迁移并存入第二数据库中的业务数据进行数据核对;在确定第一数据库中的业务数据迁移完毕,且迁移并存入第二数据库中的业务数据核对通过的情况下,结束数据库的迁移处理;并切换使用第二数据库。
所述存储器1003,具体可以用于存储相应的指令程序。
在本实施例中,所述网络通信端口1001可以是与不同的通信协议进行绑定,从而可以发送或接收不同数据的虚拟端口。例如,所述网络通信端口可以是负责进行web数据通信的端口,也可以是负责进行FTP数据通信的端口,还可以是负责进行邮件数据通信的端口。此外,所述网络通信端口还可以是实体的通信接口或者通信芯片。例如,其可以为无线移动网络通信芯片,如GSM、CDMA等;其还可以为Wifi芯片;其还可以为蓝牙芯片。
在本实施例中,所述处理器1002可以按任何适当的方式实现。例如,处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。本说明书并不作限定。
在本实施例中,所述存储器1003可以包括多个层次,在数字***中,只要能保存二进制数据的都可以是存储器;在集成电路中,一个没有实物形式的有存储功能的电路也叫存储器,如RAM、FIFO等;在***中,具有实物形式的存储设备也叫存储器,如内存条、TF卡等。
本说明书实施例还提供了一种基于上述数据库的迁移方法的计算机可读存储介质,所述计算机可读存储介质存储有计算机程序指令,在所述计算机程序指令被执行时实现以下步骤:响应关于第一数据库的迁移请求,创建第二数据库;并部署关于第一数据库和第二数据库的数据库迁移***;利用数据库迁移***在第一数据库与第二数据库之间建立数据迁移通道和指令传输通道;其中,所述数据迁移通道还连接有数据缓存模块;根据预设的迁移规则,利用数据库迁移***通过数据迁移通道,将第一数据库中的业务数据迁移至数据缓存模块;并根据业务数据的属性信息,将迁移至数据缓存模块中的业务数据保存成相应的数据队列;利用数据库迁移***读取数据缓存模块中的数据队列;并通过数据迁移通道,将该数据队列中的业务数据迁移并存入第二数据库中;利用数据库迁移***通过指令传输通道与第一数据库进行指令交互,对迁移并存入第二数据库中的业务数据进行数据核对;在确定第一数据库中的业务数据迁移完毕,且迁移并存入第二数据库中的业务数据核对通过的情况下,结束数据库的迁移处理;并切换使用第二数据库。
在本实施例中,上述存储介质包括但不限于随机存取存储器(Random AccessMemory,RAM)、只读存储器(Read-Only Memory,ROM)、缓存(Cache)、硬盘(Hard DiskDrive,HDD)或者存储卡(Memory Card)。所述存储器可以用于存储计算机程序指令。网络通信单元可以是依照通信协议规定的标准设置的,用于进行网络连接通信的接口。
在本实施例中,该计算机可读存储介质存储的程序指令具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。
参阅图11所示,在软件层面上,本说明书实施例还提供了一种数据库的迁移装置,该装置具体可以包括以下的结构模块:
创建部署模块1101,具体可以用于响应关于第一数据库的迁移请求,创建第二数据库;并部署关于第一数据库和第二数据库的数据库迁移***;
建立模块1102,具体可以用于利用数据库迁移***在第一数据库与第二数据库之间建立数据迁移通道和指令传输通道;其中,所述数据迁移通道还连接有数据缓存模块;
第一迁移模块1103,具体可以用于根据预设的迁移规则,利用数据库迁移***通过数据迁移通道,将第一数据库中的业务数据迁移至数据缓存模块;并根据业务数据的属性信息,将迁移至数据缓存模块中的业务数据保存成相应的数据队列;
第二迁移模块1104,具体可以用于利用数据库迁移***读取数据缓存模块中的数据队列;并通过数据迁移通道,将该数据队列中的业务数据迁移并存入第二数据库中;
核对模块1105,具体可以用于利用数据库迁移***通过指令传输通道与第一数据库进行指令交互,对迁移并存入第二数据库中的业务数据进行数据核对;
切换模块1106,可以用于在确定第一数据库中的业务数据迁移完毕,且迁移并存入第二数据库中的业务数据核对通过的情况下,结束数据库的迁移处理;并切换使用第二数据库。
在一些实施例中,所述数据库迁移***至少包括数据库接入模块;相应的,上述建立模块1102具体实施时,可以按照以下方式利用数据库迁移***在第一数据库与第二数据库之间建立数据迁移通道和指令传输通道:利用数据库迁移***的数据库接入模块获取第一数据库的版本信息和类型信息,以及第二数据库的版本信息和类型信息;根据第一数据库的版本信息和类型信息,以及第二数据库的版本信息和类型信息,确定出相匹配的数据接口;利用所述相匹配的数据接口在第一数据库与第二数据库之间建立相应的数据迁移通道和指令传输通道。
在一些实施例中,所述数据库迁移***还包括数据解析模块;相应的,上述第二迁移模块1104具体实施时,可以按照以下方式利用数据库迁移***读取数据缓存模块中的数据队列:利用数据库迁移***的数据解析模块读取数据缓存模块中当前数据队列中的业务数据,获取与该业务数据对应的关键字段;将该业务数据解析转换为与第二数据库相匹配的转换后的业务数据;组合关键字段、转换后的业务数据,得到与该业务数据相对应的组合数据。
在一些实施例中,上述第二迁移模块1104具体实施时,按照以下方式,通过数据迁移通道,将该数据队列中的业务数据迁移并存入第二数据库中:根据所述组合数据,通过数据迁移通道,将该数据队列中相对应的业务数据迁移并存入第二数据库相对应的库表区域中。
在一些实施例中,所述数据库迁移***还包括路由策略模块和数据处理模块;相应的,上述第二迁移模块1104具体实施时,按照以下方式,根据所述组合数据,通过数据迁移通道,将该数据队列中相对应的业务数据迁移并存入第二数据库相对应的库表区域中:利用数据库迁移***的路由策略模块根据组合数据中的关键字段,确定出相对应的基于第二数据库的落库信息;利用路由策略模块根据落库信息标记组合数据中的变换后的业务数据,得到标记后的业务数据;利用数据处理模块通过数据迁移通道,将标记后的业务数据迁移并存入第二数据库相对应的库表区域中。
在一些实施例中,所述关键字段可以包括分库分表字段;其中,所述关键字段具体可以按照以下方式生成:确定业务数据的业务类型;根据业务数据的业务类型,从预设的规则模板中确定出相匹配的目标规则模板;根据目标规则模板,从业务数据中提取出特征字段;根据特征字段确定出相应的分库分表字段,作为所述关键字段。
在一些实施例中,所述数据迁移通道包括多个数据迁移通道;所述数据队列包括多个数据队列;相应的,上述第二迁移模块1104具体实施时,按照以下方式,通过数据迁移通道,将该数据队列中的业务数据迁移并存入第二数据库中:通过多个数据迁移通道,以异步任务的方式,将多个数据队列分别迁移并存入第二数据库中。
在一些实施例中,所述数据库迁移***还包括数据核对模块和指令发送模块;相应的,上述核对模块1105具体实施时,按照以下方式,利用数据库迁移***通过指令传输通道与第一数据库进行指令交互,对迁移并存入第二数据库中的业务数据进行数据核对:利用数据库迁移***的数据核对模块监测第二数据库;在监测第二数据库中存入新增的数据队列时,生成关于该新增的数据队列的第一核对查询指令;利用指令发送模块通过指令传输通道将所述第一核对查询指令发送至第一数据库;并接收第一数据库反馈的第一查询结果数据;利用数据核对模块根据第一查询结果数据,对该新增的数据队列进行数据核对。
在一些实施例中,在利用数据核对模块根据第一查询结果数据,对该新增的数据队列进行数据核对之后,所述核对模块1105具体实施时,还可以用于:在确定新增的数据队列中的业务数据核对未通过的情况下,将该新增的数据队列确定为错误数据队列;生成关于该错误数据队列的重置指令;利用指令发送模块通过指令传输通道将该重置指令发送至第一数据库;接收第一数据库通过数据迁移通道反馈的针对该错误数据队列的重置业务数据;并根据该重置业务数据重置存储于第二数据库中的错误数据队列中的业务数据的数据值。
在一些实施例中,所述核对模块1105具体实施时,还可以按照以下方式利用数据库迁移***通过指令传输通道与第一数据库进行指令交互,对迁移并存入第二数据库中的业务数据进行数据核对:利用数据库迁移***的数据核对模块监测第二数据库;在监测到第一数据库中的业务数据迁移完毕时,生成关于第二数据库中的业务数据的第二核对查询指令;利用指令发送模块通过指令传输通道将所述第二核对查询指令发送至第一数据库;并接收第一数据库反馈的第二查询结果数据;利用数据核对模块根据第二查询结果数据,对第二数据库中的业务数据进行数据核对。
在一些实施例中,在利用数据库迁移***在第一数据库与第二数据库之间建立数据迁移通道和指令传输通道之后,所述装置具体实施时,还可以用于:确定数据迁移通道和指令传输通道的建立时间作为第一时间点,并在第一数据库中确定出存入时间在第一时间点之前的第一批业务数据;根据预设的迁移规则,利用数据库迁移***通过数据迁移通道,将第一数据库中的第一批业务数据迁移至数据缓存模块;并通过数据迁移通道,将第一批业务数据以数据队列的形式迁移并存入第二数据库中;确定第一批业务数据迁移并存入第二数据库中的存入时间,作为第二时间点;在第一数据库中确定出存入时间在第一时间点之后,第二时间点之前的第二批业务数据;根据预设的迁移规则,利用数据库迁移***通过数据迁移通道,将第一数据库中的第二批业务数据迁移并存入第二数据库中;在确定第二批业务数据迁移并存入第二数据库中时,确定第一数据库中的业务数据迁移完毕。
在一些实施例中,在确定第一数据库中的业务数据迁移完毕,且迁移并存入第二数据库中的业务数据核对通过的情况下,所述装置具体实施时,还可以用于:生成关于第二数据库的测试指令;响应所述测试指令,在测试时间段通过同时运行第一数据库和第二数据库,得到相应的测试结果;根据测试结果,确定第二数据库是否符合预设要求;在确定所述第二数据库符合预设要求的情况下,切换使用第二数据库。
需要说明的是,上述实施例阐明的单元、装置或模块等,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
由上可见,基于本说明书实施例提供的数据库的迁移装置,能以较低的处理成本,在用户无感知的情况下,高效、准确地实现数据库的不停机迁移,避免对用户正常使用造成影响。
在一个具体的场景示例中,可以应用本说明书提供的数据库的迁移方法实现数据库分库分表的不停机迁移。
考虑到现有停机方案因不能保障业务***的高可用,且部分核心交易***是不能进行停机操作的,故该方案已逐渐被舍弃。而现有的不停机方案,缺点也很明显,其方案中的新老***并行运行期长,时间成本高,运维成本高,分库分表在应用层实现有较大的改造风险。
针对上述问题,在本场景示例中,提供了一种对应用层无感,接入成本低的数据库分库分表迁移方法及装置,以克服现有不停机数据库迁移技术中的改造工作量大、运维成本高的缺点。
主数据库(例如,第一数据库)即为待迁移的数据库,从数据库即为迁移目标数据库,主数据库通过数据流(即数据库日志)同步数据到从数据库(例如,第二数据库),从数据库通过指令流发送数据库相关指令到主数据库。
具体的,参阅图3所示,可以先构建一种数据库迁移装置(例如,数据库迁移***),包括:数据库接入装置、数据缓存装置、数据解析装置、路由策略装置、数据处理装置、指令发送装置、数据核对装置、监控报警装置。
(1)数据库接入模块:数据库接入装置用于将各种版本的数据库与本迁移装置建立适配和链接。数据接入装置不仅能解析主库发来的授权连接请求,同时还会主动向主库再建立一个连接,用于向主库发送指令以及核对数据。数据库接入装置会将主数据库同步过来数据送往数据缓存装置进行下一步处理,还能接收指令发送装置发出的指令,并转发给主库执行。
(2)数据缓存模块:为了提升本迁移装置的I/O性能,避免大批量的数据主从同步时,从库处理响应缓慢,数据缓存装置会将主库发来的原始数据流,以队列的形式缓存到本地,后续通过异步任务形式依次处理同步过来的数据,将数据发送给数据解析装置进行下一步处理。
(3)数据解析模块:数据解析装置会将数据缓存装置发送过来的原始数据流,解析成从库可执行数据库语言,并能提取用户指定的数据库分库分表路由字段。数据解析完成后会将数据发送给路由策略装置进行下一步处理。
(4)路由策略模块:路由策略装置会根据用户定义的分片算法和路由字段,计算出数据将要落库的从库信息,并对这条数据进行标记,标记目标从库ID信息。标记完成后,会将数据发送给数据处理装置。
(5)数据处理模块:数据处理装置会将上述打标过的数据,按照打标信息,将数据写入指定的数据库介质中。
(6)指令发送模块:指令发送装置可以向主数据库发送数据库命令,使主库执行对应的命令。如,首次迁移数据时(对应迁移第一批业务数据),存在的大量存量数据需要让主库通过数据流传输给从库,故需要向主库发送指令。再如,通过数据核对装置对数据进行核对时,需要获取主库最新数据信息,故需要向主库发送指令。又如,数据迁移过程中存在问题,需要应急断开主从配置或其他应急处理,也需要向主库发送指令。
(7)数据核对模块:数据核对装置用于迁移过程中和迁移完成后,核对主库从库的数据是否保持一致。数据核对装置可以通过指令发送装置向主库发送查询指令和从数据库介质中读取从库数据。
(8)监控报警模块:监控报警装置用于及时感知监控数据库迁移过程中、数据核对过程中存在的问题。
上述数据库迁移装置可以数据库介质(即空的第二数据库)相连。其中,数据库介质是真正的迁移目标数据库,可以是单个或多个数据库实例(根据实际分库情况确定实例个数)。主库的数据在迁移完成后最终是保存到本数据库介质中。
利用上述数据库迁移装置,具体进行数据库迁移时,可以包括以下内容。
S01:建立主库(原数据库)和从库(本装置,目标数据库)的连接。从库开始从主库获取实时同步过来的增量数据并保存到数据缓存装置的缓存队列中。
S02:初次迁移,由指令发送装置发送指令拉取主库全量数据,主库在接到指令后,通过数据流将全量数据发送给从库。数据缓存装置将按时间节点将全量数据保存到缓存队列中。
S03:从库的数据缓存装置依次将数据发送到数据解析装置,数据解析装置将原始数据转换为从库可执行的数据库脚本,并提取路由字段,然后发送给路由策略装置。
S04:路由策略装置提取路由字段,并按用户指定的分库分表算法,为数据打标,然后发送给数据处理装置。
S05:数据处理装置根据打标情况,将数据写入数据库介质中。
S06:数据核对装置开始从从库中读取已写入的数据,并通过指令发送装置向主库查询数据,然后核对两者是否一致。若主从数据一致,则该条数据核对通过,若主从数据不一致,则可以按用户配置通过监控报警装置推送报警消息或者使用主库数据二次覆盖从库数据等操作。
S07:整个装置一直重复执行步骤S02-S06,直到存量数据全部迁移完成。
S08:数据全部迁移完成并核对无误后,由从库通过指令发送装置,触发数据库的主备切换,原从库替换为主库,即完成了整个迁移过程。
通过上述场景示例,验证了本说明书提供的数据库的迁移方法能够有效解决现有不停机数据库迁移技术中的改造工作量大、运维成本高的缺点,实现对应用层无感,接入成本低的数据库分库分表迁移。具体优点如下:1)应用层无感,即无需在应用层实现分库分表策略,避免改造应用层时引入其他缺陷,影响整个***的可靠性。2)时间成本低,相比现有技术方案,本方案支持存量数据迁移完成后就立即切换***,无需按日期逐步处理。3)运维成本低,相比现有技术方案,本方案无需过多的人工操作,降低了运维成本。
虽然本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
本说明书中的各个实施例采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。本说明书可用于众多通用或专用的计算机***环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器***、基于微处理器的***、置顶盒、可编程的电子设备、网络PC、小型计算机、大型计算机、包括以上任何***或设备的分布式计算环境等等。
虽然通过实施例描绘了本说明书,本领域普通技术人员知道,本说明书有许多变形和变化而不脱离本说明书的精神,希望所附的权利要求包括这些变形和变化而不脱离本说明书的精神。

Claims (15)

1.一种数据库的迁移方法,其特征在于,包括:
响应关于第一数据库的迁移请求,创建第二数据库;并部署关于第一数据库和第二数据库的数据库迁移***;
利用数据库迁移***在第一数据库与第二数据库之间建立数据迁移通道和指令传输通道;其中,所述数据迁移通道还连接有数据缓存模块;
根据预设的迁移规则,利用数据库迁移***通过数据迁移通道,将第一数据库中的业务数据迁移至数据缓存模块;并根据业务数据的属性信息,将迁移至数据缓存模块中的业务数据保存成相应的数据队列;
利用数据库迁移***读取数据缓存模块中的数据队列;并通过数据迁移通道,将该数据队列中的业务数据迁移并存入第二数据库中;
利用数据库迁移***通过指令传输通道与第一数据库进行指令交互,对迁移并存入第二数据库中的业务数据进行数据核对;
在确定第一数据库中的业务数据迁移完毕,且迁移并存入第二数据库中的业务数据核对通过的情况下,结束数据库的迁移处理;并切换使用第二数据库。
2.根据权利要求1所述的方法,其特征在于,所述数据库迁移***至少包括数据库接入模块;相应的,利用数据库迁移***在第一数据库与第二数据库之间建立数据迁移通道和指令传输通道,包括:
利用数据库迁移***的数据库接入模块获取第一数据库的版本信息和类型信息,以及第二数据库的版本信息和类型信息;
根据第一数据库的版本信息和类型信息,以及第二数据库的版本信息和类型信息,确定出相匹配的数据接口;
利用所述相匹配的数据接口在第一数据库与第二数据库之间建立相应的数据迁移通道和指令传输通道。
3.根据权利要求1所述的方法,其特征在于,所述数据库迁移***还包括数据解析模块;相应的,利用数据库迁移***读取数据缓存模块中的数据队列,包括:
利用数据库迁移***的数据解析模块读取数据缓存模块中当前数据队列中的业务数据,获取与该业务数据对应的关键字段;
将该业务数据解析转换为与第二数据库相匹配的转换后的业务数据;
组合关键字段、转换后的业务数据,得到与该业务数据相对应的组合数据。
4.根据权利要求3所述的方法,其特征在于,通过数据迁移通道,将该数据队列中的业务数据迁移并存入第二数据库中,包括:
根据所述组合数据,通过数据迁移通道,将该数据队列中相对应的业务数据迁移并存入第二数据库相对应的库表区域中。
5.根据权利要求4所述的方法,其特征在于,所述数据库迁移***还包括路由策略模块和数据处理模块;相应的,根据所述组合数据,通过数据迁移通道,将该数据队列中相对应的业务数据迁移并存入第二数据库相对应的库表区域中,包括:
利用数据库迁移***的路由策略模块根据组合数据中的关键字段,确定出相对应的基于第二数据库的落库信息;
利用路由策略模块根据落库信息标记组合数据中的变换后的业务数据,得到标记后的业务数据;
利用数据处理模块通过数据迁移通道,将标记后的业务数据迁移并存入第二数据库相对应的库表区域中。
6.根据权利要求3所述的方法,其特征在于,所述关键字段包括分库分表字段;其中,所述关键字段按照以下方式生成:确定业务数据的业务类型;根据业务数据的业务类型,从预设的规则模板中确定出相匹配的目标规则模板;根据目标规则模板,从业务数据中提取出特征字段;根据特征字段确定出相应的分库分表字段,作为所述关键字段。
7.根据权利要求3所述的方法,其特征在于,所述数据迁移通道包括多个数据迁移通道;所述数据队列包括多个数据队列;
相应的,通过数据迁移通道,将该数据队列中的业务数据迁移并存入第二数据库中,包括:
通过多个数据迁移通道,以异步任务的方式,将多个数据队列分别迁移并存入第二数据库中。
8.根据权利要求1所述的方法,其特征在于,所述数据库迁移***还包括数据核对模块和指令发送模块;相应的,利用数据库迁移***通过指令传输通道与第一数据库进行指令交互,对迁移并存入第二数据库中的业务数据进行数据核对,包括:
利用数据库迁移***的数据核对模块监测第二数据库;
在监测第二数据库中存入新增的数据队列时,生成关于该新增的数据队列的第一核对查询指令;
利用指令发送模块通过指令传输通道将所述第一核对查询指令发送至第一数据库;并接收第一数据库反馈的第一查询结果数据;
利用数据核对模块根据第一查询结果数据,对该新增的数据队列进行数据核对。
9.根据权利要求8所述的方法,其特征在于,在利用数据核对模块根据第一查询结果数据,对该新增的数据队列进行数据核对之后,所述方法还包括:
在确定新增的数据队列中的业务数据核对未通过的情况下,将该新增的数据队列确定为错误数据队列;
生成关于该错误数据队列的重置指令;利用指令发送模块通过指令传输通道将该重置指令发送至第一数据库;
接收第一数据库通过数据迁移通道反馈的针对该错误数据队列的重置业务数据;并根据该重置业务数据重置存储于第二数据库中的错误数据队列中的业务数据的数据值。
10.根据权利要求8所述的方法,其特征在于,利用数据库迁移***通过指令传输通道与第一数据库进行指令交互,对迁移并存入第二数据库中的业务数据进行数据核对,还包括:
利用数据库迁移***的数据核对模块监测第二数据库;
在监测到第一数据库中的业务数据迁移完毕时,生成关于第二数据库中的业务数据的第二核对查询指令;
利用指令发送模块通过指令传输通道将所述第二核对查询指令发送至第一数据库;并接收第一数据库反馈的第二查询结果数据;
利用数据核对模块根据第二查询结果数据,对第二数据库中的业务数据进行数据核对。
11.根据权利要求1所述的方法,其特征在于,在利用数据库迁移***在第一数据库与第二数据库之间建立数据迁移通道和指令传输通道之后,所述方法还包括:
确定数据迁移通道和指令传输通道的建立时间作为第一时间点,并在第一数据库中确定出存入时间在第一时间点之前的第一批业务数据;
根据预设的迁移规则,利用数据库迁移***通过数据迁移通道,将第一数据库中的第一批业务数据迁移至数据缓存模块;并通过数据迁移通道,将第一批业务数据以数据队列的形式迁移并存入第二数据库中;
确定第一批业务数据迁移并存入第二数据库中的存入时间,作为第二时间点;
在第一数据库中确定出存入时间在第一时间点之后,第二时间点之前的第二批业务数据;
根据预设的迁移规则,利用数据库迁移***通过数据迁移通道,将第一数据库中的第二批业务数据迁移并存入第二数据库中;
在确定第二批业务数据迁移并存入第二数据库中时,确定第一数据库中的业务数据迁移完毕。
12.根据权利要求1所述的方法,其特征在于,在确定第一数据库中的业务数据迁移完毕,且迁移并存入第二数据库中的业务数据核对通过的情况下,所述方法还包括:
生成关于第二数据库的测试指令;
响应所述测试指令,在测试时间段通过同时运行第一数据库和第二数据库,得到相应的测试结果;
根据测试结果,确定第二数据库是否符合预设要求;
在确定所述第二数据库符合预设要求的情况下,切换使用第二数据库。
13.一种数据库的迁移装置,其特征在于,包括:
创建部署模块,用于响应关于第一数据库的迁移请求,创建第二数据库;并部署关于第一数据库和第二数据库的数据库迁移***;
建立模块,用于利用数据库迁移***在第一数据库与第二数据库之间建立数据迁移通道和指令传输通道;其中,所述数据迁移通道还连接有数据缓存模块;
第一迁移模块,用于根据预设的迁移规则,利用数据库迁移***通过数据迁移通道,将第一数据库中的业务数据迁移至数据缓存模块;并根据业务数据的属性信息,将迁移至数据缓存模块中的业务数据保存成相应的数据队列;
第二迁移模块,用于利用数据库迁移***读取数据缓存模块中的数据队列;并通过数据迁移通道,将该数据队列中的业务数据迁移并存入第二数据库中;
核对模块,用于利用数据库迁移***通过指令传输通道与第一数据库进行指令交互,对迁移并存入第二数据库中的业务数据进行数据核对;
切换模块,用于在确定第一数据库中的业务数据迁移完毕,且迁移并存入第二数据库中的业务数据核对通过的情况下,结束数据库的迁移处理;并切换使用第二数据库。
14.一种服务器,其特征在于,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现权利要求1至12中任一项所述方法的步骤。
15.一种计算机可读存储介质,其特征在于,其上存储有计算机指令,所述指令被处理器执行时实现权利要求1至12中任一项所述方法的步骤。
CN202410291282.9A 2024-03-14 2024-03-14 数据库的迁移方法、装置和服务器 Pending CN118170747A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410291282.9A CN118170747A (zh) 2024-03-14 2024-03-14 数据库的迁移方法、装置和服务器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410291282.9A CN118170747A (zh) 2024-03-14 2024-03-14 数据库的迁移方法、装置和服务器

Publications (1)

Publication Number Publication Date
CN118170747A true CN118170747A (zh) 2024-06-11

Family

ID=91357843

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410291282.9A Pending CN118170747A (zh) 2024-03-14 2024-03-14 数据库的迁移方法、装置和服务器

Country Status (1)

Country Link
CN (1) CN118170747A (zh)

Similar Documents

Publication Publication Date Title
CN109034993B (zh) 对账方法、设备、***及计算机可读存储介质
CN107220142B (zh) 执行数据恢复操作的方法及装置
US10769228B2 (en) Systems and methods for web analytics testing and web development
CN103095821B (zh) 一种基于虚拟机迁移识别的持续审计***
CN105262633B (zh) 一种应用级容灾方法及应用级容灾***
CN109614262B (zh) 业务校验方法、装置及计算机可读存储介质
CN109241014B (zh) 数据处理方法、装置和服务器
US9753792B2 (en) Method and system for byzantine fault tolerant data replication
CN112527534A (zh) 基于消息队列的业务处理方法、装置、设备及存储介质
CN112039979A (zh) 分布式数据缓存管理方法、装置、设备及存储介质
CN106789249B (zh) 热更新方法、客户端及服务器
CN110764980A (zh) 日志处理方法和装置
CN109542894B (zh) 用户数据集中存储方法、装置、介质和计算机设备
CN109308227A (zh) 故障检测控制方法及相关设备
CN111813788A (zh) 信息的查询方法和装置、信息的同步方法和装置
KR20180037342A (ko) 어플리케이션 에러 모니터링 및 통계관리 서비스 및 방법
CN110737719A (zh) 数据同步方法、装置、设备及计算机可读存储介质
CN112131002A (zh) 数据管理方法及装置
US8554908B2 (en) Device, method, and storage medium for detecting multiplexed relation of applications
CN112003940A (zh) 基于区块链和在线业务的支付网络状态处理方法及服务器
CN118170747A (zh) 数据库的迁移方法、装置和服务器
CN114172821B (zh) 服务状态的同步方法、装置及服务器
CN110933184B (zh) 一种资源发布平台和资源发布方法
CN116107801A (zh) 交易处理方法及相关产品
US20160275293A1 (en) Information processing system and control method of the information processing system

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