参数

缩写

是否默认

说明

--print-defaults

-

-

用于打印默认参数

--no-defaults

-

-

禁止从默认配置文件中读取默认参数,

mysqldump默认会从/etc/my.cnf

/etc/mysql/my.cnf~/.my.cnf默认配置文件中

读取mysqldumpmariadb-dumpclient、

client-serverclient-mariadb等客户端配置。

--defaults-file

-

-

指定mysqldump默认配置文件,

mysqldump将仅从该文件读取默认配置。

--defaults-extra-file

-

-

指定mysqldump额外的配置文件,

mysqldump将除了从默认配置文件读取配置外,

还将从该文件读取。

--defaults-group-suffix

-

-

除默认组外,额外读取的组名,多个用逗号分隔。

--all-databases

-A

False

备份所有库

--all-tablespaces

-Y

False

备份所有表空间

--no-tablespaces

-y

False

不备份任何表空间

--add-drop-database

False

CREATE DATABASE前添加DROP DATABASE

--add-drop-table

True

CREATE TABLE前添加DROP TABLE

--skip-add-drop-table

-

禁用**--add-drop-table**

--add-drop-trigger

False

CREATE TRIGGER前添加DROP TRIGGER

--add-locks

True

INSERT语句前添加LOCK TABLES,语句后添加UNLOCK TABLES;

--skip-add-locks

-

禁用**--add-locks**

--allow-keywords

False

允许创建包含关键字的列名

--apply-slave-statements

False

CHANGE MASTER前添加STOP SLAVE,备份文件末尾添加START SLAVE

--character-sets-dir

-

字符集文件目录,用--character-sets-dir=name指定

--comments*

-i

True

添加注释信息

--skip-comments

-

禁用**--comments***

--compatible

-

与其他数据库或不同mysql版本匹配,需要4.1.0以上版本;

可以设置的值有ansi, mysql323, mysql40, postgresql,

oracle,mssql, db2, maxdb, no_key_options,

no_table_options, no_field_options

--compatible=name指定,多个用逗号分隔

--compact

False

禁用注释和前后的dump文件信息,提供较少输出,适用于调试;

默认启用以下选项:--skip-add-drop-table--skip-add-locks

--skip-comments--skip-disable-keys--skip-set-charset

--complete-insert

-c

False

使用带有完整列名的INSERT语句,默认不带列名

--compress

-C

False

在服务端和客户端的协议中使用压缩

--create-options

-a

True

包含所有MySQL的特定创建选项

--skip-create-options

-

禁用**--create-options**

--databases

-B

False

备份多个数据库,如果没有使用--tables选项,

后边的值都将被认为是数据库名,多个用逗号分隔;

将会在输出文件中添加'USE db_name'

--debug

-#

非调试版本

--debug-check

False

在退出时检查内存和打开文件的使用情况

--debug-info

False

在退出时打印一些调试信息,包括用户占用CPU事件,

系统占用CPU事件,上下文切换等系统信息。

--default-character-set

utf8

设置默认字符集,--default-character-set=utf8

--delayed-insert

False

使用INSERT DELAYED而表示INSERT插入数据,

INSERT DELAYED在空闲时候插入数据,当有如SELECT等其他操作时候,

先处理其他操作,新版本已经不支持了。

--delete-master-logs

False

备份后从master删除日志,该选项会自动启用--masert-data选项

--disable-keys

-K

True

INSERT语句前添加

'/*!40000 ALTER TABLE tb_name DISABLE KEYS */;禁用索引,

INSERT语句后添加

'/*!40000 ALTER TABLE tb_name ENABLE KEYS */;启用索引;

因为一次创建索引比逐行创建效率更高,这样可以提高数据恢复效率。

--skip-disable-keys

禁用**--disable-keys**

--dump-slave

0

会将二进制文件位置和主文件名附加到备份文件中,

默认为0

如果为1,将会以CHANGE MASTER语句方式输出到备份文件;

如果为2CHANGE MASTER语句将会以注释形式输出到备份文件;

除非指定了--single-transaction,否则

将自动开启全局锁--lock-all-tables;

该选项会自动关闭--lock-tables

--events

-E

False

备份事件

--extended-insert

-e

True

使用包含多个值列表的多行插入语法。

--skip-extended-insert

-

禁用**--extended-insert**

--fields-terminated-by

-

结合**-T,--tab=path**选项使用,

tb_name.txt文件中的字段以指定字符串结尾,默认是TAB--fields-terminated-by=name

--fields-enclosed-by

-

结合**-T,--tab=path**选项使用,

tb_name.txt文件中的字段以指定字符串括起来,默认无

--fields-enclosed-by=name

--fields-optionally-enclosed-by

-

结合**-T,--tab=path**选项使用,

tb_name.txt文件中的字段以指定字符串括起来,默认无

--fields-optionally-enclosed-by=name

--fields-escaped-by

-

结合**-T,--tab=path**选项使用,

tb_name.txt文件中的字段以指定字符串转义,默认\,

效果就是将\替换成指定字符,

--fields-escaped-by=name

--flush-logs

-F

False

备份前生成新的服务器备份库的二进制日志文件,

备份多个库则每个库都会生成一个,

需要RELOAD权限,

如果只想生成一次,则应搭配--lock-all-tables--master-data使用

--flush-privileges

False

在备份后执行FLUSH PRIVILEGES

在备份包含MySQL数据库或任何依赖MySQL中的数据库的数据库时需要使用

--force

-f

False

忽略错误

--gtid

-

--master-data=1dump-slave=1搭配使用,

当启用时,输出内容中将设置GTID位置替代binlog文件和偏移量,

binlog文件和偏移量将仅作为注释显示;

当禁用时,与之相反,GTID将仅作为注释显示

--help

-?

-

显示mysqldump工具帮助信息

--hex-blob

False

BINARY, VARBINARY, BLOB格式的二进制字符串备份成十六进制

--host

-h

-

指定连接主机,--host=name

--ignore-database

-

忽略备份的库,忽略多个库需要多次使用该指令;

--all-database-A搭配使用

--ignore-database=db_name

--ignore-table-data

-

忽略备份的表的数据,忽略多个表的数据需要多次使用该指令;

必须同时指定数据库和表名;

--ignore-table-data=db_name.tb_name

--ignore-table

-

忽略备份的表,忽略多个表需要多次使用该指令;

必须同时指定数据库和表名;

--ignore-table=db_name.tb_name

--include-master-host-port

False

在使用--dump-slave时候,

CHANGE MASTER TO语句中添加MASTER_HOST=hostMASTER_PORT=port

--insert-ignore

False

使用INSERT IGNORE替代INSERT,有重复数据时候忽略报错

--lines-terminated-by

-

结合**-T,--tab=path**选项使用,

tb_name.txt文件以指定字符串结尾,默认无,

--lines-terminated-by=name

--lock-all-tables

-x

False

在备份期间通过获取全局读取锁来锁定所有库和所有表,

将会自动关闭--single-transaction--lock-tables

--lock-tables

-l

True

对需要备份的库的所有表加读锁,

事务型表使用--single-transaction而非**--lock-tables**

--skip-lock-tables

-

关闭**--lock-tables**

--log-error

-

指定文件中添加告警和错误日志,--log-error=file

--log-queries

True

到数据恢复时,如果日志记录是打开的,把查询记录到常规和慢查询日志中

--skip-log-queries

-

禁用**--log-queries**

--master-data

0

将日志文件名和位置附加到备份文件中,默认值为0如果值为1,将会以CHANGE MASTER命令的形式附加,

如果值为2,CHANGE MASTER命令将会以注释形式附加,

除非指定了--single-transaction

否则将自动开启全局读锁选项--lock-all-tables

该选项会自动关闭--lock-tables

--master-data=0

--max-allowed-packet

25165824

与服务器通信的最大数据包长度,应该大于单行数据大小,

小于mysql服务端设置的该变量大小,默认24M

--net-buffer-length

1046528

TCP/IP和Socket通信的缓冲区大小

--no-autocommit

False

INSERT语句前添加set autocommit=0;

INSERT语句及UNLOCK TABLES后添加commit;,

autocommit=0表示当前连接的操作都会被当成一个事务,

直到调用commit提交或ROLLBACK可以回滚;

autocommit=1每条语句会被当成单独的事务,自动commit

--no-create-db

-n

False

--all-databases--databases搭配使用,

取消创建数据库CREATE DATABASE...IF NOT EXISTS语句

--no-create-info

-t

False

取消创建数据表相关语句,

包括DROP TABLE IF EXISTS...CREATE TABLE...语句

--no-data

-d

False

仅备份数据结构,不备份数据

--no-set-names

-N

-

等同于--skip-set-charset

--opt

-

等同于--add-drop-table --add-locks --create-options --quick--extended-insert --lock-tables --set-charset --disable-keys

--skip-opt

-

禁用**--opt**,

禁用--add-drop-table --add-locks --create-options --quick--extended-insert --lock-tables --set-charset --disable-keys

--order-by-primary

False

如果备份表存在主键和唯一键,将会以主键和唯一键排序,

对于需要将MyISAM数据导入INNODB表时非常有用,

但会增加数据备份时长

--password

-p

-

用户账号的密码,如果没有给出密码则会提示输入密码,--password=name

--port

-P

0

MySQL服务连接端口,--port=3306

--protocol

-

连接协议,可选的有tcp、socket、pipe、memory--protocol=name

--quick

-q

True

不缓冲查询,直接将结果转向标准输出

--skip-quick

-

禁用**--quick**

--quote-names

-Q

True

表名、列名、字段等加反引号括起来

--skip-quote-names

-

禁用**--quote-names**

--replace

False

使用REPLACE INTO语句替代INSERT INTO语句,

REPLACE INTO会先根据主键或唯一索引判断是否有重复数据,

如果有则替换旧数据,没有则直接插入新数据,

没有主键或唯一索引的表可能导致重复数据

--result-file=name

-r

-

结果输出到指定文件中,

用在使用回车换行符\r\n分隔文本的系统中,如WindowsDOS

--result-file=name

--routines

-R

False

备份函数和存储过程

--set-charset

True

再备份文件中添加字符集相关信息,

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;

/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;

/*!40101 SET NAMES utf8mb4 */;

--skip-set-charset

-

禁用**--set-charset**

--single-transaction

False

通过在一个事务中备份所有表来创建一致性快照,

设置事务隔离级别为可重复读,即Repeatable Read

并向服务端发送START TRANSACTION,在这期间不会锁表

其他连接对数据的修改对事务内相同的查询结果没有影响,

仅对支持事务隔离的引擎有效,当前只支持INNODB,

为保障备份有效性,其他连接不可以使用ALTER TABLE

DROP TABLETRUNCATE TABLERENAME TABLE语句,

因为事务快照不会与它们隔离,

该选项会自动关闭选项--lock-tables

--dump-date

True

在备份文件末尾添加备份完成日期和时间,

-- Dump completed on 2021-03-02 3:56:16

--skip-dump-date

-

禁用**--dump-date**,

备份文件结尾为-- Dump completed,不再显示日期和时间

--socket=name

-S

-

Socket连接文件地址,--socket=name

--ssl

False

连接启用SSL(使用其他标志自动启用)

--ssl-ca

-

指定PEM格式的CA文件名称,自动启用--ssl--ssl-ca=name

--ssl-capath

-

指定CA文件目录,自动启用--ssl--ssl-capath=name

--ssl-cert

-

指定PEM格式的X509证书文件名称,自动启用--ssl--ssl-cert=name

--ssl-cipher

-

用于SSL加密的密码,自动启用--ssl--ssl-cipher=name

--ssl-key

-

指定PEM格式的X509密钥文件名称,自动启用--ssl--ssl-key=name

--ssl-verify-server-cert

False

用主机名验证证书中的Common Name字段

--tab

-T

-

在指定目录创建TAB分隔的tb_name.txt文件和数据备份文件tb_name.sql

仅当mysqldump与服务器在一台服务器时使用,

目录需要设置chown mysql.mysql tab_path,

--tab=name

--tables

-

覆盖选项--databases,指定单个数据库的多张表

--triggers

True

备份表关联的触发器

--skip-triggers

-

禁用**--triggers**

--tz-utc

True

在备份文件开头添加SET TIME_ZONE='+00:00'

允许备份的数据库中有不同时区的TIMESTAMP类型数据,

或要将这一类数据迁移到不同时区时

--skip-tz-utc

-

禁用**--tz-utc**

--user

-u

-

用于连接的用户账号,--user=name

--verbose

-v

False

显示备份过程中各阶段信息

--version

-V

-

打印版本号

--where=name

-w

-

仅备份选定的数据记录,在查询语句后边添加WHERE条件语句

--where=name

--xml

-X

-

备份文件以xml格式导出

--plugin-dir

-

客户端插件目录,--plugin-dir=name

--default-auth

-

客户端验证插件名称,--default-auth=name