适用场景

分库分表是"最后手段":先优化索引与 SQL、再加缓存与只读实例,最后才考虑拆分。因为拆分之后,跨库查询与事务都会成为长期成本。

配置步骤(拆分迁移与数据校验)

# 1) 双写阶段:新老库同时写,读走老库
# 2) 存量迁移:按分片键批量搬迁(分批、限速)
# 3) 增量追平:binlog 同步
# 4) 校验:行数、校验和、抽样比对
# 5) 切读:灰度切流,观察错误率

关键参数与建议

  • 拆分时机:单表数据量、写入压力、单机容量达到瓶颈
  • 拆分维度:按业务(订单/用户)、按时间(月份)、按哈希(用户 ID)
  • 分片键选择:高频查询条件优先,避免跨分片查询
  • 全局唯一 ID:雪花算法或号段模式
  • 跨分片查询:尽量在应用层聚合,避免中间件复杂 JOIN

容易踩的坑

  • 一次全量搬迁,业务高峰受影响
  • 不做数据校验,切读后出现数据缺失
  • 切读一次性完成,出问题无法快速回退

验证与巡检

# 验证:源表与目标表行数、min/max 主键、抽样字段比对
  • 巡检:校验报告、切流记录与回滚预案

小结

分库分表的验收:写入压力分摊、热点分片可控、跨分片查询有明确方案与性能数据。没有数据的拆分是拍脑袋。

> 说明:文中命令为通用写法,不同型号/版本可能略有差异,落地前请对照设备实际版本的官方文档;带外管理与安全设备变更建议先在测试设备验证。