本发明属于数据库的,具体涉及一种面向存储过程的在线数据库迁移方法和系统。
背景技术:
1、不同品类下的数据库单位数据的存储成本,存储性能是不同的,业务方有着数据迁移的需求。有些业务方的业务逻辑,封装在大量的存储过程中存储过程(storedprocedure)是在大型数据库系统中,一组为了完成特定功能的sql语句集)。导致源码与数据库品类强绑定,数据库迁移依赖于对存储过程的改造。虽然存在一些工具可用于不同数据库之间存储过程的翻译和转换,但直接的翻译转换并不总是可行,需要人力和时间成本进行验证,且迁移本身也需要兼顾对业务的影响。
2、如授权公告号为cn107958010b的中国专利公开了一种用于在线数据迁移的方法及系统,该方法包括:监听应用的待迁移数据中的待迁移增量数据的二进制日志;根据所述二进制日志生成增量数据迁移消息;根据消息分发策略将所述增量数据迁移消息发送至所述应用的增量数据消息队列。该发明基于消息机制实现在线数据迁移。
3、如申请公开号为cn110059072a的专利公开了一种基于存储过程的数据迁移监控方法、系统、设备及介质,该方法包括:监听获知主存储过程中的迁移开关被触发,从至少一张基础数据表中确定出本次迁移依赖的目标基础数据表;将目标基础数据表的表名称存储至监控记录表中;触发对应的副存储过程,获取目标基础数据表关联的至少一张待迁移数据表,并将至少一张待迁移数据表进行迁移,其中,目标基础数据表中用于存储与至少一张待迁移数据表的每张待迁移数据表中的待迁移数据关联的基础数据;确定至少一张待迁移数据表的迁移结果;以及将迁移结果记录在监控记录表中与表名称关联的位置。
4、以上专利都存在本背景技术提出的问题:在线数据库迁移,并不涉及源码改造,直接的翻译转换并不总是可行,需要人力和时间成本进行验证。
5、公开于该背景技术部分的信息仅仅旨在增加对本发明的总体背景的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域普通技术人员所公知的现有技术。
技术实现思路
1、本发明所要解决的技术问题是克服现有技术的缺陷,提供一种面向存储过程的在线数据库迁移方法,通过对源码分析,对存储过程进行标识分类,在服务器与数据库之间增加中间层来对请求进行自动化统计与透明转发,在保证业务正常的同时,找出高频的存储过程,通过渐进式翻译改造,与数据同步,最终实现数据库迁移的目标,且尽可能减少对业务影响。
2、为解决上述技术问题,本发明提供如下技术方案:
3、一方面,本发明提供一种面向存储过程的在线数据库迁移方法,包括以下步骤:
4、s1:对源文件中的存储过程进行去重过滤;
5、s2:对每个的存储过程赋予一个标识并初始化三元组字典;
6、s3:将存储过程请求串行化,基于所述三元组字典将存储过程转发至源数据库,并记录每个存储过程的频度;
7、s4:翻译所述频度最高的存储过程;
8、s5:基于所述三元组字典将翻译后的存储过程从源数据库转发至目标数据库,并由目标数据库执行翻译后的存储过程;
9、s6:校验存储过程的执行结果并进行目标数据库与源数据库间的数据同步;
10、s7:重复s3-s6,直至完成迁移任务。
11、作为本发明所述面向存储过程的在线数据库迁移方法的一种优选方案,其中:所述进行去重过滤的方法如下:采用sql语法解析器来解析源码文件,识别存储过程,并对存储过程进行去重过滤。
12、作为本发明所述面向存储过程的在线数据库迁移方法的一种优选方案,其中:所述三元组字典的形式如下:
13、(key,value1,value2);
14、其中,key为所述标识的id;value1为存储过程;value2为翻译后的存储过程,初始值为空。
15、作为本发明所述面向存储过程的在线数据库迁移方法的一种优选方案,其中:所述将存储过程转发至源数据库的方法如下:读取三元组字典,将value1对应的存储过程转发至源数据库,并统计value1对应的存储过程的频度。
16、作为本发明所述面向存储过程的在线数据库迁移方法的一种优选方案,其中:所述翻译频度最高的存储过程的方法如下:周期性收集存储过程的频度并进行统计分析,找出频度最高的存储过程并反馈显示给业务方;业务方基于自身业务对存储过程进行改造翻译后,并更新三元组中的value2的值。
17、作为本发明所述面向存储过程的在线数据库迁移方法的一种优选方案,其中:所述将翻译后的存储过程从源数据库转发至目标数据库的方法为读取三元组字典,将value2对应的存储过程发送至目标数据库。
18、作为本发明所述面向存储过程的在线数据库迁移方法的一种优选方案,其中:所述完成迁移任务的判定方法为三元组字典value2被替换完毕或业务方决定迁移停止。
19、第二方面,本发明提供一种面向存储过程的在线数据库迁移系统,包括语法解析模块、中间层转发模块、数据库同步模块、频度分析与翻译模块;其中:
20、语法解析模块用于解析源码文件,识别存储过程,并对所述存储过程进行去重过滤和赋予标识;
21、中间层转发模块用于连接数据库与服务器;识别每个存储过程的标识;基于所述标识对存储过程进行路由转发;将所述频度发送至频度分析与翻译模块;
22、频度分析与翻译模块用于统计分析所述存储过程的频度,找出频度最高的存储过程并进行翻译;将翻译后的存储过程发送至中间层转发模块;
23、数据库同步模块用于源数据库和目标数据库之间的数据同步。
24、第三方面,本发明提供一种电子设备,包括存储器,用于存储指令;处理器,用于执行所述指令,使得所述设备执行实现本发明所述的一种面向存储过程的在线数据库迁移方法的操作。
25、第四方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时,实现本发明所述的一种面向存储过程的在线数据库迁移方法。
26、与现有技术相比,本发明所达到的有益效果如下:
27、大多数在线数据库迁移并不涉及源码改造,本专利提出的方案可以使得改造和迁移同步迭代进行,可通过迁移效果来决定改造过程,效果实时可视化,对业务更友好。
28、本发明采用渐进迁移思路,同时运行双数据库同步测试等手段,最大限度保证业务连续性,避免数据库迁移对业务的中断或影响。
29、本发明的每一步迁移都可以在同步测试后验证正确性,控制了迁移风险,从而达到增量迁移的效果;不需要人工全量翻译存储过程后再测试,可避免庞大翻译工作量带来的时间与风险成本。
1.一种面向存储过程的在线数据库迁移方法,其特征在于:包括以下步骤:
2.如权利要求1所述的一种面向存储过程的在线数据库迁移方法,其特征在于:所述进行去重过滤的方法如下:采用sql语法解析器来解析源码文件,识别存储过程,并对存储过程进行去重过滤。
3.如权利要求2所述的一种面向存储过程的在线数据库迁移方法,其特征在于:所述三元组字典的形式如下:
4.如权利要求3所述的一种面向存储过程的在线数据库迁移方法,其特征在于:所述将存储过程转发至源数据库的方法如下:读取三元组字典,将value1对应的存储过程转发至源数据库,并统计value1对应的存储过程的频度。
5.如权利要求4所述的一种面向存储过程的在线数据库迁移方法,其特征在于:所述翻译频度最高的存储过程的方法如下:周期性收集存储过程的频度并进行统计分析,找出频度最高的存储过程并反馈显示给业务方;业务方基于自身业务对存储过程进行改造翻译后,并更新三元组中的value2的值。
6.如权利要求5所述的一种面向存储过程的在线数据库迁移方法,其特征在于:所述将翻译后的存储过程从源数据库转发至目标数据库的方法为读取三元组字典,将value2对应的存储过程发送至目标数据库。
7.如权利要求6所述的一种面向存储过程的在线数据库迁移方法,其特征在于:所述完成迁移任务的判定方法为三元组字典value2被替换完毕或业务方决定迁移停止。
8.一种面向存储过程的在线数据库迁移系统,基于权利要求1-7中任一项所述的一种面向存储过程的在线数据库迁移方法实现,其特征在于:包括语法解析模块、中间层转发模块、数据库同步模块、频度分析与翻译模块;其中:
9.一种电子设备,其特征在于,包括:存储器,用于存储指令;处理器,用于执行所述指令,使得所述设备执行实现如权利要求1-7中任一项所述的一种面向存储过程的在线数据库迁移方法的操作。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时,实现如权利要求1-7中任一项所述的一种面向存储过程的在线数据库迁移方法。