适用场景
数据库迁移的风险集中在两点:数据一致性与不可逆的版本变更。上线前必须回答"如果失败,多久能回到原状态"。
配置步骤(同构迁移(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
- 巡检:延迟为零、校验无差异、原库保留只读
小结
迁移完成的标准不是"能连上",而是"业务验证通过 + 数据校验一致 + 观察期无异常"。三者齐备才结束迁移。
> 说明:文中命令为通用写法,不同型号/版本可能略有差异,落地前请对照设备实际版本的官方文档;带外管理与安全设备变更建议先在测试设备验证。