前面发过一篇分库分表的文章,展示了批量变更分库分表的方法(详见《如何通过一条 SQL 变更多个分库分表》),这次我们再来聊另一个分库分表相关的话题:如何迁移多个分库分表的数据到其他分库分表,或者将多个分库分表聚合到一个表中。
对于实行分库分表的企业来说,这应该算是刚需,为什么是刚需?我来举几个实际场景的例子。
业务持续增长,初期分库分表方案难以满足需求
分片策略调整(Re-Sharding)
最初的分库分表策略是按照买家 ID 进行分片的,但随着业务的深入,发现用卖家 ID 进行分片更加合适,这种情况下,需要先重新调整分片逻辑,再将原来的数据迁移到新的分库分表中。
上述场景都是比较常见的分库分表迁移需求,虽说是刚需,支持这种场景的好用的工具却不多,主要原因在于分库分表的复杂性涉及数据分片、业务逻辑、数据一致性等多方面问题。
在这里提供一个简单且实用的方法,用 NineData 的库表分组功能结合其强大的数据复制功能,轻松解决上述问题。
我们先来看一下 NineData 解决该问题的流程。
1
直接开整
1. 创建库表分组:根据业务的分库分表逻辑创建库表分组。
源库的分库分表配置。
目标库的分库分表配置。
2. 创建数据复制任务:创建数据复制任务,源和目标分别选择上面创建的库表分组即可 。
3. 查看迁移结果:任务跑完后,可以查看源和目标的对比结果,至此源分库分表中的数据已经按照目标的路由算法依次迁移到目标分库分表中,任务顺利完成。
2
最后