新 MySQL 环境导入旧数据,核心是保证结构一致、数据完整、编码统一、权限可控。不建议直接拷贝文件(如 ibd、frm),尤其跨版本或跨平台时风险高;推荐使用逻辑导出导入方式。
一、确认新旧环境兼容性
检查 MySQL 版本(旧 ≤ 新较安全,如 5.7 → 8.0 需注意语法变更和默认认证插件)、字符集(推荐统一为 utf8mb4)、存储引擎(InnoDB 优先)。用以下命令查看:
SELECT VERSION();<br>SHOW VARIABLES LIKE 'character_set%';<br>SHOW VARIABLES LIKE 'collation%';
二、从旧库导出数据(推荐 mysqldump)
使用 mysqldump 生成可读、可移植的 SQL 文件。关键参数说明:
--single-transaction:对 InnoDB 表保证一致性快照(避免锁表) --routines --triggers --events:导出存储过程、触发器、事件 --set-gtid-purged=OFF:若不启用 GTID 或仅做迁移,关闭 GTID 相关语句 --default-character-set=utf8mb4:显式指定导出编码,防乱码示例命令(导出全部数据库):
mysqldump -u root -p --single-transaction --routines --triggers --events --default-character-set=utf8mb4 --all-databases > full_backup.sql
三、在新库中导入数据
导入前确保新实例已创建对应用户、权限,并校验字符集配置(my.cnf 中
character-set-server = utf8mb4和
collation-server = utf8mb4_0900_ai_ci)。操作步骤: 登录新 MySQL:
mysql -u root -p执行导入:
source /path/to/full_backup.sql(推荐在 mysql 客户端内执行) 或终端命令导入:
mysql -u root -p
大文件导入时,建议先关闭自动提交:
SET autocommit=0;,导入完成后再
COMMIT;,可提升速度。
四、验证与收尾
导入后务必验证:
检查库表数量是否一致:SELECT COUNT(*) FROM information_schema.tables WHERE table_schema NOT IN ('mysql','sys','information_schema','performance_schema');
抽样查关键表行数、字段内容、中文是否正常
测试存储过程、触发器是否可调用,时间字段是否时区正确(注意 time_zone设置) 重置用户权限(旧 dump 中的
CREATE USER和
GRANT可能不适用新环境,建议手动重建)
