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

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

总结

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

相关文章:

  • Python Web 框架 Django、Flask 和 FastAPI 对比
  • 【负载均衡系列】LVS
  • Swagger 笔记
  • Centos 7 安装VNC服务
  • C# WinForms 中的回调:从性能到技术层面的全面解析
  • HTTP代理IP技术详解及在Web开发中的应用
  • 深入解析MySQL存储引擎:从InnoDB到MyISAM的技术全景
  • 单页响应式 图片懒加载HTML页面
  • 2025年- G23-Lc97-104.二叉树的最大深度-java版(递归调用左右子树)
  • 基于Python编程语言实现“机器学习”,用于车牌识别项目
  • 林阳域管理系统功能简介
  • Oracle 数据库安全评估(DBSAT)简明过程
  • Java 大视界 -- Java 大数据在智能医疗远程会诊与专家协作中的技术支持(146)
  • Python在数据科学中的应用:完整指南
  • 【高并发内存池】第三弹---构建Central Cache的全方位指南——从整体设计到核心实现
  • 《C++11 基于CAS无锁操作的atomic原子类型》
  • 头歌 JAVA 桥接模式实验
  • UI数据处理新隐私保护:确保用户新信息安全
  • 固定公网 IP
  • 【浙大PTA:L1系列题目】
  • 车主质疑零跑汽车撞车后AEB未触发、气囊未弹出,4S店:其把油门当刹车
  • 北京警方:海淀发生小客车刮碰行人事故4人受伤,肇事司机已被查获
  • 董军同德国国防部长举行会谈
  • 外企聊营商|威能集团:公平环境增“暖”意
  • 陕西旱情实探:大型灌区农业供水有保障,大旱之年无旱象
  • 国台办:民进党当局刻意刁难大陆配偶,这是不折不扣的政治迫害