最常用且稳妥的MySQL迁移方式是结合逻辑导出导入(mysqldump)与物理文件拷贝,具体选型取决于数据量、停机窗口、版本兼容性及GTID启用情况;中小数据量、跨版本或需过滤改造时优先用mysqldump,导出时应加--single-transaction及--routines --triggers --events确保一致性与完整性。
迁移 MySQL 数据到新机器,核心是保证数据一致性、服务连续性和操作可回退。最常用且稳妥的方式是结合逻辑导出导入(mysqldump

这是最通用、兼容性最好的方式,尤其适合从旧版本迁移到新版本,或需要排除某些库/表时使用。
--single-transaction(对 InnoDB 有效)和 --routines --triggers --events 以包含存储过程、触发器和事件mysql -u root -p 导入
sql_mode)与原环境一致,否则可能报错或乱码跳过 SQL 解析,速度极快,但要求源和目标 MySQL 版本相同或高度兼容,且必须完全停止 MySQL 服务后再操作。
systemctl stop mysql(或对应服务名)/var/lib/mysql):tar -czf mysql_data.tar.gz /var/lib/mysql
mysql:mysql:chown -R mysql:mysql /var/lib/mysql
my.cnf)中 datadir、socket、port 等参数是否适配新环境Percona XtraBackup 支持对 InnoDB 表在线备份,备份期间业务可继续运行,是生产环境大库迁移的首选方案之一。
--prepare(应用日志使数据一致):datadir 路径下,替换原有数据,并重置权限--skip-grant-tables 和 --skip-networking 安全初始化,再按需重建用户权限无论哪种方式,迁移完成不等于结束,必须验证数据完整性与服务可用性。
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema NOT IN ('mysql','information_schema','performance_schema','sys');
CHECKSUM TABLE 对比mysql.user 表),必要时执行 FLUSH PRIVILEGES;
gtid_executed 是否连续,避免后续主从异常