喝茶聊方案:分库分表双倍扩容方案

266 阅读1分钟

分库分表双倍扩容方案

采用双倍扩容策略,避免数据迁移。 扩容前每个节点的数据,有一半要迁移至一个新增节点中,对应关系比较简单。 具体操作如下(假设已有 2 个节点 A/B,要双倍扩容至 A/A2/B/B2 这 4 个节点): image.png 无需停止应用服务器;

新增数据库并同步

新增两个数据库 A2/B2 作为从库,设置主从同步关系为:A=>A2、B=>B2,直至主从数据同步完毕(早期数据可手工同步); image.png

调整分片规则并使之生效:

原 ID%2=0 => A 改为 ID%4=0 => A, ID%4=2 => A2; 原 ID%2=1 => B 改为 ID%4=1 => B, ID%4=3 => B2。 image.png

解除主从同步

解除数据库实例的主从同步关系,并使之生效; 此时,四个节点的数据都已完整,只是有冗余(多存了和自己配对的节点的那部分数据),择机清除即可(过后随时进行,不影响业务)。

注意

如果担心分片规则扩容时候有问题需要回滚,则也需要考虑双写切换,具体可参考
喝茶聊方案:分库分表方案之数据迁移