参数
| 缩写
| 是否默认
| 说明
|
--print-defaults
| -
| -
| 用于打印默认参数
|
--no-defaults
| -
| -
| 禁止从默认配置文件中读取默认参数,
mysqldump 默认会从/etc/my.cnf 、
/etc/mysql/my.cnf 和~/.my.cnf 默认配置文件中
读取mysqldump 、 mariadb-dump 、 client、 client-server 和client-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 语句方式输出到备份文件; 如果为2 ,CHANGE 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=1 或dump-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=host 和MASTER_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 分隔文本的系统中,如Windows 、DOS , --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 TABLE 、TRUNCATE TABLE 、RENAME 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 |