随着业务发展,总会出现一些系统重构及数据迁移,为了能最大限度的减少代码介入及平滑实现,最常见的方案为双写法。
1.在某个访问低峰期间将老库数据同步到新库。
2.写操作同时作用在新库和老库上,读操作仍然读老库。
3.运行一段时间,观察新库和老库数据一致性。
4.停掉老库读写操作,读写全部转移到新库。
为了保证数据的一致性,在最后切库之前,还是需要进行数据一致性校验的。为了更加保险,我们最好一开始就加入abtest这种方法,即线上加入开关配置,能实时测试及检验。
线上的数据操作需要慎之又慎,一旦出错就很难回滚,一般情况下我们最好能先出方案讨论,包含如下几点:
- 是否能平滑过渡
- 是否有验证方法
- 是否有回滚方案