之前有写过mongodb不停机迁移库思路https://blog.csdn.net/qq_28119741/article/details/89482676
但这次不仅是迁库,而且要重构代码,要搞一个新服务出来,db要迁移到新库中,要求不停机无故障,完成新服务上线和数据迁移,数据量是亿级别的。
大概讲下业务场景:一个阅读数的功能,只有add,判断是否读过,如果没有计数+1,存储用的mongodb
- 停机迁移:
功能暂停指的是:停止对数据库进行读和写,系统返回降级数据或随机数据。
先创建新服务,新服务只做转发,将所有的读、写请求转发到老系统(老系统最终会下掉)
=> 提前写好数据迁移脚本
=> 功能暂停
=> 跑迁移脚本,完成数据迁移
=> 上线新系统和新存储。 - 不停机迁移。
方法一:先创建新服务,新服务只做转发,将所有的读、写请求转发到老系统
=> 将所有对老系统的调用,改为调用新系统
=> 新系统实现单写双读
=> 跑数据迁移脚本,完成数据迁移,做阅读用户的merge
=> 系统实现单读单写,只对新库读写,去掉旧库的操作
=> 迁移完成。
方法二:改旧代码
=>多一个操作就是写新库(双写单读就库)
=>将迁库脚