分库分表如何进行数据扩容?

数据扩容

扩容挑战
  1. 基因位数增加:扩容可能会导致基因位增加,导致原来的基因路由规则失效

  2. 新旧基因兼容:迁移过程中,新写入的数据必须同时按照新规则和旧规则分别写入

两种执行方案
  1. 暂停所有服务,迁移完数据之后再重启服务

  2. 服务运行的同时进行数据迁移,此时要用到双写方案

双写与基因升级

结合数据迁移和基因升级,整个过程要求应用程序支持同时向新旧两个分片集群写入数据

详细流程
准备工作
  1. 部署新集群:搭建好包含新的分片个数的新MySQL集群

  2. 升级应用代码:开发并发布支持双写的新版本应用代码。代码需要:

    • 新的路由逻辑:支持新的分片,数据能按照新的分片规则写入新的基因库。

    • 双写逻辑:对于任何写操作(增、删、改),在写入旧分片数据库的同时,也必须写入新的数据库

    • 读逻辑降级:完成数据迁移前,读请求仍然从旧集群读取,以保证数据一致性。

数据校验
  • 从旧的数据库集群逐个读取数据,对于每条数据,计算新的分片位置,并将数据插入到新的集群中

  • 在迁移过程中,旧集群数据一直在被修改,迁移工具还需要记录一个Binlog位置点,全量迁移完成后,继续同步这个点之后的增量数据,知道追平

数据校验
  1. 编写数据校验工具,对比新旧集群的数据一致性

  2. 逐条检查核心字段是否一致。

  3. 修复校验过程中不一致的数据

流量切换
  1. 灰度读验证:选择一个非核心业务或少量用户,将其流量切换到新集群,检查业务是否正常,数据是否准确

  2. 全面读切换:灰度验证无误之后,将全部流量切换到新集群,此时,流量仍然保持双写

  3. 最终验证:观察一段时间后,确定新集群能够承受所有流量后一切正常

  4. 停写旧集群:关闭旧集群的双写逻辑,只写入新集群,新集群成为主集群

清理监控
  1. 监控新集群

  2. 下线旧集群:确认业务稳定后,保留旧集群一段时间后再物理删除,以备回滚

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值