适用场景

数据库迁移的风险集中在两点:数据一致性与不可逆的版本变更。上线前必须回答"如果失败,多久能回到原状态"。

配置步骤(同构迁移(MySQL 到 MySQL))

# 1) 全量导出导入
mysqldump -h old -uroot -p --single-transaction --routines --triggers db | gzip > db.sql.gz
# 2) 增量追平(binlog 同步或 GTID 复制)
CHANGE MASTER TO MASTER_HOST='old', MASTER_AUTO_POSITION=1;
# 3) 校验
pt-table-checksum --host=old --databases=db

关键参数与建议

  • 方案选择:小库可停机迁移,大库用双写/复制实现不停机
  • 兼容验证:SQL 语法、字符集、排序规则、驱动版本、连接参数
  • 迁移窗口:业务低峰,预留 1.5 倍时间
  • 校验:行数、校验和、业务抽样、关键报表比对
  • 回滚:原库保留只读、回滚脚本准备好并演练

容易踩的坑

  • 只做全量不做增量,切换时丢数据
  • 未校验一致性,切后发现数据缺失
  • 原库立即下线,回滚无路

验证与巡检

SHOW SLAVE STATUS\G | grep -i behind
  • 巡检:延迟为零、校验无差异、原库保留只读

小结

迁移完成的标准不是"能连上",而是"业务验证通过 + 数据校验一致 + 观察期无异常"。三者齐备才结束迁移。

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