分库分布的几件小事(二)如何进行分库分表的数据迁移

1.停机迁移方案

这是最简单的也是最low的迁移方案了,如果系统就算短期停机也没有关系或者造不成多大的影响,可以选用此方案。

首先停掉机器,将系统全都停掉,不要再有新的数据进来,然后使用之前写好的程序,连接旧的数据库,将旧数据库里面的数据读出来,然后通过数据分发中间件写到分库分好的数据里面去。然后修改系统是数据库连接、分库分表配置,然后重新上线。

2.双写不停机迁移方案

双写迁移方案的核心在双写,首先要修改系统所有需要写库的地方,将虽有对数据的写操作不但要写入就库,也要同时写入新库。

然后使用写好的数据迁移程序,去读取老数据库的数据写入到新的数据库里面去,写的时候要根据数据的最后更新时间去判断数据,如果读出来的数据新库没有直接写入,如果新库也有,查看最后更新时间,旧库的新就覆盖写入,如果新库的新就放弃这条数据。

导完一轮数据之后,有可能数据还是存在不一致,那么就写个程序做一轮校验,对比老库和新库的每条数据,如果存在不一样的,就针对这些不一样的,再次去进行数据同步。反复循环,直到数据完全一致。

接着当数据完全一致了,就ok了,基于仅仅使用分库分表的最新代码,重新部署一次,不就仅仅基于分库分表在操作了么,还没有几个小时的停机时间,很稳。所以现在基本玩儿数据迁移之类的,都是这么干了。

posted @ 2019-05-25 23:22  一条路上的咸鱼  阅读(2856)  评论(0编辑  收藏  举报