mysql使用mysqldump备份、还原数据库详解教程

 更新时间:2025年12月23日 10:13:46   作者:火柴梗!  
mysqldump是一个用于备份MySQL数据库的命令行工具,它可以将数据库结构和数据导出到一个SQL文件中,以便在需要时进行恢复或迁移数据库,这篇文章主要介绍了mysql使用mysqldump备份、还原数据库的相关资料,需要的朋友可以参考下

一、mysqldump 备份操作

1.1 备份基础语法

mysqldump -u用户名 -p密码 -h主机 数据库 表名 -w "sql条件" --lock-all-tables > 备份路径

1.2 备份案例

mysqldump -uroot -p1234 -hlocalhost db1 a -w "id in (select id from b)" --lock-all-tables > c:\aa.txt

二、mysqldump 还原操作

2.1 还原基础语法

mysql -u用户名 -p密码 -h主机 数据库 < 备份文件路径

注:原文中“mysqldump还原”语法表述存在笔误,正确还原需使用mysql命令而非mysqldump

2.2 还原案例

mysql -uroot -p1234 db1 < c:\aa.txt

三、mysqldump 按条件导出与导入

3.1 按条件导出

3.1.1 按条件导出基础语法

mysqldump -u用户名 -p密码 -h主机 数据库 表名 --where "条件语句" --no-create-info > 导出路径

注:原文中“–no-建表”为简化表述,标准参数为--no-create-info

3.1.2 按条件导出案例

mysqldump -uroot -p1234 dbname a --where "tag='88'" --no-create-info > c:\a.sql

3.2 按条件导入

3.2.1 按条件导入基础语法

mysql -u用户名 -p密码 -h主机 数据库 < 导出文件路径

注:原文中“mysqldump按导入”语法表述存在笔误,正确导入需使用mysql命令而非mysqldump

3.2.2 按条件导入案例

mysql -uroot -p1234 db1 < c:\a.txt

四、mysqldump 表导出操作

4.1 表导出基础语法

mysqldump -u用户名 -p密码 -h主机 数据库 表名

4.2 表导出案例(仅导出表结构,不含数据)

mysqldump -uroot -p sqlhk9 a --no-data

五、mysqldump 主要参数说明

5.1 --compatible=name

  • 功能:告知 mysqldump 导出的数据需兼容的数据库类型或旧版本 MySQL 服务器
  • 兼容值:ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options 等
  • 说明:多值用逗号分隔,仅保证“尽量兼容”,非“完全兼容”

5.2 --complete-insert,-c

  • 功能:导出数据采用包含字段名的完整 INSERT 语句(所有值写在一行)
  • 优势:提高插入效率
  • 风险:可能受 max_allowed_packet 参数影响,导致插入失败,不推荐使用

5.3 --default-character-set=charset

  • 功能:指定导出数据的字符集
  • 必要性:若数据表非默认 latin1 字符集,不指定此参数会导致再次导入后产生乱码

5.4 --disable-keys

  • 功能:在 INSERT 语句开头添加 /*!40000 ALTER TABLE table DISABLE KEYS */;,结尾添加 /*!40000 ALTER TABLE table ENABLE KEYS */;
  • 优势:插入完所有数据后再重建索引,大幅提高插入速度
  • 限制:仅适用于 MyISAM 表

5.5 --extended-insert = true|false

  • 默认值:true(开启 --complete-insert 模式)
  • 功能:关闭 --complete-insert 模式时,需将此参数设为 false

5.6 --hex-blob

  • 功能:使用十六进制格式导出二进制字符串字段
  • 必要性:存在二进制数据时必须使用
  • 影响字段类型:BINARY、VARBINARY、BLOB

5.7 --lock-all-tables,-x

  • 功能:开始导出前,请求锁定所有数据库的所有表,保证数据一致性
  • 特性:属于全局读锁,会自动关闭 --single-transaction 和 --lock-tables 选项

5.8 --lock-tables

  • 功能:锁定当前导出的数据表(区别于 --lock-all-tables 锁定全部库下的表)
  • 限制:仅适用于 MyISAM 表;InnoDB 表需使用 --single-transaction 选项

5.9 --no-create-info,-t

  • 功能:仅导出数据,不添加 CREATE TABLE 语句

5.10 --no-data,-d

  • 功能:不导出任何数据,仅导出数据库表结构

5.11 --opt

  • 本质:快捷选项,等同于同时添加以下参数:
    –add-drop-tables、–add-locking、–create-option、–disable-keys、–extended-insert、–lock-tables、–quick、–set-charset
  • 优势:加快导出速度,且导出数据可快速导回
  • 默认状态:默认启用,可通过 --skip-opt 禁用
  • 注意事项:未指定 --quick 或 --opt 时,会将整个结果集放入内存,导出大数据库可能出现问题

5.12 --quick,-q

  • 功能:强制 mysqldump 从服务器查询取得记录后直接输出,不缓存到内存
  • 适用场景:导出大表时非常有用,避免占用过多内存

5.13 --routines,-R

  • 功能:导出存储过程以及自定义函数

5.14 --single-transaction

  • 功能:导出数据前提交 BEGIN SQL 语句,保证导出时数据库的一致性状态
  • 特性:BEGIN 不阻塞任何应用程序
  • 适用表类型:仅适用于事务表(如 InnoDB、BDB)
  • 互斥性:与 --lock-tables 互斥(LOCK TABLES 会使挂起事务隐含提交)
  • 建议:导出大表时结合 --quick 选项使用

5.15 --triggers

  • 功能:同时导出触发器
  • 默认状态:默认启用,可通过 --skip-triggers 禁用

5.16 其他参数说明

其他参数详情请参考 MySQL 官方手册

六、mysqldump 常用备份命令示例

6.1 MyISAM 表备份命令

/usr/local/mysql/bin/mysqldump -uyejr -pyejr \
--default-character-set=utf8 --opt --extended-insert=false \
--triggers -R --hex-blob -x db_name > db_name.sql

6.2 InnoDB 表备份命令

/usr/local/mysql/bin/mysqldump -uyejr -pyejr \
--default-character-set=utf8 --opt --extended-insert=false \
--triggers -R --hex-blob --single-transaction db_name > db_name.sql

6.3 在线备份命令(含 binlog 信息)

6.3.1 在线备份语法

/usr/local/mysql/bin/mysqldump -uyejr -pyejr \
--default-character-set=utf8 --opt --master-data=1 \
--single-transaction --flush-logs db_name > db_name.sql

6.3.2 在线备份特性

  • 仅在开始瞬间请求锁表,随后刷新 binlog
  • 导出文件中会加入 CHANGE MASTER 语句,指定当前备份的 binlog 位置
  • 适用场景:将备份文件恢复到 slave 服务器

七、mysqldump 备份文件还原方法

mysqldump 备份文件为可直接导入的 SQL 脚本,共两种导入方法:

7.1 方法一:直接用 mysql 客户端导入

7.1.1 导入语法

/usr/local/mysql/bin/mysql -uyejr -pyejr db_name < db_name.sql

7.2 方法二:用 SOURCE 语法导入(实验不成功!!!)

7.2.1 语法说明

  • 非标准 SQL 语法,属于 mysql 客户端提供的功能
  • 导入语法:
    SOURCE /tmp/db_name.sql;
    

7.2.2 注意事项

  • 需指定文件绝对路径
  • 文件需让 mysqld 运行用户(如 nobody)拥有读取权限

总结 

到此这篇关于mysql使用mysqldump备份、还原数据库的文章就介绍到这了,更多相关mysql mysqldump备份还原数据库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MYSQL常用字符串函数和时间函数示例详解

    MYSQL常用字符串函数和时间函数示例详解

    字符串函数是最常用的的一种函数,在一个具体应用中通常会综合几个甚至几类函数来实现相应的应用,这篇文章主要介绍了MYSQL常用字符串函数和时间函数的相关资料,需要的朋友可以参考下
    2025-07-07
  • MySQL详解进行JDBC编程与增删改查方法

    MySQL详解进行JDBC编程与增删改查方法

    JDBC是指Java数据库连接,是一种标准Java应用编程接口( JAVA API),用来连接 Java 编程语言和广泛的数据库。从根本上来说,JDBC 是一种规范,它提供了一套完整的接口,允许便携式访问到底层数据库
    2022-06-06
  • MySQL中查询json格式的字段实例详解

    MySQL中查询json格式的字段实例详解

    这篇文章主要给大家介绍了关于MySQL中查询json格式字段的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • mysql添加备注信息的实现

    mysql添加备注信息的实现

    这篇文章主要介绍了mysql添加备注信息的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • 详细深入聊一聊Mysql中的int(1)和int(11)

    详细深入聊一聊Mysql中的int(1)和int(11)

    mysql数据库作为当前常用的关系型数据库,肯定会遇到设计表的需求,下面对设计表时int类型的设置进行分析,下面这篇文章主要给大家介绍了关于Mysql中int(1)和int(11)的相关资料,需要的朋友可以参考下
    2022-08-08
  • Mysql大型SQL文件快速恢复方案分享

    Mysql大型SQL文件快速恢复方案分享

    这篇文章主要给大家介绍了关于Mysql大型SQL文件快速恢复方案的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Mysql具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • MySQL 数据备份和数据恢复的实现

    MySQL 数据备份和数据恢复的实现

    数据恢复的过程包括将备份文件导入到数据库中、重建索引、应用日志等,本文主要介绍了MySQL数据备份和数据恢复的实现,感兴趣的可以了解一下
    2023-08-08
  • MySQL日期时间类型与字符串互相转换的方法

    MySQL日期时间类型与字符串互相转换的方法

    这篇文章主要介绍了MySQL日期时间类型与字符串互相转换的方法,文中通过代码示例和图文结合的方式给大家讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-07-07
  • 用HAProxy来检测MySQL复制的延迟的教程

    用HAProxy来检测MySQL复制的延迟的教程

    这篇文章主要介绍了用HAProxy来检测MySQL复制的延迟的教程,HAProxy需要使用到PHP脚本,需要的朋友可以参考下
    2015-04-04
  • sql面试题(查看数据中指定几行记录)

    sql面试题(查看数据中指定几行记录)

    一个不错的sql面试题,表 table1,主键为 ID,ID为自动编号(ID可能不连续),要求查询第31-40行记录,如何实现呢?感兴趣的朋友参考下
    2014-05-05

最新评论