数据库迁移方法及系统的制作方法

文档序号:10512321阅读:291来源:国知局
数据库迁移方法及系统的制作方法
【专利摘要】本发明公开了一种数据库迁移方法及系统。其中方法包括:发布读应用和写应用,预埋第一开关和第二开关;将源数据库离线备份至离线数据库;将离线数据库的数据写入目标数据库;根据源数据库的增量数据日志更改目标数据库;判断是否为读/写应用切换到目标数据库,若是,则停止记录源数据库的增量数据日志,迁移完成,若否,则将读/写应用恢复默认状态;获取目标数据库的增量数据日志;根据目标数据库的增量数据日志,更改源数据库;排查原因,修正。本发明弥补了现有技术在实现数据库迁移时性能消耗大且导致应用中断的不足,在不影响源数据库的应用和用户的使用的前提下,实现大数据、大并发的数据无缝迁移。
【专利说明】
数据库迁移方法及系统
技术领域
[0001 ]本发明涉及计算机领域,尤其涉及一种数据库迀移方法及系统。
【背景技术】
[0002]近几年互联网公司的快速发展,各个大公司都采用事业部制的管理方式来提升公司效率和应对行业竞争,数据的解耦就成了大趋势。同时,由于公司业务的不断扩大和增长,原先的数据结构已不能满足日新月异的业务需求,数据的重构改造就显得尤为重要。此夕卜,随着NoSQL(泛指非关系型的数据库)技术的推广,SQL(关系型数据库的结构化查询语言)数据库之间,SQL和NoSQL数据库之间的数据无缝迀移,也成为业界讨论的热门话题。
[0003]传统的数据库迀移方案有:
[0004]1、应用双“写”
[0005]即源数据库(被迀移的数据库)和目标数据库(迀移到的数据库)同时写入,这种方案的缺点为双“写”带来两倍的性能消耗,并且事务难以保证,需后台补偿等,后患多。
[0006]2、DB(数据库)层面复制分发
[0007]即将源数据库和目标数据库置为离线状态,将源数据库中的数据复制分发到目标数据库,这种方案的缺点为复制分发会带来DB CPU和OI等损耗,并且难以做到“无缝”,DB的切换会导致应用的中断,影响业务进程。

【发明内容】

[0008]本发明要解决的技术问题是现有技术中在实现数据库的迀移过程中性能消耗大且会导致应用中断的缺陷,提供一种针对生产高并发的服务和应用,实现异构数据库数据无缝迀移,保证对生产无影响的数据库迀移方法及系统。
[0009]本发明是通过以下技术方案解决上述技术问题的:
[0010]本发明提供一种数据库迀移方法,其特点是,包括:
[0011]T1、发布读应用和写应用,预埋用于切换所述读应用读的对象的第一开关和用于切换所述写应用写的对象的第二开关,所述读应用读的对象和所述写应用写的对象均默认为源数据库,所述第一开关和所述第二开关通过接收指令执行切换;
[0012]所述数据库迀移方法还包括:
[0013]S1、将源数据库离线备份至离线数据库,以开始备份的时刻为时间起点记录所述源数据库的增量数据日志;
[0014]S2、将所述离线数据库的数据写入目标数据库;
[0015]S3、定时执行:根据所述源数据库的增量数据日志,更改所述目标数据库,直至所述目标数据库与所述源数据库的增量数据日志一致;
[0016]S4、判断是否为所述第一开关将所述读应用读的对象切换到所述目标数据库且所述第二开关将所述写应用写的对象切换到所述目标数据库,若是,则执行S5,若否,则执行S6;
[0017]S5、停止记录所述源数据库的增量数据日志,迀移完成;
[0018]S6、通过所述第一开关将所述读应用读的对象恢复默认状态以及通过所述第二开关将所述写应用写的对象恢复默认状态;
[0019]S7、获取在所述读应用读的对象或所述写应用写的对象切换到所述目标数据库期间所述目标数据库的增量数据日志;
[0020]S8、定时执行:根据所述目标数据库的增量数据日志,更改所述源数据库;
[0021 ] S9、排查所述读应用读的对象和所述写应用写的对象未均切换到所述目标数据库的原因,修正,然后返回S3。
[0022]其中,所述读应用读的对象即表示所述读应用读的数据库,所述写应用写的对象即表示所述写应用写入的数据库;所述第一开关和所述第二开关为虚拟开关;S2实现了所述离线数据库和所述目标数据库的数据同步,在执行完S2之后所述离线数据库和所述目标数据库的数据相同;S3和S8中的所述定时执行是指以一时间周期多次执行,所述时间周期可以自由设定,S3和S8的时间周期可以相同或不同。
[0023]本技术方案先将源数据库备份到离线数据库,获取某一时间点的全量数据,再由离线数据库同步至目标数据库,保证了不影响源数据库的应用;利用第一开关和第二开关的切换使得用户的使用不受影响;通过S3实现数据迀移同步;通过S8保证当生产验证时及时回退。本技术方案不仅能够降低数据库的迀移过程中的性能消耗,还保证在数据库的迀移过程中应用不会中断,不局限于源数据库和目标数据的结构,高效地实现了异构数据库数据无缝迀移。
[0024]较佳地,S2包括:将所述离线数据库的数据通过分片和计数技术写入所述目标数据库。
[0025]本技术方案能够进一步实现数据的快速同步。
[0026]较佳地,S2还包括:在所述离线数据库的数据写入目标数据库完毕后,收回所述离线数据库的编辑权限。
[0027]较佳地,所述数据库迀移方法还包括:在所述目标数据库与所述源数据库的数据一致时产生切换所述第一开关和所述第二开关的指令,以使得所述读应用读的对象和所述写应用写的对象均切换到所述目标数据库。
[0028]较佳地,所述增量数据日志包括增、删及改的处理记录。
[0029]本发明还提供一种数据库迀移系统,其特点是,包括:
[0030]应用与开关单元,用于发布读应用和写应用,预埋用于切换所述读应用读的对象的第一开关和用于切换所述写应用写的对象的第二开关,所述读应用读的对象和所述写应用写的对象均默认为源数据库,所述第一开关和所述第二开关通过接收指令执行切换;[0031 ]所述数据库迀移系统还包括:
[0032]备份单元,用于将源数据库离线备份至离线数据库,以开始备份的时刻为时间起点记录所述源数据库的增量数据日志;
[0033]写入单元,用于将所述离线数据库的数据写入目标数据库;
[0034]第一更新单元,用于定时执行:根据所述源数据库的增量数据日志,更改所述目标数据库,直至所述目标数据库与所述源数据库的增量数据日志一致;
[0035]判断单元,用于判断是否为所述第一开关将所述读应用读的对象切换到所述目标数据库且所述第二开关将所述写应用写的对象切换到所述目标数据库,若是,则停止记录所述源数据库的增量数据日志,迀移完成,若否,则调用恢复单元;
[0036]恢复单元,用于通过所述第一开关将所述读应用读的对象恢复默认状态以及通过所述第二开关将所述写应用写的对象恢复默认状态;
[0037]获取单元,用于获取在所述读应用读的对象或所述写应用写的对象切换到所述目标数据库期间所述目标数据库的增量数据日志;
[0038]第二更新单元,用于定时执行:根据所述目标数据库的增量数据日志,更改所述源数据库;
[0039]排查单元,用于排查所述读应用读的对象和所述写应用写的对象未均切换到所述目标数据库的原因,修正,然后调用第一更新单元。
[0040]较佳地,所述写入单元用于将所述离线数据库的数据通过分片和计数技术写入所述目标数据库。
[0041 ]较佳地,所述写入单元还用于在所述离线数据库的数据写入目标数据库完毕后,收回所述离线数据库的编辑权限。
[0042]较佳地,所述数据库迀移系统还包括:
[0043]指令单元,用于在所述目标数据库与所述源数据库的数据一致时产生切换所述第一开关和所述第二开关的指令,以使得所述读应用读的对象和所述写应用写的对象均切换到所述目标数据库。
[0044]较佳地,所述增量数据日志包括增、删及改的处理记录。
[0045]在符合本领域常识的基础上,上述各优选条件,可任意组合,即得本发明各较佳实例。
[0046]本发明的积极进步效果在于:本发明能够在不影响源数据库的应用和用户的使用的前提下,实现数据迀移同步和生产验证时的及时回退。本发明还具有不限业务、不限数据库、不限数据结构、高可用等特点,实现大数据、大并发的数据无缝迀移,降低数据库的迀移过程中的性能消耗,保证在数据库的迀移过程中应用不会中断,有低耦合、高可用等优点。
【附图说明】
[0047]图1为本发明较佳实施例的数据库迀移方法的流程图。
[0048]图2为本发明较佳实施例的数据库迀移系统的系统框图。
【具体实施方式】
[0049]下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。
[0050]实施例
[0051 ] 一种数据库迀移方法,如图1所示,包括:
[0052]步骤101、发布读应用和写应用,预埋用于切换所述读应用读的对象的第一开关和用于切换所述写应用写的对象的第二开关,所述读应用读的对象和所述写应用写的对象均默认为源数据库,所述第一开关和所述第二开关通过接收指令执行切换。其中,所述读应用和写应用采用现有技术实现,分别用于读和写数据库。本实施例中读应用默认读源数据库,写应用默认写源数据库。
[0053]所述数据库迀移方法还包括:
[0054]步骤201、将源数据库离线备份至离线数据库,以开始备份的时刻为时间起点记录所述源数据库的增量数据日志。具体地,可以使用触发器或利用数据库本身读写分离功能,将源数据库的增量数据日志记录到指定的日志表中。所述增量数据日志包括增、删及改的处理记录。
[0055]步骤202、将所述离线数据库的数据写入目标数据库。具体地,可以将所述离线数据库的数据通过分片和计数技术写入所述目标数据库,这样能保证快速同步。步骤202还可以包括,在所述离线数据库的数据写入目标数据库完毕后,收回所述离线数据库的编辑权限。被收回编辑权限后,所述离线数据库就不能够被编辑。
[0056]步骤203、定时执行:根据所述源数据库的增量数据日志,更改所述目标数据库,直至所述目标数据库与所述源数据库的增量数据日志一致。具体地,可以通过计算机编程中的Job实现,启动Job消费日志表中增量数据日志,根据时间戳“追”源数据库的增量数据到目标数据库。所述目标数据库与所述源数据库的增量数据日志一致表明“追上”源数据库的增量数据,即此刻源数据库和目标数据库的数据理论上应该一致,但是由于数据同步或更改中也有可能出现错误,进而导致源数据库和目标数据库的数据不一致。在所述目标数据库与所述源数据库的数据一致时产生切换所述第一开关和所述第二开关的指令,以使得所述读应用读的对象和所述写应用写的对象均切换到所述目标数据库。
[0057]步骤204、判断是否为所述第一开关将所述读应用读的对象切换到所述目标数据库且所述第二开关将所述写应用写的对象切换到所述目标数据库,若是,则执行步骤205,若否,则执行步骤206ο即判断读/写应用是否均读/写目标数据库,若读/写应用均读/写目标数据库,则表明目标数据库与源数据库的数据一致且读/写应用已经由源数据库切换至目标数据库,否则,则表明源数据库和目标数据库不一致或者由于其它原因读/写应用还不能读/写目标数据库。
[0058]步骤205、停止记录所述源数据库的增量数据日志,迀移完成。
[0059]步骤206、通过所述第一开关将所述读应用读的对象恢复默认状态以及通过所述第二开关将所述写应用写的对象恢复默认状态。即将读/写应用均读/写源数据库。
[0060]步骤207、获取在所述读应用读的对象或所述写应用写的对象切换到所述目标数据库期间所述目标数据库的增量数据日志。
[0061 ]步骤208、定时执行:根据所述目标数据库的增量数据日志,更改所述源数据库。具体地,可以通过计算机编程中的Job实现,启动Job消费目标数据库的增量数据日志,根据时间戳回写目标数据库的增量数据到源数据库。这样能够保证源数据库数据的准确性。
[0062]步骤209、排查所述读应用读的对象和所述写应用写的对象未均切换到所述目标数据库的原因,修正,然后返回步骤203。本实施例的数据库迀移方法可以采用人工排查,具体的排查方式灵活多样,可以根据数据库的情况或需求自行安排。
[0063]本实施例的一种数据库迀移系统,如图2所示,包括:应用与开关单元301、备份单元302、写入单元303、第一更新单元304、指令单元305、判断单元306、恢复单元307、获取单元308、第二更新单元309和排查单元310。
[0064]应用与开关单元301,用于发布读应用和写应用,预埋用于切换所述读应用读的对象的第一开关和用于切换所述写应用写的对象的第二开关,所述读应用读的对象和所述写应用写的对象均默认为源数据库,所述第一开关和所述第二开关通过接收指令执行切换。其中,所述读应用和写应用采用现有技术实现,分别用于读和写数据库。本实施例中读应用默认读源数据库,写应用默认写源数据库。
[0065]备份单元302,用于将源数据库离线备份至离线数据库,以开始备份的时刻为时间起点记录所述源数据库的增量数据日志。具体地,可以使用触发器或利用数据库本身读写分离功能,将源数据库的增量数据日志记录到指定的日志表中。所述增量数据日志包括增、删及改的处理记录。
[0066]写入单元303,用于将所述离线数据库的数据写入目标数据库。具体地,可以将所述离线数据库的数据通过分片和计数技术写入所述目标数据库,这样能保证快速同步。写入单元还可以用于,在所述离线数据库的数据写入目标数据库完毕后,收回所述离线数据库的编辑权限。被收回编辑权限后,所述离线数据库就不能够被编辑。
[0067]第一更新单元304,用于定时执行:根据所述源数据库的增量数据日志,更改所述目标数据库,直至所述目标数据库与所述源数据库的增量数据日志一致。具体地,可以通过计算机编程中的Job实现,启动Job消费日志表中增量数据日志,根据时间戳“追”源数据库的增量数据到目标数据库。所述目标数据库与所述源数据库的增量数据日志一致表明“追上”源数据库的增量数据,即此刻源数据库和目标数据库的数据理论上应该一致,但是由于数据同步或更改中也有可能出现错误,进而导致源数据库和目标数据库的数据不一致。指令单元305,用于在所述目标数据库与所述源数据库的数据一致时产生切换所述第一开关和所述第二开关的指令,以使得所述读应用读的对象和所述写应用写的对象均切换到所述目标数据库。
[0068]判断单元306,用于判断是否为所述第一开关将所述读应用读的对象切换到所述目标数据库且所述第二开关将所述写应用写的对象切换到所述目标数据库,若是,则停止记录所述源数据库的增量数据日志,迀移完成,若否,则调用恢复单元307。即判断读/写应用是否均读/写目标数据库,若读/写应用均读/写目标数据库,则表明目标数据库与源数据库的数据一致且读/写应用已经由源数据库切换至目标数据库,否则,则表明源数据库和目标数据库不一致或者由于其它原因读/写应用还不能读/写目标数据库。
[0069]恢复单元307,用于通过所述第一开关将所述读应用读的对象恢复默认状态以及通过所述第二开关将所述写应用写的对象恢复默认状态。即将读/写应用均读/写源数据库。
[0070]获取单元308,用于获取在所述读应用读的对象或所述写应用写的对象切换到所述目标数据库期间所述目标数据库的增量数据日志。
[0071 ]第二更新单元309,用于定时执行:根据所述目标数据库的增量数据日志,更改所述源数据库。具体地,可以通过计算机编程中的Job实现,启动Job消费目标数据库的增量数据日志,根据时间戳回写目标数据库的增量数据到源数据库。这样能够保证源数据库数据的准确性。
[0072]排查单元310,用于排查所述读应用读的对象和所述写应用写的对象未均切换到所述目标数据库的原因,修正,然后调用第一更新单元。所述排查单元可以采用人工排查,具体的排查方式灵活多样,可以根据数据库的情况或需求自行安排。
[0073]通过本实施例的数据库迀移方法及系统,源数据库的数据可以无缝迀移至目标数据库中,适用任何同构或异构DB的迀移。
[0074]虽然以上描述了本发明的【具体实施方式】,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。
【主权项】
1.一种数据库迀移方法,其特征在于,包括: T1、发布读应用和写应用,预埋用于切换所述读应用读的对象的第一开关和用于切换所述写应用写的对象的第二开关,所述读应用读的对象和所述写应用写的对象均默认为源数据库,所述第一开关和所述第二开关通过接收指令执行切换; 所述数据库迀移方法还包括: S1、将源数据库离线备份至离线数据库,以开始备份的时刻为时间起点记录所述源数据库的增量数据日志; &、将所述离线数据库的数据写入目标数据库; 53、定时执行:根据所述源数据库的增量数据日志,更改所述目标数据库,直至所述目标数据库与所述源数据库的增量数据日志一致; 54、判断是否为所述第一开关将所述读应用读的对象切换到所述目标数据库且所述第二开关将所述写应用写的对象切换到所述目标数据库,若是,则执行&,若否,则执行S6; 55、停止记录所述源数据库的增量数据日志,迀移完成; 56、通过所述第一开关将所述读应用读的对象恢复默认状态以及通过所述第二开关将所述写应用写的对象恢复默认状态; 57、获取在所述读应用读的对象或所述写应用写的对象切换到所述目标数据库期间所述目标数据库的增量数据日志; 58、定时执行:根据所述目标数据库的增量数据日志,更改所述源数据库; 59、排查所述读应用读的对象和所述写应用写的对象未均切换到所述目标数据库的原因,修正,然后返回S3。2.如权利要求1所述的数据库迀移方法,其特征在于,S2包括:将所述离线数据库的数据通过分片和计数技术写入所述目标数据库。3.如权利要求1或2所述的数据库迀移方法,其特征在于,S2还包括:在所述离线数据库的数据写入目标数据库完毕后,收回所述离线数据库的编辑权限。4.如权利要求1所述的数据库迀移方法,其特征在于,所述数据库迀移方法还包括:在所述目标数据库与所述源数据库的数据一致时产生切换所述第一开关和所述第二开关的指令,以使得所述读应用读的对象和所述写应用写的对象均切换到所述目标数据库。5.如权利要求1所述的数据库迀移方法,其特征在于,所述增量数据日志包括增、删及改的处理记录。6.一种数据库迀移系统,其特征在于,包括: 应用与开关单元,用于发布读应用和写应用,预埋用于切换所述读应用读的对象的第一开关和用于切换所述写应用写的对象的第二开关,所述读应用读的对象和所述写应用写的对象均默认为源数据库,所述第一开关和所述第二开关通过接收指令执行切换; 所述数据库迀移系统还包括: 备份单元,用于将源数据库离线备份至离线数据库,以开始备份的时刻为时间起点记录所述源数据库的增量数据日志; 写入单元,用于将所述离线数据库的数据写入目标数据库; 第一更新单元,用于定时执行:根据所述源数据库的增量数据日志,更改所述目标数据库,直至所述目标数据库与所述源数据库的增量数据日志一致; 判断单元,用于判断是否为所述第一开关将所述读应用读的对象切换到所述目标数据库且所述第二开关将所述写应用写的对象切换到所述目标数据库,若是,则停止记录所述源数据库的增量数据日志,迀移完成,若否,则调用恢复单元; 恢复单元,用于通过所述第一开关将所述读应用读的对象恢复默认状态以及通过所述第二开关将所述写应用写的对象恢复默认状态; 获取单元,用于获取在所述读应用读的对象或所述写应用写的对象切换到所述目标数据库期间所述目标数据库的增量数据日志; 第二更新单元,用于定时执行:根据所述目标数据库的增量数据日志,更改所述源数据库; 排查单元,用于排查所述读应用读的对象和所述写应用写的对象未均切换到所述目标数据库的原因,修正,然后调用第一更新单元。7.如权利要求6所述的数据库迀移系统,其特征在于,所述写入单元用于将所述离线数据库的数据通过分片和计数技术写入所述目标数据库。8.如权利要求6或7所述的数据库迀移系统,其特征在于,所述写入单元还用于在所述离线数据库的数据写入目标数据库完毕后,收回所述离线数据库的编辑权限。9.如权利要求6所述的数据库迀移方法,其特征在于,所述数据库迀移系统还包括: 指令单元,用于在所述目标数据库与所述源数据库的数据一致时产生切换所述第一开关和所述第二开关的指令,以使得所述读应用读的对象和所述写应用写的对象均切换到所述目标数据库。10.如权利要求6所述的数据库迀移系统,其特征在于,所述增量数据日志包括增、删及改的处理记录。
【文档编号】G06F17/30GK105868343SQ201610183655
【公开日】2016年8月17日
【申请日】2016年3月28日
【发明人】周源, 陈秋成, 张妮, 冯毅
【申请人】上海携程商务有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1