天天看点

【MySQL】mysqldump参数详解

参数 缩写 是否默认 说明

--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

语句前添加

';

禁用索引,

INSERT

语句后添加

';

启用索引;

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

--skip-disable-keys

禁用**

--disable-keys

**

--dump-slave

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

默认为

如果为

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

将日志文件名和位置附加到备份文件中,默认值为 如果值为

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

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

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

;

;

;

;

--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

继续阅读