1.上线同步程序:主要负责新老数据库之间的实时同步,分批同步,避免对线上数据库(新库)造成压力 ,验证数据一致,再进行下一步,否则(回滚策略是),修复同步程序,使其新旧库的数据一致
2.对订单服务进行改造后然后发版上线新功能,使其支持双写开关功能;具体如下:
开关种类:热切换写开关,热切读开关
写开关有3个状态值:1只写旧库,2只写新库,3双写(新库旧库一块写)
读开关:1只读旧库 2只读新库
在订单服务的DAO进行改造,业务的核心逻辑不变,开关配置到配置文件,可以动态修改切换
观察一段时间,验证新的订单服务ok,再进行下一步,否则回滚到上个版本的代码即可
3.下线同步程序,开启热切换写开关,具体如下:
先开启写开关3双写,与此同时,上线比对补偿程序进行数据对比和补偿,比对就是按着主键分条比对数据,不一致的覆盖写,以旧数据为准覆盖写新数据库,否则,如果数据还是不一致,修复比对补偿逻辑程序,热切换写开关切回到热切换写开关: 1只写旧库
4.运行一段时间,磨合稳定好,将热切换读开关开启,慢慢的将流量切到新数据进行读请求,期间有问题的话,直接切换热切换读开关: 1只读旧库
5.再运行一段时间,系统没问题后,下线比对补偿程序,同时设置热切换写开关为:2只写新库
6.运行一段时间没问题后,旧库下线,带双写功能的订单服务下线
整个过程,为了保证数据的安全,需要有回滚策略
这一节内容多而且杂乱,希望读者多读几遍,细心揣摩
设计在线切换数据的方案时候,首先要保证数据的安全性,确保每个步骤失败,要能回滚到上个安全状态,为了不能丢数据,可以分批分步的进行迁移,并且每个阶段要有验证和补偿机制:主要实时同步程序和比对补偿程序实现
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。