MySQL mysqldump 数据导出工具

mysqldump是一个数据库备份程序

运行mysqldump --help可以看到命令的用法

1
2
3
4
Dumping structure and contents of MySQL databases and tables.
Usage: mysqldump [OPTIONS] database [tables]
OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR mysqldump [OPTIONS] --all-databases [OPTIONS]

下面就列出一些常用的使用方法

导出所有数据库

使用参数--all-databases指定就行。
如下面命令会导出包括系统数据库在内的所有数据库,。

1
mysqldump -uroot -proot --all-databases >/tmp/all.sql

导出指定数据库

使用参数--databases 来指定。

1
mysqldump -uroot -proot --databases db1 db2 >/tmp/db1_2.sql

导出指定数据库的指定表

使用参数--tables来指定,用空格可以指定多张表。

1
mysqldump -uroot -proot --databases db1 --tables a1 a2  >/tmp/db1.sql

导出指定条件的数据

使用参数--where来指定,后面的内容可以写=,like,or等多种条件组合。
导出的数据是带有drop与create的,在还原的时候,如果对于同一数据库可能少部数据。

1
mysqldump -uroot -proot --databases db1 --tables a1 --where="name like '%xxx%'"  >/tmp/a1.sql

只导出表结构不导出数据

使用参数--no-data

1
mysqldump -uroot -proot --no-data --databases db1 >/tmp/db1.sql

跨服务器导出导入数据

直接利用管道

1
mysqldump --host=h1 -uroot -proot --databases db1 | mysql --host=h2 -uroot -proot db2

加参数-C可以压缩传输

导出存储过程和自定义函数

使用参数--routines

1
mysqldump  -uroot -p --host=localhost --all-databases --routines

压缩备份

1
2
3
4
压缩备份
mysqldump -uroot -proot --databases db1 2>/dev/null |gzip >/tmp/db1.sql.gz
还原
gunzip -c db1.sql.gz |mysql -uroot -proot db1

更多

更多参数及使用参见
https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html