articleList

37-Sharding-Jdbc 分库分表-二次扩容实施方案讲解

2025/03/13 posted in  ShardingJDBC
Tags: 

  • 方式一

    • 利用数据库主从同步
      image-20211128163954778
    • 新增两个数据库 A2、A3 作为从库,设置主从同步关系为:A0=>A2、A1=>A3
    • 开启主从数据同步,早期数据手工同步过去
    • 发布新程序,某个时间点开始,利用MQ存储CUD操作
    • 关闭数据库实例的主从同步关系
    • 校验数据,消费原先MQ存储CUD操作,配置新分片规则和生效
    • 数据校验和修复
      • 依赖gmt_modified字段,所以常规数据表都需要加这个字段
      • 由数据库自己维护值,根据业务场景,进行修复对应的数据
      • 校验步骤
        • 开始迁移时间假如是2022-01-01 00:00:00
        • 查找 gmt_modified数据校验修复大于开始时间点,就是修改过的数据
    • 各个节点的冗余数据进行删除
    • 缺点
      • 同步的很多数据到最后都需要被删除
      • 一定要提前做,越晚做成本越高,因为扩容期间需要存储的数据更多
      • 基本都离不开代码侵入,加锁等操作
    • 优点
      • 利用mysql自带的主从同步能力
      • 方案简单,代码量相对少
  • 方式二

    • 小滴课堂-老王的最佳选择,对外发布公告,停机迁移
    • 严格一致性要求:比如证券、银行部分数据等
    • 优点:最方便、且安全
    • 缺点
      • 会造成服务不可用,影响业务
      • 根据停机的时间段,数据校验人员有压力