以下是 MySQL 导入全量备份的完整步骤,适用于从 .sql
备份文件恢复数据库:
1. 准备备份文件
确保已获取完整的 .sql
备份文件,通常通过 mysqldump
生成,例如:
mysqldump -u root -p --single-transaction --routines --triggers --events 原数据库名 > backup.sql
2. 创建目标数据库(若不存在)
-- 登录 MySQL
mysql -u root -p-- 创建数据库(建议与原库字符集一致)
CREATE DATABASE IF NOT EXISTS 目标数据库名
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
3. 导入备份文件
方法一:直接导入
mysql -u root -p 目标数据库名 < backup.sql
方法二:登录 MySQL 后导入
-- 登录 MySQL
mysql -u root -p-- 选择目标数据库
USE 目标数据库名;-- 执行导入
SOURCE /path/to/backup.sql;
4. 关键参数优化(针对大文件)
mysql -u root -p \--max_allowed_packet=512M \ # 增大数据包大小--net_buffer_length=16K \ # 网络缓冲区优化--init-command="SET FOREIGN_KEY_CHECKS=0; SET UNIQUE_CHECKS=0;" \ # 禁用约束检查目标数据库名 < backup.sql
5. 验证导入结果
基础验证
-- 检查表数量是否一致
SELECT COUNT(*) FROM information_schema.tables
WHERE table_schema = '目标数据库名';-- 抽查关键表数据
SELECT COUNT(*) FROM 重要表名;
高级验证
-- 检查存储过程、触发器、事件
SHOW PROCEDURE STATUS WHERE Db = '目标数据库名';
SHOW TRIGGERS FROM 目标数据库名;
SHOW EVENTS FROM 目标数据库名;
6. 常见问题与解决
问题 1:导入时外键冲突
- 解决:在导入前禁用外键检查:
# 在备份文件开头添加以下命令 sed -i '1i SET FOREIGN_KEY_CHECKS=0; SET UNIQUE_CHECKS=0;' backup.sql
问题 2:字符集乱码
问题 3:导入速度慢
- 优化:
7. 完整操作示例
# 导出原库(全量备份)
mysqldump -u root -p --single-transaction --routines --triggers --events source_db > source_db_backup.sql# 创建目标库
mysql -u root -p -e "CREATE DATABASE target_db DEFAULT CHARSET=utf8mb4;"# 导入备份(禁用外键检查)
mysql -u root -p --max_allowed_packet=512M --init-command="SET FOREIGN_KEY_CHECKS=0;" target_db < source_db_backup.sql
总结
- 核心步骤:备份准备 → 创建目标库 → 导入数据 → 验证完整性。
- 关键技巧:禁用外键检查、增大数据包大小、分片处理大文件。
- 注意事项:确保备份文件字符集与目标库一致,导入前备份目标库(防覆盖)。