跳到主要内容

分库分表扩容迁移流程图

此章节是将扩容过程中,如何将数据迁移新表、更新虚拟分片路由表、清除旧表数据的每个步骤整理成了流程图中

⚠️核心策略说明:
本扩容方案使用 用户ID 而非订单号来计算虚拟分片ID,确保同一用户的所有订单保持在同一张表中。

原因:

  • 订单号虽然包含用户ID基因位,但 orderNumber % 128 ≠ userId % 128
  • 如果按订单号判断,同一用户的订单会被分散到不同表
  • 使用用户ID判断,保证数据聚合性和查询性能

关于每个步骤的代码以及详细讲解,可以跳转到:虚拟分片的分库分表扩容流程解析

1. 总体流程图

2. 单库迁移流程

3. 单表迁移详细流程

4. 完整迁移流程(核心)

5. 数据迁移详细流程

6. HintManager 强制路由机制

7. 虚拟分片路由原理

8. 路由表更新过程

9. 数据清理流程

10. 异常回滚流程

11. 完整扩容时序图

12. 虚拟分片分配图

颜色说明

  • 🔵 浅蓝色 (#e3f2fd):开始节点、输入节点
  • 🟢 浅绿色 (#c8e6c9):成功节点、完成节点
  • 🔴 浅红色 (#ffcdd2):失败节点、异常节点
  • 🟣 浅紫色 (#f3e5f5, #e1bee7):初始化节点、处理节点、计算节点
  • 🔵 蓝色 (#bbdefb):查询操作、数据库读取
  • 🌸 粉色 (#f8bbd0, #fce4ec):数据插入、路由更新
  • 🟠 浅橙色 (#ffe0b2):游标更新、控制节点
  • 🔴 橙红色 (#ffccbc):删除操作、回滚节点