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使用
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
十余年BAT架构经验,资深技术专家,就职于阿里、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》