数据库分库分表生产环境怎么实现不停机数据迁移或者扩容的?

在不停机条件下需要对数据的迁移或者扩容,这里推荐我们常用的一种方案,也就是在线双写的机制。

1、通过在写原有的数据库的同时也写一份数据到我们的新的库表中。

2、同样写一个后台迁移数据的程序,将我们的旧库的数据通过我们的数据库中间件迁移到新的多库表中。

3、在迁移的过程中,每次插入数据的时候,还需要检测数据的更新情况。比如,如果新的表中没有当前的数据,则直接新增;如果新表有数据并没有我们要迁移的数据新的话,我们就更新为当前数据,只能允许新的数据覆盖旧的数据(这里其实推荐使用Canal这样的数据库同步中间件对增量更新做同步)。

4、经过一轮之后,也就是假如旧表中1000万条旧数据迁移完之后,我们就需要进行校验,校验两边数据是否是一模一样的。

5、这样反复的跑了几天之后,就数据库和新的数据库肯定是会一模一样的,最后观察下数据正常了,就可以停掉旧库的写入动作了。

posted @ 2020-11-20 09:40  gaopengpy  阅读(1873)  评论(0编辑  收藏  举报