MySQL主从迁移需分四阶段:一评估现状(版本、复制方式、延迟等);二部署新环境并同步数据;三无感切换(锁表、切流量、启复制);四验证一致性与稳定性。
迁移 MySQL 主从架构不是简单地搬数据,核心是保障复制链路不断、数据一致、服务不中断。关键在于分阶段操作:先评估现状,再搭建新环境,接着平滑切换,最后验证收尾。
不清楚现有架构细节,迁移极易出错。重点确认以下几点:
SHOW SLAVE STATUS\G 查看 Seconds_Behind_Master 和 SQL_Delay)replicate-do-db、binlog-do-db 等)log_bin、server_id 是否唯一、从库是否启用了 read_only=ON
推荐使用物理备份 + binlog 追平方式,兼顾速度与一致性:
mysqldump --single-transaction --master-data=2 或 Percona XtraBackup 做一致性快照server_id 不同、gtid_mode 与原环境一致(若启用 GTID,需同时设置 enforce_gtid_consistency=ON)
sword)避免停机,需控制写入、等待同步、原子切换:
FLUSH TABLES WITH READ LOCK,记录当前 binlog 位置(SHOW MASTER STATUS)Seconds_Behind_Master = 0 后,停止旧从库的复制:STOP SLAVE
CHANGE MASTER TO 指向旧主最后位置(或通过 GTID 自动定位),启动复制:START SLAVE
切完不等于成功,要快速验证稳定性与数据正确性:
SHOW PROCESSLIST 中是否有大量写入阻塞SELECT COUNT(*) 抽样关键表)、校验 checksum(如 pt-table-checksum)Seconds_Behind_Master、Slave_IO_Running、Slave_SQL_Running 状态不复杂但容易忽略细节,尤其 GTID 模式下 RESET MASTER 和 SET GTID_PURGED 的配合、跨版本权限表初始化、时区与 SQL mode 差异,都可能引发复制中断或数据偏差。