插件窝 干货文章 MySQL 8.0 如何正确导入 mysqldump 导出的数据?

MySQL 8.0 如何正确导入 mysqldump 导出的数据?

导入 database username dumpfile 694    来源:    2025-03-31

MySQL 8.0 导入 mysqldump 数据指南

基本导入方法

  1. 使用 mysql 命令行工具导入

    mysql -u username -p database_name < dumpfile.sql
    

    输入密码后执行导入

  2. 在 MySQL 客户端中导入

    USE database_name;
    SOURCE /path/to/dumpfile.sql;
    

常见问题解决方案

1. 字符集问题

如果遇到字符集错误,指定字符集导入:

mysql -u username -p --default-character-set=utf8mb4 database_name < dumpfile.sql

2. 大文件导入

对于大型SQL文件: - 增加连接超时时间: bash mysql -u username -p --max_allowed_packet=512M --net_buffer_length=16384 database_name < dumpfile.sql - 或使用 pv 监控进度(需先安装pv工具): bash pv dumpfile.sql | mysql -u username -p database_name

3. 用户权限问题

确保导入用户有足够权限:

GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
FLUSH PRIVILEGES;

4. 存储引擎问题

如果从旧版本导入,可能需要转换存储引擎:

sed 's/ENGINE=MyISAM/ENGINE=InnoDB/g' dumpfile.sql > dumpfile_converted.sql

高级选项

  1. 只导入数据不导入结构

    mysql -u username -p database_name --skip-comments --force < data_only.sql
    
  2. 导入时忽略错误继续执行

    mysql -u username -p database_name --force < dumpfile.sql
    
  3. 并行导入(使用myloader工具)

    myloader -u username -p password -d /path/to/dumpdir -t 4
    

    (需先安装mydumper/myloader工具)

最佳实践

  1. 导入前创建目标数据库:

    CREATE DATABASE IF NOT EXISTS database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    
  2. 导入前禁用外键检查加速导入:

    SET FOREIGN_KEY_CHECKS = 0;
    -- 导入操作
    SET FOREIGN_KEY_CHECKS = 1;
    
  3. 对于生产环境,建议先在测试环境验证导入

  4. 考虑在低峰期执行大型数据库导入操作

遇到具体错误时,可以根据错误信息进一步调整导入参数或修改SQL文件。