一种不停机迁移数据库的方法技术

技术编号:38674812 阅读:14 留言:0更新日期:2023-09-02 22:50
本发明专利技术涉及数据库迁移技术领域,且公开了一种不停机迁移数据库的方法,具体步骤包括:S40、建立新旧数据库的数据双向同步;S41、检测新旧数据库的数据同步速度与质量,如通过检测则进行下一步骤,如未通过检测,则停止迁移,并结束操作。该不停机迁移数据库的方法,通过该方法进行数据迁移,数据同步严格遵循行业数据库主从同步方案,保证了数据的正确性和完整性,双向同步也为后续回滚提供便利通道;借助MySQL Binlog特性衍生出一种高效查询数据同步进度的方法,支撑应用工程毫秒级割接新数据库,对正在运行的业务造成影响非常少甚至没有,对用户是无感知的,从而做到不停机迁移数据。据。据。

【技术实现步骤摘要】
一种不停机迁移数据库的方法


[0001]本专利技术涉及数据库迁移
,具体为一种不停机迁移数据库的方法。

技术介绍

[0002]当业务持续发展,数据量和并发量达到一定程度,数据库可能面临性能、可扩展性、可用性等问题,从而衍生出业务拆分、数据库重选型、上云、硬件设备维护等迁移需求,支撑业务往更高层次发展。
[0003]数据库迁移是个大任务,有的时候迁移并不亚于开发一套新系统的难度,甚至可以说是有过之而无不及,数据是一个系统的核心且最具备价值,数据库迁移应该保证数据的正确性与完整性;在互联网行业,很多系统的访问量很高,即便在凌晨两三点也有一定的访问量,数据库迁移应该保证不影响用户体验;迁移后如果出现性能和稳定性等问题,数据库迁移应该保证能够快速回滚;
[0004]在现有的数据库迁移技术中,通常面临着应用停机维护,方案技术落后且效率低下,对用户造成很不好的用户体验,对企业造成一定经济损失,而且出现问题时回滚同样面临停机维护,也有技术团队采取双写方案,但投入成本高,由于没有预留扩展性等技术设计问题,实现难度高,需要投入许多人力财力对现有业务进行重构,实施复杂度高且周期长,很容易导致现有业务不稳定等系列问题。
[0005]故而提出一种不停机迁移数据库的方法来解决上述问题。

技术实现思路

[0006](一)解决的技术问题
[0007]针对现有技术的不足,本专利技术提供了一种不停机迁移数据库的方法,是一套从应用改造、到数据同步、再到数据库流量切换的可实施迁移方案,低成本投入即可获得数据库迁移能力,帮助业务进一步发展,解决了目前现有的数据库迁移技术使用效果不佳的问题。
[0008](二)技术方案
[0009]本专利技术解决上述技术问题的技术方案如下:一种不停机迁移数据库的方法,具体步骤包括:
[0010]S40、建立新旧数据库的数据双向同步;
[0011]S41、检测新旧数据库的数据同步速度与质量,如通过检测则进行下一步骤,如未通过检测,则停止迁移,并结束操作;
[0012]S42、向分布式配置中心提交旧数据源的SQL停写规则,并由ORM层停写组件负责解析;
[0013]S43、判断一定时间内的旧库事务是否在新增,如未新增,则进行下一步骤,如在新增,则回滚SQL停写规则,再停止迁移,并结束操作;
[0014]S44、往旧库的迁移辅助表插入一条数据data2,再从新库的迁移辅助表指定查询插入的数据data2,如查询到,则进行下一步骤,如未查询到,则回滚SQL停写规则,再停止迁
移,并结束操作。
[0015]S45、向分布式配置中心提交数据源重路由规则,并由数据源重路由组件负责解析,生效之后待迁移表的SQL都由新数据源执行,完成旧库迁移至新库操作。
[0016]本专利技术的有益效果是:通过该方法进行数据迁移,数据同步严格遵循行业数据库主从同步方案,保证了数据的正确性和完整性,双向同步也为后续回滚提供便利通道;借助MySQL Binlog特性衍生出一种高效查询数据同步进度的方法,支撑应用工程毫秒级割接新数据库,对正在运行的业务造成影响非常少甚至没有,对用户是无感知的,从而做到不停机迁移数据。
[0017]在上述技术方案的基础上,本专利技术还可以做如下改进。
[0018]进一步,还包括:
[0019]S46、判断数据迁移过程是否稳定,如稳定,则进行下一步骤,如不稳定,则回滚,并结束操作;
[0020]S47、确定迁移后新数据库运行稳定后回收上述涉及的相关资源,并结束操作。
[0021]进一步,所述步骤S40中建立新旧数据库的数据双向同步的具体过程如下:
[0022]利用数据同步工具建立新旧数据库的数据双向同步;
[0023]其中,同一个时刻内只有一个数据库执行增删改SQL。
[0024]进一步,所述步骤S41中检测新旧数据库的数据同步速度与质量的具体过程如下:
[0025]借助JDBC工具创建新旧数据库的联系,往旧库的迁移辅助表插入一条数据data1,再从新库的迁移辅助表指定查询插入的数据data1,获取时长并与预设时长比对;
[0026]如低于预设时长则进行下一步骤;
[0027]如高于预设时长,则停止迁移,并结束操作。
[0028]进一步,所述步骤S42中ORM层停写组件负责解析仅对旧数据源生效,生效之后不会再有写事务往数据库提交。
[0029]进一步,所述步骤S42中ORM层停写组件负责解析的具体过程如下:
[0030]S10、实时获取分布式配置中心的停写规则配置并解析,将规则中数据源标识和表名拼接作为钥匙,目的新数据源作为值,缓存到内存Map,时间复杂度O(1);
[0031]S11、执行增删改SQL时通过在ORM层实时拦截解析SQL;
[0032]S12、运行时通过AOP技术解析数据源注解,获取数据源标识;
[0033]S13、借助Alibaba Druid工具高效实时解析出SQL中的表名;
[0034]S14、基于S12和S13的处理后,将数据源标识和数据表名拼接作为钥匙,在内存规则中查询是否命中停写规则;
[0035]S15、如果命中规则,直接抛出异常,不允许执行,并结束操作,如果未命中规则,则放行,并结束操作。
[0036]进一步,所述步骤S43中判断一定时间内的旧库事务是否在新增的具体过程如下:
[0037]往旧数据库获取非只读事务ID列表transcation_ids作为基准线,之后周期性查询旧数据库当前非只读事务列表;
[0038]如transcation_ids不在其中,则未有新增进行下一步骤;
[0039]如周期性查询过程超出预期时长,则有新增,即SQL停写规则,终止本次迁移,并结束操作。
[0040]进一步,所述步骤S45中由数据源重路由组件负责解析完成旧库迁移至新库操作的具体过程如下:
[0041]S20、处理应用工程代码,数据源组件增加新数据源配置;
[0042]S21、执行SQL时通过在ORM层实时拦截解析SQL,如果已开启事务则直接放行;
[0043]S22、运行时通过AOP技术解析数据源注解,获取数据源标识;
[0044]S23、借助Alibaba Druid工具高效实时解析出SQL中的表名;
[0045]S24、基于S22和S23的处理后,拼接数据源标识和表名作为钥匙,在内存中规则中查询是否命中重路由规则;
[0046]S25、如果命中规则,则将命中规则的值作为最终执行该SQL的数据源,达到SQL重路由效果。
[0047]进一步,还包括:
[0048]S30、在事务方法上添加数据源注解、重路由注解;其中,数据源注解与重路由注解分开设计便于后续清理工作,重路由注解携带标识mark能够支持多批次迁移;
[0049]S31、运行时通过AOP技术解析数据源注解,获取数据源本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种不停机迁移数据库的方法,其特征在于:具体步骤包括:S40、建立新旧数据库的数据双向同步;S41、检测新旧数据库的数据同步速度与质量,如通过检测则进行下一步骤,如未通过检测,则停止迁移,并结束操作;S42、向分布式配置中心提交旧数据源的SQL停写规则,并由ORM层停写组件负责解析;S43、判断一定时间内的旧库事务是否在新增,如未新增,则进行下一步骤,如在新增,则回滚SQL停写规则,再停止迁移,并结束操作;S44、往旧库的迁移辅助表插入一条数据data2,再从新库的迁移辅助表指定查询插入的数据data2,如查询到,则进行下一步骤,如未查询到,则回滚SQL停写规则,再停止迁移,并结束操作。S45、向分布式配置中心提交数据源重路由规则,并由数据源重路由组件负责解析,生效之后待迁移表的SQL都由新数据源执行,完成旧库迁移至新库操作。2.根据权利要求1所述的一种不停机迁移数据库的方法,其特征在于:还包括:S46、判断数据迁移过程是否稳定,如稳定,则进行下一步骤,如不稳定,则回滚,并结束操作;S47、确定迁移后新数据库运行稳定后回收上述涉及的相关资源,并结束操作。3.根据权利要求1所述的一种不停机迁移数据库的方法,其特征在于:所述步骤S40中建立新旧数据库的数据双向同步的具体过程如下:利用数据同步工具建立新旧数据库的数据双向同步;其中,同一个时刻内只有一个数据库执行增删改SQL。4.根据权利要求1所述的一种不停机迁移数据库的方法,其特征在于:所述步骤S41中检测新旧数据库的数据同步速度与质量的具体过程如下:借助JDBC工具创建新旧数据库的联系,往旧库的迁移辅助表插入一条数据data1,再从新库的迁移辅助表指定查询插入的数据data1,获取时长并与预设时长比对;如低于预设时长则进行下一步骤;如高于预设时长,则停止迁移,并结束操作。5.根据权利要求1所述的一种不停机迁移数据库的方法,其特征在于:所述步骤S42中ORM层停写组件负责解析仅对旧数据源生效,生效之后不会再有写事务往数据库提交。6.根据权利要求1所述的一种不停机迁移数据库的方法,其特征在于:所述步骤S42中ORM层停写组件负责解析的具体过程如下:S10、实时获取分布式配置中心的停写规则配置并解析,将规则中数据源标识和表名拼接作为钥匙,目的新数据源作为值,缓存到内存M...

【专利技术属性】
技术研发人员:李海鸿
申请(专利权)人:广州埋堆堆科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1