当前位置: 首页 > article >正文

mysql 导入全量备份

以下是 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:字符集乱码
  • 解决:指定字符集导入:
    mysql -u root -p --default-character-set=utf8mb4 目标数据库名 < backup.sql
    
问题 3:导入速度慢
  • 优化
    • 分片导入大文件:
      split -l 10000 backup.sql split_  # 按行分割文件
      for file in split_*; do mysql -u root -p 目标数据库名 < $file; done
      
    • 关闭二进制日志(导入期间):
      mysql -u root -p --disable-log-bin 目标数据库名 < backup.sql
      

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

总结

  • 核心步骤:备份准备 → 创建目标库 → 导入数据 → 验证完整性。
  • 关键技巧:禁用外键检查、增大数据包大小、分片处理大文件。
  • 注意事项:确保备份文件字符集与目标库一致,导入前备份目标库(防覆盖)。

http://www.kler.cn/a/596669.html

相关文章:

  • 代码随想录算法训练营第三十五天 | 46. 携带研究材料、416. 分割等和子集
  • C语言基础与进阶学习指南(附运行效果图及术语解析)
  • 使用brower use AI 代理自动控制浏览器完成任务
  • 异步编程与流水线架构:从理论到高并发
  • 基于深度学习的图像识别技术在工业检测中的应用
  • C++学习之网盘项目单例模式
  • 【CXX-Qt】2.4 嵌套对象
  • 建造者模式 (Builder Pattern)
  • 每日一题第15届蓝桥杯c/c++本科B组省赛第3题
  • C++ Reference:解锁编程新姿势
  • Mybatis的基础操作——03
  • 同旺科技USB to SPI 适配器 ---- 指令注释功能
  • 基于springboot+vue的网络海鲜市场
  • 【用 Trae 读源码】OpenManus 执行流程
  • 雨晨 26100.3613 Windows 11 IoT 企业版 LTSC 24H2 适度
  • 自动驾驶系统的车辆动力学建模:自行车模型与汽车模型的对比分析
  • 从零构建大语言模型全栈开发指南:第一部分:数学与理论基础-1.1.3模型参数与超参数:权重、偏置、学习率与正则化策略
  • CSS中的transition与渐变
  • 评估图片清晰度
  • 《Keras 3 : AI神经网络开发人员指南》