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导入导出时遇到问题的解决方法,文中通过示例代码介绍的非常详细,对大家学习或者使用Mysql具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-08-08
  • mysql复制表的几种常用方式总结

    mysql复制表的几种常用方式总结

    mysql想必大家比较熟悉了,我们常见的crud sql想必大家也是手到拈来,下面这篇文章主要给大家介绍了关于mysql复制表的几种常用方式,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • MySql一条查询语句的执行流程究竟是怎么样的

    MySql一条查询语句的执行流程究竟是怎么样的

    一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一篇文章了,下面这篇文章主要给大家介绍了关于MySql一条查询语句的执行流程究竟是怎么样的,需要的朋友可以参考下
    2024-06-06
  • MySQL六种约束的示例详解

    MySQL六种约束的示例详解

    约束是作用于表中字段上的规则,用于限制存储在表中的数据。这篇文章主要为大家整理了一下MySQL中六种约束的用法,感兴趣的可以了解一下
    2023-02-02
  • mysql日志滚动

    mysql日志滚动

    日志滚动解决日志文件过大问题,比如我开启了general_log,这个日志呢是记录mysql服务器上面所运行的所有sql语句;比如我开启了mysql的慢查询
    2014-01-01
  • 12个优化MySQL的技巧小整理

    12个优化MySQL的技巧小整理

    这篇文章主要介绍了12个优化MySQL的技巧小整理,包括表连接和WHERE语句等基本的优化点等内容,已经了解的也不妨加深一下印象,需要的朋友可以参考下
    2015-06-06
  • mysql 5.7.10 安装配置方法图文教程

    mysql 5.7.10 安装配置方法图文教程

    这篇文章主要为大家分享了mysql 5.7.10 安装配置方法图文教程,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • MySQL中with窗口函数说明及使用案例总结

    MySQL中with窗口函数说明及使用案例总结

    这篇文章主要介绍了MySQL中with窗口函数说明及使用案例的相关资料,窗口函数允许在查询结果的特定窗口上执行计算,而不会改变结果集的行数,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-11-11
  • mysql中You can’t specify target table for update in FROM clause错误解决方法

    mysql中You can’t specify target table for update in FROM clau

    这篇文章主要介绍了mysql中You can’t specify target table for update in FROM clause错误解决方法,需要的朋友可以参考下
    2015-02-02
  • ubuntu server配置mysql并实现远程连接的操作方法

    ubuntu server配置mysql并实现远程连接的操作方法

    下面小编就为大家分享一篇ubuntu server配置mysql并实现远程连接的操作方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12

最新评论