从老库切换到新库的数据写入问题

1、背景

原先把部分数据data写入到老的数据库table_a,然后要把table_a废弃了,希望把这部分数据data写入到新数据库table_b。

2、没有经验的我,刚开始的想法是,这还不简单,直接把数据写入table_a的代码换成写入到table_b?
3、在生产环境上,这样做太草率了,那你怎么处理接下来的两个问题:

  • 问题一:怎么保证写入table_b的数据是正确的?
  • 问题二:万一写入table_b出问题了怎么办?

4、稍会有工作经验的人,可能想到了使用灰度写入,灰度内写入到table_b,灰度外写入到table_a,这是稍微保险的方式,如果发现写入的数据有问题,可以直接把灰度关了走老逻辑。但是这种方式只解决了问题二,问题一呢?

5、终极解决方案是:
先开始双写模式,即同时把数据写入到两张表中,经过一段时间后,手动或者脚本比对新写入的数据是否正确,注意写入table_b的操作最好trycatch异常,否则由于写入到table_b的问题影响到了正常流程,这是在生产环境不允许的,这个阶段即使写入到table_b失败,只要table_a还有正确数据就行;
如果写入table_b的数据能保证是正确的情况,然后,使用灰度将双写模式慢慢切换到只写入新表table_b中;
最后,将table_a中的老数据同步到table_b,这样就完美的将数据从老数据库切换到新数据库了,切库逻辑就是如此。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值