mysql 导入全量备份

news/2025/3/22 7:12:19/

以下是 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.ppmy.cn/news/1581086.html

相关文章

Java爬虫抓取B站视频信息

依赖 <dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.17.2</version> <!-- 最新版可去官网查看 --></dependency>编码 public static List<VideoDto> parseSearchPage(Str…

VS Code PowerShell、Windows PowerShell、CMD 的区别与联系

VS Code PowerShell、Windows PowerShell、CMD 的区别与联系? VS Code PowerShell、Windows PowerShell、CMD 的区别与联系&#xff1a; 一、核心概念对比 名称 全称 类型 定位 VS Code PowerShell Visual Studio Code PowerShell 代码编辑器集成终端 开发/脚本编写…

Python实现ONNXRuntime推理YOLOv11模型

Python实现ONNXRuntime推理YOLOv11模型&#xff0c;主要在于onnxruntime推理后的后处理部分 1、安装依赖 pip install opencv-python onnxruntime numpy2、ONNX模型导出&#xff08;可选&#xff09; from ultralytics import YOLO# Load a model model YOLO("yolo11n…

【汽车开发工具选型指南】Jama Connect® for Automotive解决方案解析

本文来源jamasoftware.com&#xff0c;由Jama Software授权合作伙伴-龙智翻译整理。 Jama Connect for Automotive是什么&#xff1f; Jama Connect for Automotive 旨在为开发团队提供一个统一平台&#xff0c;用于构建安全关键型和网络安全关键型产品。提供满足行业标准和法…

Spring Boot + Spring Integration整合MQTT打造双向通信客户端

1. 概述 本文分两个章节讲解MQTT相关的知识&#xff0c;第一部份主要讲解MQTT的原理和相关配置&#xff0c;第二个章节主要讲和Spring boot的integration相结合代码的具体实现&#xff0c;如果想快速实现功能&#xff0c;可直接跳过第一章节查看第二章讲。 1.1 MQTT搭建 为了…

QT日志级别设置

开发版本代码包含了大量的qDebug&#xff0c; 发布版本可能导致未知异常。 QLoggingCategory::setFilterRules用于设置日志过滤规则&#xff0c;从而控制日志的输出。 以下是一个完整的示例&#xff0c;展示如何通过设置日志过滤规则来禁用qDebug()输出&#xff1a; …

Python functools 模块的 @lru_cache 装饰器介绍

functools.lru_cache 是 Python 标准库 functools 模块中的一个装饰器&#xff0c;用于实现简单的缓存机制。它通过缓存函数的返回值来提高函数的执行效率&#xff0c;特别是对于那些被多次调用且参数相同的函数。 LRU 缓存机制 LRU 代表 Least Recently Used&#xff0c;即最…

分布式中间件:基于 Redis 实现分布式锁

分布式中间件&#xff1a;基于 Redis 实现分布式锁 一、背景引入 在当今的互联网应用中&#xff0c;分布式系统变得越来越常见。在分布式环境下&#xff0c;多个服务实例可能会同时对共享资源进行读写操作&#xff0c;这就很容易引发数据不一致等问题。比如电商系统中的库存扣…