mysqldump详解(语法参数及命令使用)

mysqldump详解(语法参数及命令使用)-mikechen

mysqldump定义

mysqldump是MySQL 系统自带的逻辑备份工具,在对数据库进行导出工作时,经常会用到 mysqldump 。

 

mysqldump作用

mysqldump主要产生一系列的 SQL 语句,比如:备份创建表或者装载表的SQL语句。

mysqldump封装的文件包含:重建数据库所需要的 SQL 命令如 CREATE DATABASE ,CREATE TABLE ,INSERT 等等。

 

mysqldump语法

基本语法如下:

Usage: mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]

执行 mysqldump –help 或参考 MySQL 官方文档,我们发现 mysqldump 工具可配置的参数有很多。

详细参数如下图所示:

mysqldump详解(语法参数及命令使用)-mikechen

 

mysqldump使用

1.导出所有数据库

该命令会导出包括系统数据库在内的所有数据库

mysqldump -uroot -ppassword --all-databases >/data/all.sql

2.导出指定数据库的所有数据

mysqldump -uroot -ppassword --databases db1 db2 >/data/db.sql

3.导出指定数据库中的指定表数据

注意:导出指定表只能针对一个数据库进行导出,且导出指定表的内容和导出数据库也不一样,导出指定表的导出文本中没有创建数据库的判断语句,只有删除表/创建表/导入数据

mysqldump -uroot -ppassword --databases db1 --tables t1 t2 >/data/t1.sql

4.只导出表结构不导出数据

mysqldump -uroot -ppassword --no-data --databases db1 >/data/db_sql.sql

5.导出为多条INSERT语句

–extended-insert 表示长INSERT语句,多row在一起批量INSERT,提高导入效率,默认开启;用–extended-insert=false关闭。强烈建议开启

mysqldump -uroot -ppassword -B test --tables t1 --extended-insert=false >/data/t1.sql

6.按查询条件导出,导出指定表中符合查询条件的数据

如果多个表的条件相同可以一次性导出多个表

mysqldump -uroot -ppassword --databases db1 --tables t1 --where='id=1' >/tmp/t1.sql

7.锁表导出数据

–lock-tables, -l

导出操作时锁定所有表。用READ LOCAL锁定表以允许MyISAM表并行插入。

对于支持事务的表例如InnoDB,–single-transaction是一个更好的选择,因为它根本不需要锁定表。

mysqldump -uroot -ppassword --databases db1 --lock-tables >/data/db1.sql

8.导出函数和存储过程

-ntd 表示存储过程 -R 表示函数

mysqldump -uroot -ppassword -ntd -R dbName >/data/pro.sql

9.导出EVENT事件

mysqldump -uroot -ppassword -ndt -E dbName > /data/event.sql

10.导出并压缩文件

time mysqldump -uroot -ppassword --databases dbName | gzip --fast > /data/db_sql.gz

作者简介

陈睿|mikechen,10年+大厂架构经验,BAT资深面试官,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

👇阅读更多mikechen架构文章👇

阿里架构 |双11秒杀 |分布式架构 |负载均衡 |单点登录 |微服务 |云原生 |高并发 |架构师

以上

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

评论交流
    说说你的看法