随着业务量上升,原本一台机器上的多个相关业务去查询不同的db,这时想把其中一个或者db独立出去,迁移到新机器上去,但是要求不能停掉业务。
一.最先想到的就是将新的db设置为准备要迁移的db的副本集,待同步完成后,将新的db独立出来提供服务,但后来了解到,独立的期间需要修改配置,此时是处于下线的,不能写,所以就会丢掉几十分钟的数据,这是不能接受的。
二.建立后新的db集群后,双写db,具体步骤如下
1、调整代码,数据库双写
2、脚本全量跑数据,迁移数据到新机器,新机器添加索引
3、调整代码,数据库单写新机器
三.这种方式感觉需要跑全库,如果数据量很大就感觉需要很久才能跑完,想出了一下可以优化的地方
1、导出现有数据,导入到新机器的db
2、调整代码,数据库双写
3、脚本跑旧库倒入因为时间差而缺少的数据(从执行备份开始->双写开始,因为边界的问题可以提前,然后几分钟)
4、调整代码,数据库单写新机器
5、再跑一遍脚本