手记

mysqldump备份数据上篇-基本语法介绍

mysqldump是MySQL自带的数据导入导出工具,可以用来备份全库、单个库、单个或多个数据库对象等。此为上篇,介绍mysqldump语法,主要就是把我们经常用到的一些选项作简短的介绍,下篇会给大家演示如何使用mysqldump做数据库自动备份。

--add-drop-database
在导出的备份文件中,在CREATE DATABASE语句前加上DROP DATABASE语句
--add-drop-table和--add-drop-trigger选项作用同上

-all-databases
备份所有库

--add-locks
在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE(默认为打开状态,使用--skip-add-locks取消选项)

--compress、-C
压缩导入导出过程中服务端和客户端发送的信息,注意这里不是压缩备份文件,mysqldump命令本身不能压缩备份文件

--databases、-B
要导出的数据库,参数后面所有名字参量都被看作数据库名:
mysqldump -uroot -p -B wyzc gusha> w.sql
如果不加此参数,MySQL会默认第一个字段数数据库名,以后的字段都是表名,如下:
mysqldump -uroot -p wyzc t1 > wyzc.sql

--debug
输出debug信息,用于调试

--default-character-set
设置默认字符集,默认值为utf8,注意这里指的是文件的字符集,而不是导入导出的库或表的字符集

--delayed-insert
采用延时插入方式(INSERT DELAYED)导出数据

--flush-logs
开始导出之前刷新日志

--host、-h
需要导出的主机信息

--ignore-table
不导出指定表;指定忽略多个表时,需要重复多次,每次一个表;每个表必须同时指定数据库和表名;也可以用这个参数指定不导出某个视图
mysqldump -uroot -p wyzc --ignore-table=wyzc.t1 --ignore-table=wyzc.t2 > wyzc1.sql

--lock-all-tables、-x
提交请求锁定所有数据库中的所有表,以保证数据的一致性。这是一个全局读锁,并且自动关闭--single-transaction和--lock-tables选项

--lock-tables、-l
开始导出前,锁定所有表,-lock-tables选项和--lock-all-tables区别在于--lock-all-tables锁定所有数据库里的所有表,而-lock-tables则只锁定要导出/导入的库里的表

--no-create-db、-n
只导出数据,而不添加CREATE DATABASE 语句

--no-create-info、-t
只导出数据,而不添加CREATE TABLE 语句
mysqldump -uroot -p wyzc --no-create-info > wyzc2.sql

--no-data、-d
不导出任何数据,只导出数据库表结构
mysqldump -uroot -p wyzc --no-data > wyzc3.sql

--password、-p
连接数据库密码

--port、-P
连接数据库端口号

--routines、-R
导出目标数据库里的触发器和函数
mysqldump -uroot -p wyzc --routines > wyzc4.sql

--socket、-S
指定连接mysql的socket文件位置

--tables
覆盖--databases参数,指定需要导出的表名 --triggers导出触发器,该选项默认启用,用--skip-triggers禁用它

--user、-u
指定连接的用户名

--where、-w
只导出符合WHERE条件的记录。如果条件包含命令解释符专用空格或字符,一定要将条件引用起来
mysqldump -uroot -p wyzc t1 --where='age>20' > wyzc5.sql
单引号和双引号都可以

--xml、-X
导出XML格式,加上-X参数后
注意,在MySQL 5.6.5以前,即使加上--routines参数也不会导出触发器和函数
mysqldump -uroot -p wyzc --xml > wyzc6.html

7人推荐
随时随地看视频
慕课网APP