在不停机条件下需要对数据的迁移或者扩容,这里推荐我们常用的一种方案,也就是在线双写的机制。
1、通过在写原有的数据库的同时也写一份数据到我们的新的库表中。
2、同样写一个后台迁移数据的程序,将我们的旧库的数据通过我们的数据库中间件迁移到新的多库表中。
3、在迁移的过程中,每次插入数据的时候,还需要检测数据的更新情况。比如,如果新的表中没有当前的数据,则直接新增;如果新表有数据并没有我们要迁移的数据新的话,我们就更新为当前数据,只能允许新的数据覆盖旧的数据(这里其实推荐使用Canal这样的数据库同步中间件对增量更新做同步)。
4、经过一轮之后,也就是假如旧表中1000万条旧数据迁移完之后,我们就需要进行校验,校验两边数据是否是一模一样的。
5、这样反复的跑了几天之后,就数据库和新的数据库肯定是会一模一样的,最后观察下数据正常了,就可以停掉旧库的写入动作了。
网友评论