### 4.5.4 mysqldump——一个数据库备份程序

[](<>)[](<>)[](<>)[](<>)[](<>)

这[**mysql转储**](mysqldump.html)客户端实用程序执行[逻辑备份](glossary.html#glos_logical_backup)，生成一组 SQL 语句，可以执行这些语句来重现原始数据库对象定义和表数据。它转储一个或多个 MySQL 数据库以进行备份或传输到另一台 SQL 服务器。这[**mysql转储**](mysqldump.html)命令还可以生成 CSV、其他分隔文本或 XML 格式的输出。

提示

考虑使用[MySQL Shell 转储实用程序](https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-dump-instance-schema.html)，提供多线程并行转储、文件压缩和进度信息显示，以及 Oracle 云基础设施对象存储流、MySQL 数据库服务兼容性检查和修改等云功能。使用[MySQL Shell 负载转储实用程序](https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-load-dump.html).可以找到 MySQL Shell 的安装说明[这里](https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-install.html).

-   [性能和可扩展性注意事项](mysqldump.html#mysqldump-performance)

-   [调用语法](mysqldump.html#mysqldump-syntax)

-   [选项语法 - 按字母顺序汇总](mysqldump.html#mysqldump-option-summary)

-   [连接选项](mysqldump.html#mysqldump-connection-options)

-   [选项文件选项](mysqldump.html#mysqldump-option-file-options)

-   [DDL 选项](mysqldump.html#mysqldump-ddl-options)

-   [调试选项](mysqldump.html#mysqldump-debug-options)

-   [帮助选项](mysqldump.html#mysqldump-help-options)

-   [国际化选项](mysqldump.html#mysqldump-i18n-options)

-   [复制选项](mysqldump.html#mysqldump-replication-options)

-   [格式选项](mysqldump.html#mysqldump-format-options)

-   [过滤选项](mysqldump.html#mysqldump-filter-options)

-   [性能选项](mysqldump.html#mysqldump-performance-options)

-   [交易期权](mysqldump.html#mysqldump-transaction-options)

-   [选项组](mysqldump.html#mysqldump-option-groups)

-   [例子](mysqldump.html#mysqldump-option-examples)

-   [限制](mysqldump.html#mysqldump-restrictions)

[**mysql转储**](mysqldump.html)至少需要[`选择`](privileges-provided.html#priv_select)转储表的特权，[`显示视图`](privileges-provided.html#priv_show-view)对于倾倒的意见，[`扳机`](privileges-provided.html#priv_trigger)对于转储触发器，[`锁定表`](privileges-provided.html#priv_lock-tables)如果[`--单笔交易`](mysqldump.html#option_mysqldump_single-transaction)不使用选项，并且（从 MySQL 8.0.21 开始）[`过程`](privileges-provided.html#priv_process)如果`--无表空间`不使用选项。如选项描述中所述，某些选项可能需要其他权限。

要重新加载转储文件，您必须具有执行其中包含的语句所需的权限，例如适当的`创建`由这些语句创建的对象的权限。

[**mysql转储**](mysqldump.html)输出可以包括[`更改数据库`](alter-database.html)更改数据库排序规则的语句。这些可以在转储存储的程序以保留其字符编码时使用。要重新加载包含此类语句的转储文件，`改变`受影响数据库的权限是必需的。

笔记

在 Windows 上使用带有输出重定向的 PowerShell 进行的转储会创建一个具有 UTF-16 编码的文件：

```
mysqldump [options] > dump.sql
```

但是，UTF-16 不允许作为连接字符集（请参阅[不允许的客户端字符集](charset-connection.html#charset-connection-impermissible-client-charset))，因此无法正确加载转储文件。要解决此问题，请使用`--结果文件`选项，它以 ASCII 格式创建输出：

```
mysqldump [options] --result-file=dump.sql
```

不建议在服务器上启用 GTID 时加载转储文件（[`gtid_mode=ON`](replication-options-gtids.html#sysvar_gtid_mode))，如果您的转储文件包含系统表。[**mysql转储**](mysqldump.html)为使用非事务性 MyISAM 存储引擎的系统表发出 DML 指令，并且在启用 GTID 时不允许这种组合。

#### 性能和可扩展性注意事项

`mysql转储`优点包括在恢复之前查看甚至编辑输出的便利性和灵活性。您可以克隆用于开发和 DBA 工作的数据库，或者生成现有数据库的轻微变体用于测试。它不是用于备份大量数据的快速或可扩展的解决方案。对于大数据量，即使备份步骤花费了合理的时间，恢复数据也可能非常慢，因为重放 SQL 语句涉及用于插入的磁盘 I/O、索引创建等。

对于大规模备份和恢复，一个[身体的](glossary.html#glos_physical)备份更合适，以可以快速恢复的原始格式复制数据文件：

-   如果您的表主要是`InnoDB`表，或者如果你有混合`InnoDB`和`MyISAM`表，考虑使用**mysql备份**MySQL Enterprise Backup 产品的命令。（作为企业订阅的一部分提供。）它为以下用户提供最佳性能`InnoDB`以最小的中断备份；它还可以从`MyISAM`和其他存储引擎；它提供了许多方便的选项来适应不同的备份场景。看[第 30.2 节，“MySQL 企业备份概述”](mysql-enterprise-backup.html).

[**mysql转储**](mysqldump.html)可以逐行检索和转储表内容，也可以从表中检索整个内容并在转储之前将其缓冲在内存中。如果要转储大型表，则在内存中缓冲可能会成为问题。要逐行转储表，请使用[`- 快的`](mysqldump.html#option_mysqldump_quick)选项（或[`- 选择`](mysqldump.html#option_mysqldump_opt)，这使得[`- 快的`](mysqldump.html#option_mysqldump_quick)）。这[`- 选择`](mysqldump.html#option_mysqldump_opt)选项（因此[`- 快的`](mysqldump.html#option_mysqldump_quick)) 默认启用，因此要启用内存缓冲，请使用[`--skip-quick`](mysqldump.html#option_mysqldump_quick).

如果您使用的是最新版本的[**mysql转储**](mysqldump.html)要生成转储以重新加载到非常旧的 MySQL 服务器中，请使用[`--skip-opt`](mysqldump.html#option_mysqldump_skip-opt)选项而不是[`- 选择`](mysqldump.html#option_mysqldump_opt)要么[`--扩展插入`](mysqldump.html#option_mysqldump_extended-insert)选项。

有关更多信息[**mysql转储**](mysqldump.html)， 看[第 7.4 节，“使用 mysqldump 进行备份”](using-mysqldump.html).

#### 调用语法

一般有三种使用方式[**mysql转储**](mysqldump.html)— 为了转储一组一个或多个表、一组一个或多个完整数据库或整个 MySQL 服务器 — 如下所示：

```
mysqldump [options] db_name [tbl_name ...]
mysqldump [options] --databases db_name ...
mysqldump [options] --all-databases
```

要转储整个数据库，请不要命名以下任何表*`数据库名称`*，或使用[`--数据库`](mysqldump.html#option_mysqldump_databases)要么[`--所有数据库`](mysqldump.html#option_mysqldump_all-databases)选项。

查看您的版本的选项列表[**mysql转储**](mysqldump.html)支持，发出命令[**mysqldump --帮助**](mysqldump.html).

#### 选项语法 - 按字母顺序汇总

[**mysql转储**](mysqldump.html)支持以下选项，可以在命令行中指定，也可以在`[mysql转储]`和`[客户]`选项文件的组。有关 MySQL 程序使用的选项文件的信息，请参阅[第 4.2.2.2 节，“使用选项文件”](option-files.html).

[](<>)

**表 4.14 mysqldump 选项**

| 选项名称 | 描述 | 介绍 | 已弃用 |
| ---- | --- | --- | --- |
| [--添加-删除-数据库](mysqldump.html#option_mysqldump_add-drop-database) | 在每个 CREATE DATABASE 语句之前添加 DROP DATABASE 语句 |  |  |
| [--add-drop-table](mysqldump.html#option_mysqldump_add-drop-table) | 在每个 CREATE TABLE 语句之前添加 DROP TABLE 语句 |  |  |
| [--add-drop-trigger](mysqldump.html#option_mysqldump_add-drop-trigger) | 在每个 CREATE TRIGGER 语句之前添加 DROP TRIGGER 语句 |  |  |
| [--添加锁](mysqldump.html#option_mysqldump_add-locks) | 用 LOCK TABLES 和 UNLOCK TABLES 语句包围每个表转储 |  |  |
| [--所有数据库](mysqldump.html#option_mysqldump_all-databases) | 转储所有数据库中的所有表 |  |  |
| [--允许关键字](mysqldump.html#option_mysqldump_allow-keywords) | 允许创建作为关键字的列名 |  |  |
| [--apply-replica-statements](mysqldump.html#option_mysqldump_apply-replica-statements) | 在 CHANGE REPLICATION SOURCE TO 语句之前包含 STOP REPLICA 并在输出末尾包含 START REPLICA | 8.0.26 |  |
| [--apply-slave-statements](mysqldump.html#option_mysqldump_apply-slave-statements) | 在 CHANGE MASTER 语句之前包括 STOP SLAVE，在输出结束时包括 START SLAVE |  | 8.0.26 |
| [--绑定地址](mysqldump.html#option_mysqldump_bind-address) | 使用指定的网络接口连接 MySQL Server |  |  |
| [--字符集目录](mysqldump.html#option_mysqldump_character-sets-dir) | 安装字符集的目录 |  |  |
| [--列统计](mysqldump.html#option_mysqldump_column-statistics) | 编写 ANALYZE TABLE 语句以生成统计直方图 |  |  |
| [--注释](mysqldump.html#option_mysqldump_comments) | 向转储文件添加注释 |  |  |
| [--袖珍的](mysqldump.html#option_mysqldump_compact) | 产生更紧凑的输出 |  |  |
| [--兼容的](mysqldump.html#option_mysqldump_compatible) | 生成与其他数据库系统或旧 MySQL 服务器更兼容的输出 |  |  |
| [--完成插入](mysqldump.html#option_mysqldump_complete-insert) | 使用包含列名的完整 INSERT 语句 |  |  |
| [--压缩](mysqldump.html#option_mysqldump_compress) | 压缩客户端和服务器之间发送的所有信息 |  | 8.0.18 |
| [--压缩算法](mysqldump.html#option_mysqldump_compression-algorithms) | 允许连接到服务器的压缩算法 | 8.0.18 |  |
| [--创建选项](mysqldump.html#option_mysqldump_create-options) | 在 CREATE TABLE 语句中包含所有 MySQL 特定的表选项 |  |  |
| [-- 数据库](mysqldump.html#option_mysqldump_databases) | 将所有名称参数解释为数据库名称 |  |  |
| [--调试](mysqldump.html#option_mysqldump_debug) | 写调试日志 |  |  |
| [--调试检查](mysqldump.html#option_mysqldump_debug-check) | 程序退出时打印调试信息 |  |  |
| [--调试信息](mysqldump.html#option_mysqldump_debug-info) | 程序退出时打印调试信息、内存和 CPU 统计信息 |  |  |
| [--默认身份验证](mysqldump.html#option_mysqldump_default-auth) | 要使用的身份验证插件 |  |  |
| [--默认字符集](mysqldump.html#option_mysqldump_default-character-set) | 指定默认字符集 |  |  |
| [--defaults-额外文件](mysqldump.html#option_mysqldump_defaults-extra-file) | 除了通常的选项文件外，还读取命名的选项文件 |  |  |
| [--默认文件](mysqldump.html#option_mysqldump_defaults-file) | 只读命名选项文件 |  |  |
| [--defaults-组后缀](mysqldump.html#option_mysqldump_defaults-group-suffix) | 选项组后缀值 |  |  |
| [--删除主日志](mysqldump.html#option_mysqldump_delete-master-logs) | 在复制源服务器上，执行转储操作后删除二进制日志 |  | 8.0.26 |
| [--删除源日志](mysqldump.html#option_mysqldump_delete-source-logs) | 在复制源服务器上，执行转储操作后删除二进制日志 | 8.0.26 |  |
| [--禁用键](mysqldump.html#option_mysqldump_disable-keys) | 对于每个表，在 INSERT 语句周围加上禁用和启用键的语句 |  |  |
| [--转储日期](mysqldump.html#option_mysqldump_dump-date) | 如果给出--comments，则将转储日期包括为“转储完成”注释 |  |  |
| [--转储副本](mysqldump.html#option_mysqldump_dump-replica) | 包含 CHANGE REPLICATION SOURCE TO 语句，列出副本源的二进制日志坐标 | 8.0.26 |  |
| [--转储奴隶](mysqldump.html#option_mysqldump_dump-slave) | 包括列出副本源的二进制日志坐标的 CHANGE MASTER 语句 |  | 8.0.26 |
| [--启用明文插件](mysqldump.html#option_mysqldump_enable-cleartext-plugin) | 启用明文身份验证插件 |  |  |
| [--事件](mysqldump.html#option_mysqldump_events) | 从转储数据库转储事件 |  |  |
| [--扩展插入](mysqldump.html#option_mysqldump_extended-insert) | 使用多行 INSERT 语法 |  |  |
| [--fields-enclosed-by](mysqldump.html#option_mysqldump_fields) | 此选项与 --tab 选项一起使用，与 LOAD DATA 的相应子句具有相同的含义 |  |  |
| [--字段转义](mysqldump.html#option_mysqldump_fields) | 此选项与 --tab 选项一起使用，与 LOAD DATA 的相应子句具有相同的含义 |  |  |
| [--fields-optional-enclosure-by](mysqldump.html#option_mysqldump_fields) | 此选项与 --tab 选项一起使用，与 LOAD DATA 的相应子句具有相同的含义 |  |  |
| [--字段终止者](mysqldump.html#option_mysqldump_fields) | 此选项与 --tab 选项一起使用，与 LOAD DATA 的相应子句具有相同的含义 |  |  |
| [--刷新日志](mysqldump.html#option_mysqldump_flush-logs) | 在开始转储之前刷新 MySQL 服务器日志文件 |  |  |
| [--flush-特权](mysqldump.html#option_mysqldump_flush-privileges) | 转储 mysql 数据库后发出 FLUSH PRIVILEGES 语句 |  |  |
| [--力量](mysqldump.html#option_mysqldump_force) | 即使在表转储期间发生 SQL 错误也继续 |  |  |
| [--get-server-public-key](mysqldump.html#option_mysqldump_get-server-public-key) | 从服务器请求 RSA 公钥 |  |  |
| [--帮助](mysqldump.html#option_mysqldump_help) | 显示帮助信息并退出 |  |  |
| [--hex-blob](mysqldump.html#option_mysqldump_hex-blob) | 使用十六进制表示法转储二进制列 |  |  |
| [--主持人](mysqldump.html#option_mysqldump_host) | MySQL服务器所在的主机 |  |  |
| [--忽略错误](mysqldump.html#option_mysqldump_ignore-error) | 忽略指定的错误 |  |  |
| [--忽略表](mysqldump.html#option_mysqldump_ignore-table) | 不要转储给定的表 |  |  |
| [--包括主主机端口](mysqldump.html#option_mysqldump_include-master-host-port) | 包括大师\_主机/主控\_使用 --dump-slave 生成​​的 CHANGE MASTER 语句中的 PORT 选项 |  | 8.0.26 |
| [--包括源主机端口](mysqldump.html#option_mysqldump_include-source-host-port) | 包括源\_主机和源\_使用 --dump-replica 生成的 CHANGE REPLICATION SOURCE TO 语句中的 PORT 选项 | 8.0.26 |  |
| [--插入-忽略](mysqldump.html#option_mysqldump_insert-ignore) | 编写 INSERT IGNORE 而不是 INSERT 语句 |  |  |
| [--行终止于](mysqldump.html#option_mysqldump_lines-terminated-by) | 此选项与 --tab 选项一起使用，与 LOAD DATA 的相应子句具有相同的含义 |  |  |
| [--锁定所有表](mysqldump.html#option_mysqldump_lock-all-tables) | 锁定所有数据库中的所有表 |  |  |
| [--锁表](mysqldump.html#option_mysqldump_lock-tables) | 在转储它们之前锁定所有表 |  |  |
| [--日志错误](mysqldump.html#option_mysqldump_log-error) | 将警告和错误附加到命名文件 |  |  |
| [--登录路径](mysqldump.html#option_mysqldump_login-path) | 从 .mylogin.cnf 读取登录路径选项 |  |  |
| [--主要的数据](mysqldump.html#option_mysqldump_master-data) | 将二进制日志文件名和位置写入输出 |  | 8.0.26 |
| [--max-allowed-packet](mysqldump.html#option_mysqldump_max-allowed-packet) | 发送到服务器或从服务器接收的最大数据包长度 |  |  |
| [--净缓冲区长度](mysqldump.html#option_mysqldump_net-buffer-length) | TCP/IP 和套接字通信的缓冲区大小 |  |  |
| [--网络超时](mysqldump.html#option_mysqldump_network-timeout) | 增加网络超时以允许更大的表转储 |  |  |
| [--no-autocommit](mysqldump.html#option_mysqldump_no-autocommit) | 在 SET autocommit = 0 和 COMMIT 语句中包含每个转储表的 INSERT 语句 |  |  |
| [--no-create-db](mysqldump.html#option_mysqldump_no-create-db) | 不要编写 CREATE DATABASE 语句 |  |  |
| [--无创建信息](mysqldump.html#option_mysqldump_no-create-info) | 不要编写重新创建每个转储表的 CREATE TABLE 语句 |  |  |
| [--没有数据](mysqldump.html#option_mysqldump_no-data) | 不要转储表格内容 |  |  |
| [--无默认值](mysqldump.html#option_mysqldump_no-defaults) | 不读取选项文件 |  |  |
| [--no-set-names](mysqldump.html#option_mysqldump_no-set-names) | 与 --skip-set-charset 相同 |  |  |
| [--无表空间](mysqldump.html#option_mysqldump_no-tablespaces) | 不要在输出中编写任何 CREATE LOGFILE GROUP 或 CREATE TABLESPACE 语句 |  |  |
| [--选择](mysqldump.html#option_mysqldump_opt) | --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset 的简写 |  |  |
| [--按主排序](mysqldump.html#option_mysqldump_order-by-primary) | 转储按主键或第一个唯一索引排序的每个表的行 |  |  |
| [--密码](mysqldump.html#option_mysqldump_password) | 连接服务器时使用的密码 |  |  |
| [--密码1](mysqldump.html#option_mysqldump_password1) | 连接到服务器时使用的第一个多重身份验证密码 | 8.0.27 |  |
| [--密码2](mysqldump.html#option_mysqldump_password2) | 连接到服务器时使用的第二个多重身份验证密码 | 8.0.27 |  |
| [--密码3](mysqldump.html#option_mysqldump_password3) | 连接到服务器时使用的第三个多重身份验证密码 | 8.0.27 |  |
| [--管道](mysqldump.html#option_mysqldump_pipe) | 使用命名管道连接到服务器（仅限 Windows） |  |  |
| [--插件目录](mysqldump.html#option_mysqldump_plugin-dir) | 插件安装目录 |  |  |
| [--港口](mysqldump.html#option_mysqldump_port) | 用于连接的 TCP/IP 端口号 |  |  |
| [--打印默认值](mysqldump.html#option_mysqldump_print-defaults) | 打印默认选项 |  |  |
| [--协议](mysqldump.html#option_mysqldump_protocol) | 要使用的传输协议 |  |  |
| [--快的](mysqldump.html#option_mysqldump_quick) | 一次从服务器检索表的行 |  |  |
| [--quote-names](mysqldump.html#option_mysqldump_quote-names) | 在反引号字符中引用标识符 |  |  |
| [--代替](mysqldump.html#option_mysqldump_replace) | 编写 REPLACE 语句而不是 INSERT 语句 |  |  |
| [--结果文件](mysqldump.html#option_mysqldump_result-file) | 直接输出到给定文件 |  |  |
| [--例程](mysqldump.html#option_mysqldump_routines) | 从转储的数据库中转储存储的例程（过程和函数） |  |  |
| [--服务器公钥路径](mysqldump.html#option_mysqldump_server-public-key-path) | 包含 RSA 公钥的文件的路径名 |  |  |
| [--set-charset](mysqldump.html#option_mysqldump_set-charset) | 添加 SET NAMES 默认\_特点\_设置为输出 |  |  |
| [--set-gtid-purge](mysqldump.html#option_mysqldump_set-gtid-purged) | 是否添加 SET @@GLOBAL.GTID\_清除输出 |  |  |
| [--shared-memory-base-name](mysqldump.html#option_mysqldump_shared-memory-base-name) | 共享内存连接的共享内存名称（仅限 Windows） |  |  |
| [--show-create-skip-secondary-engine](mysqldump.html#option_mysqldump_show-create-skip-secondary-engine) | 从 CREATE TABLE 语句中排除 SECONDARY ENGINE 子句 | 8.0.18 |  |
| [--单笔交易](mysqldump.html#option_mysqldump_single-transaction) | 在从服务器转储数据之前发出 BEGIN SQL 语句 |  |  |
| [--skip-add-drop-table](mysqldump.html#option_mysqldump_add-drop-table) | 不要在每个 CREATE TABLE 语句之前添加 DROP TABLE 语句 |  |  |
| [--skip-add-locks](mysqldump.html#option_mysqldump_add-locks) | 不加锁 |  |  |
| [--跳过评论](mysqldump.html#option_mysqldump_skip-comments) | 不要在转储文件中添加注释 |  |  |
| [--跳过紧凑](mysqldump.html#option_mysqldump_compact) | 不要产生更紧凑的输出 |  |  |
| [--skip-disable-keys](mysqldump.html#option_mysqldump_disable-keys) | 不要禁用键 |  |  |
| [--skip-extended-insert](mysqldump.html#option_mysqldump_extended-insert) | 关闭扩展插入 |  |  |
| [--skip-opt](mysqldump.html#option_mysqldump_skip-opt) | 关闭由 --opt 设置的选项 |  |  |
| [--skip-quick](mysqldump.html#option_mysqldump_quick) | 不要一次从服务器检索表的行 |  |  |
| [--skip-quote-names](mysqldump.html#option_mysqldump_quote-names) | 不要引用标识符 |  |  |
| [--skip-set-charset](mysqldump.html#option_mysqldump_set-charset) | 不要写 SET NAMES 语句 |  |  |
| [--跳过触发器](mysqldump.html#option_mysqldump_triggers) | 不要转储触发器 |  |  |
| [--skip-tz-utc](mysqldump.html#option_mysqldump_tz-utc) | 关闭 tz-utc |  |  |
| [--插座](mysqldump.html#option_mysqldump_socket) | 要使用的 Unix 套接字文件或 Windows 命名管道 |  |  |
| [--源数据](mysqldump.html#option_mysqldump_source-data) | 将二进制日志文件名和位置写入输出 | 8.0.26 |  |
| [--ssl-ca](mysqldump.html#option_mysqldump_ssl) | 包含受信任 SSL 证书颁发机构列表的文件 |  |  |
| [--ssl-capath](mysqldump.html#option_mysqldump_ssl) | 包含受信任的 SSL 证书颁发机构证书文件的目录 |  |  |
| [--ssl 证书](mysqldump.html#option_mysqldump_ssl) | 包含 X.509 证书的文件 |  |  |
| [--ssl密码](mysqldump.html#option_mysqldump_ssl) | 连接加密的允许密码 |  |  |
| [--ssl-crl](mysqldump.html#option_mysqldump_ssl) | 包含证书吊销列表的文件 |  |  |
| [--ssl-crlpath](mysqldump.html#option_mysqldump_ssl) | 包含证书吊销列表文件的目录 |  |  |
| [--ssl-fips 模式](mysqldump.html#option_mysqldump_ssl-fips-mode) | 客户端是否开启 FIPS 模式 |  |  |
| [--ssl 密钥](mysqldump.html#option_mysqldump_ssl) | 包含 X.509 密钥的文件 |  |  |
| [--ssl 模式](mysqldump.html#option_mysqldump_ssl) | 连接到服务器的所需安全状态 |  |  |
| [--ssl 会话数据](mysqldump.html#option_mysqldump_ssl) | 包含 SSL 会话数据的文件 | 8.0.29 |  |
| [--ssl-session-data-continue-on-failed-reuse](mysqldump.html#option_mysqldump_ssl) | 会话重用失败时是否建立连接 | 8.0.29 |  |
| [--标签](mysqldump.html#option_mysqldump_tab) | 生成制表符分隔的数据文件 |  |  |
| [-- 表](mysqldump.html#option_mysqldump_tables) | 覆盖 --databases 或 -B 选项 |  |  |
| [--tls-密码套件](mysqldump.html#option_mysqldump_tls-ciphersuites) | 用于加密连接的允许 TLSv1.3 密码套件 | 8.0.16 |  |
| [--tls-版本](mysqldump.html#option_mysqldump_tls-version) | 加密连接的允许 TLS 协议 |  |  |
| [--触发器](mysqldump.html#option_mysqldump_triggers) | 每个转储表的转储触发器 |  |  |
| [--tz-utc](mysqldump.html#option_mysqldump_tz-utc) | 添加设置时间\_ZONE='+00:00' 转储文件 |  |  |
| [--用户](mysqldump.html#option_mysqldump_user) | 连接到服务器时使用的 MySQL 用户名 |  |  |
| [--详细](mysqldump.html#option_mysqldump_verbose) | 详细模式 |  |  |
| [--版本](mysqldump.html#option_mysqldump_version) | 显示版本信息并退出 |  |  |
| [--在哪里](mysqldump.html#option_mysqldump_where) | 仅转储由给定 WHERE 条件选择的行 |  |  |
| [--xml](mysqldump.html#option_mysqldump_xml) | 生成 XML 输出 |  |  |
| [--zstd-压缩级别](mysqldump.html#option_mysqldump_zstd-compression-level) | 与使用 zstd 压缩的服务器的连接的压缩级别 | 8.0.18 |  |

#### 连接选项

这[**mysql转储**](mysqldump.html)命令登录到 MySQL 服务器以提取信息。以下选项指定如何连接到 MySQL 服务器，无论是在同一台机器上还是在远程系统上。

-   [](<>) [`--绑定地址=*`IP地址`*`](mysqldump.html#option_mysqldump_bind-address)

    [](<>)[](<>)

    在具有多个网络接口的计算机上，使用此选项来选择用于连接 MySQL 服务器的接口。

-   [](<>) `- 压缩`,`-C`

    [](<>)[](<>)

    如果可能，压缩客户端和服务器之间发送的所有信息。看[第 4.2.8 节，“连接压缩控制”](connection-compression-control.html).

    从 MySQL 8.0.18 开始，此选项已弃用。期望它在 MySQL 的未来版本中被删除。看[配置旧版连接压缩](connection-compression-control.html#connection-compression-legacy-configuration).

-   [](<>) [`--压缩算法=*`价值`*`](mysqldump.html#option_mysqldump_compression-algorithms)

    [](<>)[](<>)

    连接到服务器的允许压缩算法。可用的算法与[`协议压缩算法`](server-system-variables.html#sysvar_protocol_compression_algorithms)系统变量。默认值为`未压缩`.

    有关详细信息，请参阅[第 4.2.8 节，“连接压缩控制”](connection-compression-control.html).

    此选项是在 MySQL 8.0.18 中添加的。

-   [](<>) `--default-auth=*`插入`*`

    [](<>)[](<>)

    关于使用哪个客户端身份验证插件的提示。看[第 6.2.17 节，“可插拔身份验证”](pluggable-authentication.html).

-   [](<>) [`--启用明文插件`](mysqldump.html#option_mysqldump_enable-cleartext-plugin)

    [](<>)[](<>)

    启用`mysql_clear_password`明文身份验证插件。（看[第 6.4.1.4 节，“客户端明文可插入身份验证”](cleartext-pluggable-authentication.html).)

-   [](<>) [`--get-server-public-key`](mysqldump.html#option_mysqldump_get-server-public-key)

    [](<>)[](<>)

    从服务器请求基于 RSA 密钥对的密码交换所需的公钥。此选项适用于通过`cache_sha2_password`身份验证插件。对于该插件，除非请求，否则服务器不会发送公钥。对于未使用该插件进行身份验证的帐户，此选项将被忽略。如果不使用基于 RSA 的密码交换，它也会被忽略，例如客户端使用安全连接连接到服务器的情况。

    如果[`--server-public-key-path=*`文件名`*`](mysqldump.html#option_mysqldump_server-public-key-path)给出并指定一个有效的公钥文件，它优先于[`--get-server-public-key`](mysqldump.html#option_mysqldump_get-server-public-key).

    有关信息`cache_sha2_password`插件，见[第 6.4.1.2 节，“缓存 SHA-2 可插入身份验证”](caching-sha2-pluggable-authentication.html).

-   [](<>) `--主机=*`主机名`*`,`-h *`主机名`*`

    [](<>)[](<>)

    从给定主机上的 MySQL 服务器转储数据。默认主机是`本地主机`.

-   [](<>) [`--登录路径=*`姓名`*`](mysqldump.html#option_mysqldump_login-path)

    [](<>)[](<>)

    从命名登录路径中读取选项`.mylogin.cnf`登录路径文件。“登录路径”是一个选项组，其中包含指定要连接到哪个 MySQL 服务器以及要作为哪个帐户进行身份验证的选项。要创建或修改登录路径文件，请使用[**mysql\_配置\_编辑**](mysql-config-editor.html)效用。看[第 4.6.7 节，“mysql\_配置\_编辑器 — MySQL 配置实用程序”](mysql-config-editor.html).

    有关此选项和其他选项文件选项的更多信息，请参阅[第 4.2.2.3 节，“影响选项文件处理的命令行选项”](option-file-options.html).

-   [](<>) `--密码[=*`密码`*]`,`-p[*`密码`*]`

    [](<>)[](<>)

    用于连接服务器的 MySQL 帐户的密码。密码值是可选的。如果不给，[**mysql转储**](mysqldump.html)提示一个。如果给出，必须有*没有空间*之间[`--密码=`](mysqldump.html#option_mysqldump_password)要么`-p`和它后面的密码。如果未指定密码选项，则默认为不发送密码。

    在命令行上指定密码应该被认为是不安全的。为避免在命令行上提供密码，请使用选项文件。看[第 6.1.2.1 节，“最终用户密码安全指南”](password-security-user.html).

    明确指定没有密码并且[**mysql转储**](mysqldump.html)不应该提示输入一个，使用[`--跳过密码`](mysqldump.html#option_mysqldump_password)选项。

-   [](<>) [`--密码1[=*`pass_val`*]`](mysqldump.html#option_mysqldump_password1)

    [](<>)

    用于连接服务器的 MySQL 帐户的多重身份验证因素 1 的密码。密码值是可选的。如果不给，[**mysql转储**](mysqldump.html)提示一个。如果给出，必须有*没有空间*之间[`--密码1=`](mysqldump.html#option_mysqldump_password1)和它后面的密码。如果未指定密码选项，则默认为不发送密码。

    在命令行上指定密码应该被认为是不安全的。为避免在命令行上提供密码，请使用选项文件。看[第 6.1.2.1 节，“最终用户密码安全指南”](password-security-user.html).

    明确指定没有密码并且[**mysql转储**](mysqldump.html)不应该提示输入一个，使用[`--skip-password1`](mysqldump.html#option_mysqldump_password1)选项。

    [`--密码1`](mysqldump.html#option_mysqldump_password1)和[`- 密码`](mysqldump.html#option_mysqldump_password)是同义词[`--skip-password1`](mysqldump.html#option_mysqldump_password1)和[`--跳过密码`](mysqldump.html#option_mysqldump_password).

-   [](<>) [`--密码2[=*`pass_val`*]`](mysqldump.html#option_mysqldump_password2)

    [](<>)

    用于连接服务器的 MySQL 帐户的多重身份验证因子 2 的密码。此选项的语义类似于[`--密码1`](mysqldump.html#option_mysqldump_password1);有关详细信息，请参阅该选项的说明。

-   [](<>) [`--密码3[=*`pass_val`*]`](mysqldump.html#option_mysqldump_password3)

    [](<>)

    用于连接服务器的 MySQL 帐户的多重身份验证因子 3 的密码。此选项的语义类似于[`--密码1`](mysqldump.html#option_mysqldump_password1);有关详细信息，请参阅该选项的说明。

-   [](<>) `- 管道`,`-W`

    [](<>)[](<>)

    在 Windows 上，使用命名管道连接到服务器。此选项仅适用于服务器以[`命名管道`](server-system-variables.html#sysvar_named_pipe)启用系统变量以支持命名管道连接。此外，建立连接的用户必须是由指定的 Windows 组的成员[`named_pipe_full_access_group`](server-system-variables.html#sysvar_named_pipe_full_access_group)系统变量。

-   [](<>) `--插件目录=*`目录名`*`

    [](<>)[](<>)

    查找插件的目录。指定此选项，如果[`--default-auth`](mysqldump.html#option_mysqldump_default-auth)选项用于指定身份验证插件，但[**mysql转储**](mysqldump.html)没有找到它。看[第 6.2.17 节，“可插拔身份验证”](pluggable-authentication.html).

-   [](<>) `--端口=*`端口号`*`,`-P *`端口号`*`

    [](<>)[](<>)

    对于 TCP/IP 连接，要使用的端口号。

-   [](<>) `--protocol={TCP|SOCKET|管道|内存}`

    [](<>)[](<>)

    用于连接到服务器的传输协议。当其他连接参数通常导致使用您想要的协议以外的协议时，它很有用。有关允许值的详细信息，请参见[第 4.2.7 节，“连接传输协议”](transport-protocols.html).

-   [](<>) [`--server-public-key-path=*`文件名`*`](mysqldump.html#option_mysqldump_server-public-key-path)

    [](<>)[](<>)

    PEM 格式的文件的路径名，其中包含服务器基于 RSA 密钥对的密码交换所需的公钥的客户端副本。此选项适用于通过`sha256_password`要么`cache_sha2_password`身份验证插件。对于未使用这些插件之一进行身份验证的帐户，此选项将被忽略。如果不使用基于 RSA 的密码交换，它也会被忽略，例如客户端使用安全连接连接到服务器的情况。

    如果[`--server-public-key-path=*`文件名`*`](mysqldump.html#option_mysqldump_server-public-key-path)给出并指定一个有效的公钥文件，它优先于[`--get-server-public-key`](mysqldump.html#option_mysqldump_get-server-public-key).

    为了`sha256_password`, 此选项仅适用于使用 OpenSSL 构建 MySQL 的情况。

    有关信息`sha256_password`和`cache_sha2_password`插件，见[第 6.4.1.3 节，“SHA-256 可插入身份验证”](sha256-pluggable-authentication.html)， 和[第 6.4.1.2 节，“缓存 SHA-2 可插入身份验证”](caching-sha2-pluggable-authentication.html).

-   [](<>) `--socket=*`小路`*`,`-S *`小路`*`

    [](<>)[](<>)

    对于连接到`本地主机`，要使用的 Unix 套接字文件，或者在 Windows 上，要使用的命名管道的名称。

    在 Windows 上，此选项仅在服务器以[`命名管道`](server-system-variables.html#sysvar_named_pipe)启用系统变量以支持命名管道连接。此外，建立连接的用户必须是由指定的 Windows 组的成员[`named_pipe_full_access_group`](server-system-variables.html#sysvar_named_pipe_full_access_group)系统变量。

-   [](<>) `--ssl*`

    [](<>)[](<>)

    开头的选项`--ssl`指定是否使用加密连接到服务器并指示在哪里可以找到 SSL 密钥和证书。看[加密连接的命令选项](connection-options.html#encrypted-connection-options).

-   [](<>) [`--ssl-fips-mode={OFF|ON|STRICT}`](mysqldump.html#option_mysqldump_ssl-fips-mode)

    [](<>)[](<>)

    控制是否在客户端启用 FIPS 模式。这[`--ssl-fips-模式`](mysqldump.html#option_mysqldump_ssl-fips-mode)选项不同于其他`--ssl-*`xxx`*`选项，因为它不用于建立加密连接，而是影响允许哪些加密操作。看[第 6.8 节，“FIPS 支持”](fips-mode.html).

    这些[`--ssl-fips-模式`](mysqldump.html#option_mysqldump_ssl-fips-mode)允许的值：

    -   `离开`：禁用 FIPS 模式。

    -   `在`：启用 FIPS 模式。

    -   `严格的`：启用“严格”FIPS 模式。

    笔记

    如果 OpenSSL FIPS 对象模块不可用，则唯一允许的值为[`--ssl-fips-模式`](mysqldump.html#option_mysqldump_ssl-fips-mode)是`离开`.在这种情况下，设置[`--ssl-fips-模式`](mysqldump.html#option_mysqldump_ssl-fips-mode)到`在`要么`严格的`导致客户端在启动时产生警告并在非 FIPS 模式下运行。

-   [](<>) [`--tls-ciphersuites=*`密码套件列表`*`](mysqldump.html#option_mysqldump_tls-ciphersuites)

    [](<>)[](<>)

    允许使用 TLSv1.3 的加密连接的密码套件。该值是一个或多个以冒号分隔的密码套件名称的列表。可以为此选项命名的密码套件取决于用于编译 MySQL 的 SSL 库。有关详细信息，请参阅[第 6.3.2 节，“加密连接 TLS 协议和密码”](encrypted-connection-protocols-ciphers.html).

    此选项是在 MySQL 8.0.16 中添加的。

-   [](<>) [`--tls-版本=*`协议列表`*`](mysqldump.html#option_mysqldump_tls-version)

    [](<>)[](<>)

    加密连接的允许 TLS 协议。该值是一个或多个逗号分隔的协议名称的列表。可以为此选项命名的协议取决于用于编译 MySQL 的 SSL 库。有关详细信息，请参阅[第 6.3.2 节，“加密连接 TLS 协议和密码”](encrypted-connection-protocols-ciphers.html).

-   [](<>) `--用户=*`用户名`*`,`-u*`用户名`*`

    [](<>)[](<>)

    用于连接到服务器的MySQL帐户的用户名。

-   [](<>) [`--压缩级别=*`数量`*`](mysqldump.html#option_mysqldump_zstd-compression-level)

    [](<>)[](<>)

    用于连接到使用`zstd`压缩算法。允许的水平从1到22，较大的值表示压缩水平增加。默认值`zstd`压缩级别为3。压缩级别设置对不使用压缩级别的连接没有影响`zstd`压缩。

    有关更多信息，请参阅[第4.2.8节，“连接压缩控制”](connection-compression-control.html).

    这个选项是在MySQL 8.0.18中添加的。

#### 选项文件选项

这些选项用于控制要读取的选项文件。

-   [](<>) [`--默认额外文件=*`文件名`*`](mysqldump.html#option_mysqldump_defaults-extra-file)

    [](<>)[](<>)

    在全局选项文件之后读取此选项文件，但（在Unix上）在用户选项文件之前读取。如果文件不存在或无法访问，则会发生错误。如果*`文件名`*不是绝对路径名，而是相对于当前目录进行解释。

    有关此选项和其他选项文件选项的更多信息，请参阅[第4.2.2.3节，“影响选项文件处理的命令行选项”](option-file-options.html).

-   [](<>) [`--默认文件=*`文件名`*`](mysqldump.html#option_mysqldump_defaults-file)

    [](<>)[](<>)

    仅使用给定的选项文件。如果文件不存在或无法访问，则会发生错误。如果*`文件名`*不是绝对路径名，它是相对于当前目录解释的。

    例外：即使有[`--defaults 文件`](option-file-options.html#option_general_defaults-file), 客户端程序读取`.mylogin.cnf`.

    有关此选项和其他选项文件选项的更多信息，请参阅[第 4.2.2.3 节，“影响选项文件处理的命令行选项”](option-file-options.html).

-   [](<>) [`--defaults-group-suffix=*`字符串`*`](mysqldump.html#option_mysqldump_defaults-group-suffix)

    [](<>)[](<>)

    不仅可以读取通常的选项组，还可以读取具有通常名称和后缀的组*`字符串`*.例如，[**mysql转储**](mysqldump.html)通常读取`[客户]`和`[mysql转储]`团体。如果这个选项被给出为[`--defaults-group-suffix=_other`](mysqldump.html#option_mysqldump_defaults-group-suffix),[**mysql转储**](mysqldump.html)还读取`[client_other]`和`[mysqldump_other]`团体。

    有关此选项和其他选项文件选项的更多信息，请参阅[第 4.2.2.3 节，“影响选项文件处理的命令行选项”](option-file-options.html).

-   [](<>) [`--no-defaults`](mysqldump.html#option_mysqldump_no-defaults)

    [](<>)[](<>)

    不要读取任何选项文件。如果由于从选项文件中读取未知选项而导致程序启动失败，[`--no-defaults`](mysqldump.html#option_mysqldump_no-defaults)可以用来防止它们被读取。

    唯一的例外是`.mylogin.cnf`如果文件存在，则在所有情况下都会读取文件。这允许以比在命令行上更安全的方式指定密码，即使在[`--no-defaults`](mysqldump.html#option_mysqldump_no-defaults)用来。创造`.mylogin.cnf`， 使用[**mysql\_配置\_编辑**](mysql-config-editor.html)效用。看[第 4.6.7 节，“mysql\_配置\_编辑器 — MySQL 配置实用程序”](mysql-config-editor.html).

    有关此选项和其他选项文件选项的更多信息，请参阅[第 4.2.2.3 节，“影响选项文件处理的命令行选项”](option-file-options.html).

-   [](<>) [`--打印默认值`](mysqldump.html#option_mysqldump_print-defaults)

    [](<>)[](<>)

    打印程序名称和它从选项文件中获取的所有选项。

    有关此选项和其他选项文件选项的更多信息，请参阅[第 4.2.2.3 节，“影响选项文件处理的命令行选项”](option-file-options.html).

#### DDL 选项

使用场景[**mysql转储**](mysqldump.html)包括设置一个全新的 MySQL 实例（包括数据库表），以及用现有的数据库和表替换现有实例中的数据。以下选项允许您通过在转储文件中编码各种 DDL 语句来指定在恢复转储时要拆除和设置的内容。

-   [](<>) `--add-drop-database`

    [](<>)[](<>)

    写一个[`删除数据库`](drop-database.html)每个之前的声明[`创建数据库`](create-database.html)陈述。此选项通常与[`--所有数据库`](mysqldump.html#option_mysqldump_all-databases)要么[`--数据库`](mysqldump.html#option_mysqldump_databases)选项，因为没有[`创建数据库`](create-database.html)除非指定了这些选项之一，否则将编写语句。

    笔记

    在 MySQL 8.0 中，`mysql`schema 被认为是最终用户无法删除的系统模式。如果[`--add-drop-database`](mysqldump.html#option_mysqldump_add-drop-database)与[`--所有数据库`](mysqldump.html#option_mysqldump_all-databases)或与[`--数据库`](mysqldump.html#option_mysqldump_databases)要转储的模式列表包括`mysql`，转储文件包含一个`删除数据库`mysql``重新加载转储文件时导致错误的语句。

    相反，使用[`--add-drop-database`](mysqldump.html#option_mysqldump_add-drop-database)， 采用[`--数据库`](mysqldump.html#option_mysqldump_databases)带有要转储的模式列表，其中列表不包括`mysql`.

-   [](<>) `--add-drop-table`

    [](<>)[](<>)

    写一个[`删除表`](drop-table.html)每个之前的声明[`创建表`](create-table.html)陈述。

-   [](<>) `--add-drop-trigger`

    [](<>)[](<>)

    写一个[`下降触发器`](drop-trigger.html)每个之前的声明[`创建触发器`](create-trigger.html)陈述。

-   [](<>) `--所有表空间`,`-Y`

    [](<>)[](<>)

    将创建任何表空间所需的所有 SQL 语句添加到表转储中[`新开发银行`](mysql-cluster.html)桌子。此信息不包含在输出中[**mysql转储**](mysqldump.html).此选项当前仅与 NDB Cluster 表相关。

-   [](<>) `--no-create-db`,`-n`

    [](<>)[](<>)

    抑制[`创建数据库`](create-database.html)否则将包含在输出中的语句，如果[`--数据库`](mysqldump.html#option_mysqldump_databases)要么[`--所有数据库`](mysqldump.html#option_mysqldump_all-databases)给出了选项。

-   [](<>) `--no-create-info`,`-t`

    [](<>)[](<>)

    不要写[`创建表`](create-table.html)创建每个转储表的语句。

    笔记

    这个选项确实*不是*排除创建日志文件组或表空间的语句[**mysql转储**](mysqldump.html)输出;但是，您可以使用[`--无表空间`](mysqldump.html#option_mysqldump_no-tablespaces)用于此目的的选项。

-   [](<>) `--无表空间`,`-y`

    [](<>)[](<>)

    此选项抑制所有[`创建日志文件组`](create-logfile-group.html)和[`创建表空间`](create-tablespace.html)输出中的语句[**mysql转储**](mysqldump.html).

-   [](<>) `- 代替`

    [](<>)[](<>)

    写[`代替`](replace.html)陈述而不是[`插入`](insert.html)陈述。

#### 调试选项

以下选项打印调试信息，在转储文件中编码调试信息，或者让转储操作继续进行而不考虑潜在问题。

-   [](<>) `--allow-keywords`

    [](<>)[](<>)

    允许创建作为关键字的列名。这通过在每个列名前加上表名来工作。

-   [](<>) `- 注释`,`-一世`

    [](<>)[](<>)

    在转储文件中写入附加信息，例如程序版本、服务器版本和主机。默认情况下启用此选项。要禁止显示此附加信息，请使用[`--skip-comments`](mysqldump.html#option_mysqldump_skip-comments).

-   [](<>) `--调试[=*`调试选项`*]`,`-# [*`调试选项`*]`

    [](<>)[](<>)

    编写调试日志。一个典型的*`调试选项`*字符串是`d:t:o,*`文件名`*`.默认值为`d:t:o,/tmp/mysqldump.trace`.

    仅当 MySQL 是使用[`WITH_DEBUG`](source-configuration-options.html#option_cmake_with_debug).Oracle 提供的 MySQL 发行版二进制文件是*不是*使用此选项构建。

-   [](<>) `--调试检查`

    [](<>)[](<>)

    程序退出时打印一些调试信息。

    仅当 MySQL 是使用[`WITH_DEBUG`](source-configuration-options.html#option_cmake_with_debug).Oracle 提供的 MySQL 发行版二进制文件是*不是*使用此选项构建。

-   [](<>) `- 调试信息`

    [](<>)[](<>)

    程序退出时打印调试信息以及内存和 CPU 使用统计信息。

    仅当 MySQL 是使用[`WITH_DEBUG`](source-configuration-options.html#option_cmake_with_debug).Oracle 提供的 MySQL 发行版二进制文件是*不是*使用此选项构建。

-   [](<>) `--转储日期`

    [](<>)[](<>)

    如果[`- 注释`](mysqldump.html#option_mysqldump_comments)给出了选项，[**mysql转储**](mysqldump.html)在以下形式的转储末尾生成注释：

    ```
    -- Dump completed on DATE
    ```

    但是，日期会导致在不同时间获取的转储文件看起来不同，即使数据在其他方面相同。[`--转储日期`](mysqldump.html#option_mysqldump_dump-date)和[`--跳过转储日期`](mysqldump.html#option_mysqldump_dump-date)控制是否将日期添加到评论中。默认是[`--转储日期`](mysqldump.html#option_mysqldump_dump-date)（在评论中包括日期）。[`--跳过转储日期`](mysqldump.html#option_mysqldump_dump-date)禁止日期打印。

-   [](<>) `- 力量`,`-f`

    [](<>)[](<>)

    忽略所有错误；即使在表转储期间发生 SQL 错误，也继续。

    此选项的一种用途是导致[**mysql转储**](mysqldump.html)即使遇到由于定义引用已删除的表而变得无效的视图，也可以继续执行。没有`- 力量`,[**mysql转储**](mysqldump.html)退出并显示错误消息。和`- 力量`,[**mysql转储**](mysqldump.html)打印错误消息，但它还将包含视图定义的 SQL 注释写入转储输出并继续执行。

    如果[`--忽略错误`](mysqldump.html#option_mysqldump_ignore-error)还提供了忽略特定错误的选项，[`- 力量`](mysqldump.html#option_mysqldump_force)优先。

-   [](<>) `--日志错误=*`文件名`*`

    [](<>)[](<>)

    通过将警告和错误附加到命名文件来记录它们。默认是不记录。

-   [](<>) `--skip-comments`

    [](<>)[](<>)

    请参阅说明[`- 注释`](mysqldump.html#option_mysqldump_comments)选项。

-   [](<>) `--详细`,`-v`

    [](<>)[](<>)

    详细模式。打印有关程序功能的更多信息。

#### 帮助选项

以下选项显示有关[**mysql转储**](mysqldump.html)命令自己。

-   [](<>) `- 帮助`,`-？`

    [](<>)[](<>)

    显示帮助信息并退出。

-   [](<>) `- 版本`,`-V`

    [](<>)[](<>)

    显示版本信息并退出。

#### 国际化选项

以下选项更改了[**mysql转储**](mysqldump.html)command 表示具有国家语言设置的字符数据。

-   [](<>) `--字符集目录=*`目录名`*`

    [](<>)[](<>)

    安装字符集的目录。看[第 10.15 节，“字符集配置”](charset-configuration.html).

-   [](<>) `--默认字符集=*`字符集名称`*`

    [](<>)[](<>)

    采用*`字符集名称`*作为默认字符集。看[第 10.15 节，“字符集配置”](charset-configuration.html).如果没有指定字符集，[**mysql转储**](mysqldump.html)用途`utf8`.

-   [](<>) `--no-set-names`,`-N`

    [](<>)[](<>)

    关闭[`--set-charset`](mysqldump.html#option_mysqldump_set-charset)设置，与指定相同`--skip-set-charset`.

-   [](<>) `--set-charset`

    [](<>)[](<>)

    写[`设置名称 *`default_character_set`*`](set-names.html)到输出。默认情况下启用此选项。为了压制[`设置名称`](set-names.html)声明，使用[`--skip-set-charset`](mysqldump.html#option_mysqldump_set-charset).

#### 复制选项

这[**mysql转储**](mysqldump.html)命令经常用于在复制配置中的副本服务器上创建空实例或包含数据的实例。以下选项适用于在复制源服务器和副本上转储和恢复数据。

-   [](<>) `--apply-replica-statements`

    [](<>)[](<>)

    从 MySQL 8.0.26 开始，使用`--apply-replica-statements`，在 MySQL 8.0.26 之前，使用[`--apply-slave-statements`](mysqldump.html#option_mysqldump_apply-slave-statements).这两个选项具有相同的效果。对于使用生成的副本转储[`--转储副本`](mysqldump.html#option_mysqldump_dump-replica)要么[`--dump-slave`](mysqldump.html#option_mysqldump_dump-slave)选项，选项添加一个[`停止复制`](stop-replica.html)（或在 MySQL 8.0.22 之前，[`停止奴隶`](stop-slave.html)) 在带有二进制日志坐标的语句之前的语句，以及[`开始复制`](start-replica.html)输出末尾的语句。

-   [](<>) `--apply-slave-statements`

    [](<>)[](<>)

    在 MySQL 8.0.26 之前使用此选项，而不是[`--apply-replica-statements`](mysqldump.html#option_mysqldump_apply-replica-statements).这两个选项具有相同的效果。

-   [](<>) `--删除源日志`

    [](<>)[](<>)

    从 MySQL 8.0.26 开始，使用`--删除源日志`，在 MySQL 8.0.26 之前，使用[`--删除主日志`](mysqldump.html#option_mysqldump_delete-master-logs).这两个选项具有相同的效果。在复制源服务器上，选项通过发送[`清除二进制日志`](purge-binary-logs.html)执行转储操作后向服务器声明。这些选项需要[`重新加载`](privileges-provided.html#priv_reload)特权以及足以执行该语句的特权。选项自动启用[`--源数据`](mysqldump.html#option_mysqldump_source-data)要么[`- 主要的数据`](mysqldump.html#option_mysqldump_master-data).

-   [](<>) `--删除主日志`

    [](<>)[](<>)

    在 MySQL 8.0.26 之前使用此选项，而不是[`--删除源日志`](mysqldump.html#option_mysqldump_delete-source-logs).这两个选项具有相同的效果。

-   [](<>) `--转储副本[=*`价值`*]`

    [](<>)[](<>)

    从 MySQL 8.0.26 开始，使用`--转储副本`，在 MySQL 8.0.26 之前，使用[`--dump-slave`](mysqldump.html#option_mysqldump_dump-slave).这两个选项具有相同的效果。选项类似于[`--源数据`](mysqldump.html#option_mysqldump_source-data)，除了它们用于转储副本服务器以生成转储文件，该转储文件可用于将另一台服务器设置为与转储服务器具有相同源的副本。这些选项导致转储输出包括[`将复制源更改为`](change-replication-source-to.html)语句（来自 MySQL 8.0.23）或[`将主更改为`](change-master-to.html)指示转储副本源的二进制日志坐标（文件名和位置）的语句（在 MySQL 8.0.23 之前）。这[`将复制源更改为`](change-replication-source-to.html)语句读取的值`Relay_Master_Log_File`和`Exec_Master_Log_Pos`来自[`显示副本状态`](show-replica-status.html)输出并将它们用于`SOURCE_LOG_FILE`和`SOURCE_LOG_POS`分别。这些是副本开始复制的复制源服务器坐标。

    笔记

    已执行的中继日志中的事务顺序不一致可能导致使用错误的位置。看[第 17.5.1.34 节，“复制和事务不一致”](replication-features-transaction-inconsistencies.html)了解更多信息。

    `--转储副本`要么`--dump-slave`导致使用来自源的坐标而不是转储服务器的坐标，就像由[`--源数据`](mysqldump.html#option_mysqldump_source-data)要么[`- 主要的数据`](mysqldump.html#option_mysqldump_master-data)选项。此外，指定此选项会导致[`--源数据`](mysqldump.html#option_mysqldump_source-data)要么`- 主要的数据`选项被覆盖，如果使用，并有效地忽略。

    警告

    `--转储副本`和`--dump-slave`如果要应用转储的服务器使用，则不应使用[`gtid_mode=ON`](replication-options-gtids.html#sysvar_gtid_mode)和`SOURCE_AUTO_POSITION=1`要么`MASTER_AUTO_POSITION=1`.

    选项值的处理方式与[`--源数据`](mysqldump.html#option_mysqldump_source-data).不设置值或设置 1 会导致[`将复制源更改为`](change-replication-source-to.html)语句（来自 MySQL 8.0.23）或[`将主更改为`](change-master-to.html)要写入转储的语句（在 MySQL 8.0.23 之前）。设置 2 导致语句被写入但包含在 SQL 注释中。它具有相同的效果`--源数据`在启用或禁用其他选项以及如何处理锁定方面。

    `--转储副本`和`--dump-slave`原因[**mysql转储**](mysqldump.html)在转储之前停止复制 SQL 线程并在之后再次重新启动它。

    `--转储副本`和`--dump-slave`寄一个[`显示副本状态`](show-replica-status.html)语句向服务器获取信息，因此它们需要足够的权限来执行该语句。

    [`--apply-replica-statements`](mysqldump.html#option_mysqldump_apply-replica-statements)和[`--include-source-host-port`](mysqldump.html#option_mysqldump_include-source-host-port)选项可以与`--转储副本`和`--dump-slave`.

-   [](<>) `--dump-slave[=*`价值`*]`

    [](<>)[](<>)

    在 MySQL 8.0.26 之前使用此选项，而不是[`--转储副本`](mysqldump.html#option_mysqldump_dump-replica).这两个选项具有相同的效果。

-   [](<>) `--include-source-host-port`

    [](<>)[](<>)

    从 MySQL 8.0.26 开始，使用`--include-source-host-port`，在 MySQL 8.0.26 之前，使用[`--include-master-host-port`](mysqldump.html#option_mysqldump_include-master-host-port).这两个选项具有相同的效果。选项添加`SOURCE_HOST`\|`MASTER_HOST`和`SOURCE_PORT`\|`MASTER_PORT`副本源的主机名和 TCP/IP 端口号选项，[`将复制源更改为`](change-replication-source-to.html)语句（来自 MySQL 8.0.23）或[`将主更改为`](change-master-to.html)使用生成的副本转储中的语句（在 MySQL 8.0.23 之前）[`--转储副本`](mysqldump.html#option_mysqldump_dump-replica)要么[`--dump-slave`](mysqldump.html#option_mysqldump_dump-slave)选项。

-   [](<>) `--include-master-host-port`

    [](<>)[](<>)

    在 MySQL 8.0.26 之前使用此选项，而不是[`--include-source-host-port`](mysqldump.html#option_mysqldump_include-source-host-port).这两个选项具有相同的效果。

-   [](<>) `--源数据[=*`价值`*]`

    [](<>)[](<>)

    从 MySQL 8.0.26 开始，使用`--源数据`，在 MySQL 8.0.26 之前，使用[`- 主要的数据`](mysqldump.html#option_mysqldump_master-data).这两个选项具有相同的效果。这些选项用于转储复制源服务器以生成转储文件，该文件可用于将另一台服务器设置为源的副本。这些选项导致转储输出包括[`将复制源更改为`](change-replication-source-to.html)语句（来自 MySQL 8.0.23）或[`将主更改为`](change-master-to.html)指示转储服务器的二进制日志坐标（文件名和位置）的语句（在 MySQL 8.0.23 之前）。这些是复制源服务器坐标，在您将转储文件加载到副本后，副本应从该坐标开始复制。

    如果期权价值为 2，则[`将复制源更改为`](change-replication-source-to.html)\|[`将主更改为`](change-master-to.html)语句是作为 SQL 注释编写的，因此仅供参考；重新加载转储文件时无效。如果选项值为1，则该语句不写为注释，并在重新加载转储文件时生效。如果未指定选项值，则默认值为 1。

    `--源数据`和`- 主要的数据`寄一个[`显示主状态`](show-master-status.html)语句向服务器获取信息，因此它们需要足够的权限来执行该语句。此选项还需要[`重新加载`](privileges-provided.html#priv_reload)权限和二进制日志必须启用。

    `--源数据`和`- 主要的数据`自动关闭[`--锁表`](mysqldump.html#option_mysqldump_lock-tables).他们也开启[`--锁定所有表`](mysqldump.html#option_mysqldump_lock-all-tables)， 除非[`--单笔交易`](mysqldump.html#option_mysqldump_single-transaction)也被指定，在这种情况下，全局读锁仅在转储开始时获得很短的时间（参见描述[`--单笔交易`](mysqldump.html#option_mysqldump_single-transaction)）。在所有情况下，对日志的任何操作都发生在转储的确切时刻。

    也可以通过转储源的现有副本来设置副本，使用[`--转储副本`](mysqldump.html#option_mysqldump_dump-replica)要么[`--dump-slave`](mysqldump.html#option_mysqldump_dump-slave)选项，它覆盖`--源数据`和`- 主要的数据`并导致它们被忽略。

-   [](<>) `--主数据[=*`价值`*]`

    [](<>)[](<>)

    在 MySQL 8.0.26 之前使用此选项，而不是[`--源数据`](mysqldump.html#option_mysqldump_source-data).这两个选项具有相同的效果。

-   [](<>) `--set-gtid-purge=*`价值`*`

    [](<>)[](<>)

    此选项适用于使用基于 GTID 的复制（[`gtid_mode=ON`](replication-options-gtids.html#sysvar_gtid_mode)）。它控制包含一个`SET @@GLOBAL.gtid_purged`转储输出中的语句，该语句更新[`gtid_purged`](replication-options-gtids.html#sysvar_gtid_purged)在重新加载转储文件的服务器上，添加源服务器的 GTID 集[`gtid_executed`](replication-options-gtids.html#sysvar_gtid_executed)系统变量。[`gtid_purged`](replication-options-gtids.html#sysvar_gtid_purged)保存已在服务器上应用的所有事务的 GTID，但不存在于服务器上的任何二进制日志文件中。[**mysql转储**](mysqldump.html)因此为在源服务器上执行的事务添加 GTID，以便目标服务器将这些事务记录为已应用，尽管它的二进制日志中没有它们。`--set-gtid-purge`还控制包含一个`设置@@SESSION.sql_log_bin=0`语句，在重新加载转储文件时禁用二进制日志记录。此语句防止在执行转储文件时生成新的 GTID 并将其分配给转储文件中的事务，以便使用事务的原始 GTID。

    如果不设置`--set-gtid-purge`选项，默认是一个`SET @@GLOBAL.gtid_purged`如果在您正在备份的服务器上启用了 GTID，并且在[`gtid_executed`](replication-options-gtids.html#sysvar_gtid_executed)系统变量不为空。一种`设置@@SESSION.sql_log_bin=0`如果在服务器上启用了 GTID，则还包括语句。

    在 MySQL 5.6 和 5.7 中，您可以替换[`gtid_purged`](replication-options-gtids.html#sysvar_gtid_purged)具有指定的 GTID 集，前提是[`gtid_executed`](replication-options-gtids.html#sysvar_gtid_executed)和[`gtid_purged`](replication-options-gtids.html#sysvar_gtid_purged)是空的。从 MySQL 8.0 开始，您可以替换[`gtid_purged`](replication-options-gtids.html#sysvar_gtid_purged)具有指定的 GTID 集，或者您可以在语句中添加一个加号 (+) 以将指定的 GTID 集附加到已被持有的 GTID 集[`gtid_purged`](replication-options-gtids.html#sysvar_gtid_purged).[**mysql转储**](mysqldump.html)的`SET @@GLOBAL.gtid_purged`语句在版本注释中包含一个加号 (+)，该加号 (+) 在 MySQL 8.0 的版本上重放转储文件时生效，这意味着对于这些版本，转储文件中设置的 GTID 将添加到现有的[`gtid_purged`](replication-options-gtids.html#sysvar_gtid_purged)价值。对于 MySQL 5.6 和 5.7，值[`gtid_purged`](replication-options-gtids.html#sysvar_gtid_purged)被转储文件中设置的 GTID 替换，这只会发生在[`gtid_executed`](replication-options-gtids.html#sysvar_gtid_executed)是空集（所以当之前没有开始复制，或者复制之前没有使用 GTID 时）。有关如何`SET @@GLOBAL.gtid_purged`语句运行，请参阅[`gtid_purged`](replication-options-gtids.html#sysvar_gtid_purged)要重放转储文件的版本的描述。

    重要的是要注意包含的值[**mysql转储**](mysqldump.html)为了`SET @@GLOBAL.gtid_purged`语句包括所有事务的 GTID[`gtid_executed`](replication-options-gtids.html#sysvar_gtid_executed)在服务器上设置，即使更改了数据库的隐藏部分，或服务器上未包含在部分转储中的其他数据库。这可能意味着在[`gtid_purged`](replication-options-gtids.html#sysvar_gtid_purged)重放转储文件的服务器上的值已更新，存在与目标服务器上的任何数据无关的 GTID。如果您不在目标服务器上重放任何进一步的转储文件，无关的 GTID 不会对服务器的未来操作造成任何问题，但它们会使复制拓扑中不同服务器上的 GTID 集的比较或协调变得更加困难。如果您确实在目标服务器上重放包含相同 GTID 的进一步转储文件（例如，来自同一源服务器的另一个部分转储），任何`SET @@GLOBAL.gtid_purged`第二个转储文件中的语句失败。在这种情况下，要么在重放转储文件之前手动删除该语句，要么在没有该语句的情况下输出转储文件。

    笔记

    对于 MySQL 5.6 和 5.7，不建议在服务器上启用 GTID 时加载转储文件（[`gtid_mode=ON`](replication-options-gtids.html#sysvar_gtid_mode))，如果您的转储文件包含系统表。[**mysql转储**](mysqldump.html)为使用非事务性 MyISAM 存储引擎的系统表发出 DML 指令，并且在启用 GTID 时不允许这种组合。

    如果`SET @@GLOBAL.gtid_purged`语句不会在您的目标服务器上获得所需的结果，您可以从输出中排除该语句，或者（从 MySQL 8.0.17 开始）包含它但将其注释掉，以便它不会自动执行。您也可以包含该语句，但在转储文件中手动对其进行编辑以获得所需的结果。

    的可能值`--set-gtid-purge`选项如下：

    `汽车`

    默认值。如果您正在备份的服务器上启用了 GTID，并且[`gtid_executed`](replication-options-gtids.html#sysvar_gtid_executed)不是空的，`SET @@GLOBAL.gtid_purged`被添加到输出中，包含来自的 GTID 集[`gtid_executed`](replication-options-gtids.html#sysvar_gtid_executed).如果启用 GTID，`设置@@SESSION.sql_log_bin=0`被添加到输出中。如果服务器上未启用 GTID，则不会将语句添加到输出中。

    `离开`

    `SET @@GLOBAL.gtid_purged`不添加到输出中，并且`设置@@SESSION.sql_log_bin=0`不会添加到输出中。对于未使用 GTID 的服务器，请使用此选项或`汽车`.如果您确定所需的 GTID 集已存在于[`gtid_purged`](replication-options-gtids.html#sysvar_gtid_purged)在目标服务器上并且不应更改，或者如果您计划手动识别和添加任何缺少的 GTID。

    `在`

    如果您正在备份的服务器上启用了 GTID，`SET @@GLOBAL.gtid_purged`被添加到输出中（除非[`gtid_executed`](replication-options-gtids.html#sysvar_gtid_executed)为空），并且`设置@@SESSION.sql_log_bin=0`被添加到输出中。如果您设置此选项但未在服务器上启用 GTID，则会发生错误。对于使用 GTID 的服务器，请使用此选项或`汽车`，除非您确定 GTID 在[`gtid_executed`](replication-options-gtids.html#sysvar_gtid_executed)目标服务器上不需要。

    `已评论`

    可从 MySQL 8.0.17 获得。如果您正在备份的服务器上启用了 GTID，`SET @@GLOBAL.gtid_purged`被添加到输出中（除非[`gtid_executed`](replication-options-gtids.html#sysvar_gtid_executed)是空的），但它被注释掉了。这意味着[`gtid_executed`](replication-options-gtids.html#sysvar_gtid_executed)在输出中可用，但重新加载转储文件时不会自动执行任何操作。`设置@@SESSION.sql_log_bin=0`被添加到输出中，并且没有被注释掉。和`已评论`, 你可以控制使用[`gtid_executed`](replication-options-gtids.html#sysvar_gtid_executed)手动或通过自动化设置。例如，如果您将数据迁移到另一个已经有不同活动数据库的服务器，您可能更愿意这样做。

#### 格式选项

以下选项指定如何表示整个转储文件或转储文件中的某些类型的数据。它们还控制是否将某些可选信息写入转储文件。

-   [](<>) `- 袖珍的`

    [](<>)[](<>)

    产生更紧凑的输出。此选项启用[`--skip-add-drop-table`](mysqldump.html#option_mysqldump_add-drop-table),[`--skip-add-locks`](mysqldump.html#option_mysqldump_add-locks),[`--skip-comments`](mysqldump.html#option_mysqldump_skip-comments),[`--skip-disable-keys`](mysqldump.html#option_mysqldump_disable-keys)， 和[`--skip-set-charset`](mysqldump.html#option_mysqldump_set-charset)选项。

-   [](<>) `--兼容=*`姓名`*`

    [](<>)[](<>)

    生成与其他数据库系统或旧 MySQL 服务器更兼容的输出。此选项的唯一允许值是`安西`，与设置服务器SQL模式的相应选项含义相同。看[第 5.1.11 节，“服务器 SQL 模式”](sql-mode.html).

-   [](<>) `--完成插入`,`-c`

    [](<>)[](<>)

    使用完成[`插入`](insert.html)包含列名的语句。

-   [](<>) `--create-options`

    [](<>)[](<>)

    在[`创建表`](create-table.html)陈述。

-   [](<>) `--fields-terminated-by=...`,`--fields-enclosed-by=...`,`--fields-optional-enclosed-by=...`,`--fields-escaped-by=...`

    [](<>)[](<>)[](<>)[](<>)[](<>)[](<>)[](<>)[](<>)

    这些选项与[`- 标签`](mysqldump.html#option_mysqldump_tab)选项和对应的含义相同`领域`条款[`加载数据`](load-data.html).看[第 13.2.7 节，“加载数据语句”](load-data.html).

-   [](<>) `--hex-blob`

    [](<>)[](<>)

    使用十六进制表示法转储二进制列（例如，`'abc'`变成`0x616263`）。受影响的数据类型是[`二进制`](binary-varbinary.html),[`变量`](binary-varbinary.html),[`斑点`](blob.html)类型，[`少量`](bit-type.html)、所有空间数据类型，以及与[`二进制`字符集](charset-binary-set.html).

-   [](<>) `--lines-terminated-by=...`

    [](<>)[](<>)

    此选项与[`- 标签`](mysqldump.html#option_mysqldump_tab)选项，与对应的含义相同`线`条款[`加载数据`](load-data.html).看[第 13.2.7 节，“加载数据语句”](load-data.html).

-   [](<>) `--quote-names`,`-Q`

    [](<>)[](<>)

    在 \` 中引用标识符（例如数据库、表和列名）``人物。如果[`ANSI_QUOTES`](sql-mode.html#sqlmode_ansi_quotes)启用 SQL 模式，标识符在`"`人物。默认情况下启用此选项。它可以被禁用`--skip-quote-names`, 但是这个选项应该在任何选项之后给出，例如[`- 兼容的`](mysqldump.html#option_mysqldump_compatible)这可能使[`--quote-names`](mysqldump.html#option_mysqldump_quote-names).

-   [](<>) `--结果文件=*`文件名`*`,`-r *`文件名`*`

    [](<>)[](<>)

    直接输出到指定文件。即使在生成转储时发生错误，也会创建结果文件并覆盖其先前的内容。

    此选项应在 Windows 上使用以防止换行`\n`字符从被转换为`\r\n`回车/换行序列。

-   [](<>) [`--show-create-skip-secondary-engine=*`价值`*`](mysqldump.html#option_mysqldump_show-create-skip-secondary-engine)

    [](<>)[](<>)

    不包括`二次发动机`从句[`创建表`](create-table.html)陈述。它通过启用[`show_create_table_skip_secondary_engine`](server-system-variables.html#sysvar_show_create_table_skip_secondary_engine)转储操作期间的系统变量。或者，您可以启用[`show_create_table_skip_secondary_engine`](server-system-variables.html#sysvar_show_create_table_skip_secondary_engine)使用前的系统变量[**mysql转储**](mysqldump.html).

    此选项是在 MySQL 8.0.18 中添加的。尝试一个[**mysql转储**](mysqldump.html)操作与[`--show-create-skip-secondary-engine`](mysqldump.html#option_mysqldump_show-create-skip-secondary-engine)MySQL 8.0.18 之前版本的选项不支持[`show_create_table_skip_secondary_engine`](server-system-variables.html#sysvar_show_create_table_skip_secondary_engine)变量导致错误。

-   [](<>) `--tab=*`目录名`*`,`-T *`目录名`*`

    [](<>)[](<>)

    生成制表符分隔的文本格式数据文件。对于每个倾倒的桌子，[**mysql转储**](mysqldump.html)创建一个`*`tbl_name`*.sql`文件包含[`创建表`](create-table.html)创建表的语句，服务器写入一个`*`tbl_name`*。文本文件`包含其数据的文件。选项值是写入文件的目录。

    笔记

    此选项应仅在以下情况下使用[**mysql转储**](mysqldump.html)与运行在同一台机器上[**mysqld**](mysqld.html)服务器。因为服务器创建`*。文本文件`指定目录中的文件，该目录必须是服务器可写的，并且您使用的 MySQL 帐户必须具有[`文件`](privileges-provided.html#priv_file)特权。因为[**mysql转储**](mysqldump.html)创建`*.sql`在同一目录中，它必须可由您的系统登录帐户写入。

    默认情况下，`。文本文件`数据文件使用列值之间的制表符和每行末尾的换行符进行格式化。可以使用显式指定格式`--fields-*`xxx`*`和[`--lines-terminated-by`](mysqldump.html#option_mysqldump_lines-terminated-by)选项。

    列值转换为指定的字符集[`--默认字符集`](mysqldump.html#option_mysqldump_default-character-set)选项。

-   [](<>) `--tz-utc`

    [](<>)[](<>)

    此选项启用[`时间戳`](datetime.html)要在不同时区的服务器之间转储和重新加载的列。[**mysql转储**](mysqldump.html)将其连接时区设置为 UTC 并添加`SET TIME_ZONE='+00:00'`到转储文件。没有这个选项，[`时间戳`](datetime.html)列在源服务器和目标服务器本地的时区中转储和重新加载，如果服务器位于不同的时区，这可能会导致值更改。`--tz-utc`还可以防止因夏令时而发生的变化。`--tz-utc`默认启用。要禁用它，请使用`--skip-tz-utc`.

-   [](<>) `--xml`,`-X`

    [](<>)[](<>)

    将转储输出写入格式正确的 XML。

    **`空值`,`'空值'`, 和空值**：对于名为*`列名`*， 这`空值`值、空字符串和字符串值`'空值'`在此选项生成的输出中彼此区分开来，如下所示。

    | 价值： | XML 表示： |
    | --- | ------- |
    | `空值`(*未知值*) | `<字段名称="*`列名`*" xsi:nil="true" />` |
    | `''`(*空字符串*) | `<字段名称="*`列名`*"></field>` |
    | `'空值'`(*字符串值*) | `<字段名称="*`列名`*">NULL</field>` |

    从输出[**mysql**](mysql.html)客户端运行时使用[`--xml`](mysql-command-options.html#option_mysql_xml)选项也遵循上述规则。（看[第 4.5.1.1 节，“mysql 客户端选项”](mysql-command-options.html).)

    XML 输出来自[**mysql转储**](mysqldump.html)包括 XML 命名空间，如下所示：

    ```
    $> mysqldump --xml -u root world City
    <?xml version="1.0"?>
    <mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <database name="world">
    <table_structure name="City">
    <field Field="ID" Type="int(11)" Null="NO" Key="PRI" Extra="auto_increment" />
    <field Field="Name" Type="char(35)" Null="NO" Key="" Default="" Extra="" />
    <field Field="CountryCode" Type="char(3)" Null="NO" Key="" Default="" Extra="" />
    <field Field="District" Type="char(20)" Null="NO" Key="" Default="" Extra="" />
    <field Field="Population" Type="int(11)" Null="NO" Key="" Default="0" Extra="" />
    <key Table="City" Non_unique="0" Key_name="PRIMARY" Seq_in_index="1" Column_name="ID"
    Collation="A" Cardinality="4079" Null="" Index_type="BTREE" Comment="" />
    <options Name="City" Engine="MyISAM" Version="10" Row_format="Fixed" Rows="4079"
    Avg_row_length="67" Data_length="273293" Max_data_length="18858823439613951"
    Index_length="43008" Data_free="0" Auto_increment="4080"
    Create_time="2007-03-31 01:47:01" Update_time="2007-03-31 01:47:02"
    Collation="latin1_swedish_ci" Create_options="" Comment="" />
    </table_structure>
    <table_data name="City">
    <row>
    <field name="ID">1</field>
    <field name="Name">Kabul</field>
    <field name="CountryCode">AFG</field>
    <field name="District">Kabol</field>
    <field name="Population">1780000</field>
    </row>

    ...

    <row>
    <field name="ID">4079</field>
    <field name="Name">Rafah</field>
    <field name="CountryCode">PSE</field>
    <field name="District">Rafah</field>
    <field name="Population">92020</field>
    </row>
    </table_data>
    </database>
    </mysqldump>
    ```

#### 过滤选项

以下选项控制将哪种模式对象写入转储文件：按类别，例如触发器或事件；例如，按名称选择要转储的数据库和表；甚至使用`在哪里`条款。

-   [](<>) `--所有数据库`,`-一种`

    [](<>)[](<>)

    转储所有数据库中的所有表。这与使用[`--数据库`](mysqldump.html#option_mysqldump_databases)选项并在命令行上命名所有数据库。

    笔记

    见[`--add-drop-database`](mysqldump.html#option_mysqldump_add-drop-database)有关该选项不兼容的信息的描述[`--所有数据库`](mysqldump.html#option_mysqldump_all-databases).

    在 MySQL 8.0 之前，[`--例程`](mysqldump.html#option_mysqldump_routines)和[`--事件`](mysqldump.html#option_mysqldump_events)选项[**mysql转储**](mysqldump.html)和[**mysql泵**](mysqlpump.html)使用时不需要包括存储的例程和事件[`--所有数据库`](mysqldump.html#option_mysqldump_all-databases)选项：转储包括`mysql`系统数据库，因此也`mysql.proc`和`mysql.event`包含存储的例程和事件定义的表。从 MySQL 8.0 开始，`mysql.event`和`mysql.proc`不使用表。相应对象的定义存储在数据字典表中，但不会转储这些表。在转储中包含存储的例程和事件，使用[`--所有数据库`](mysqldump.html#option_mysqldump_all-databases)， 使用[`--例程`](mysqldump.html#option_mysqldump_routines)和[`--事件`](mysqldump.html#option_mysqldump_events)明确的选项。

-   [](<>) `--数据库`,`-B`

    [](<>)[](<>)

    转储几个数据库。一般，[**mysql转储**](mysqldump.html)将命令行上的第一个名称参数视为数据库名称，将后面的名称视为表名称。使用此选项，它将所有名称参数视为数据库名称。[`创建数据库`](create-database.html)和[`采用`](use.html)语句包含在每个新数据库之前的输出中。

    此选项可用于转储`性能模式`数据库，即使使用[`--所有数据库`](mysqldump.html#option_mysqldump_all-databases)选项。（也使用[`--skip-lock-tables`](mysqldump.html#option_mysqldump_lock-tables)选项。）

    笔记

    见[`--add-drop-database`](mysqldump.html#option_mysqldump_add-drop-database)有关该选项不兼容的信息的描述[`--数据库`](mysqldump.html#option_mysqldump_databases).

-   [](<>) `--事件`,`-E`

    [](<>)[](<>)

    在输出中包括转储数据库的事件调度程序事件。此选项需要[`事件`](privileges-provided.html#priv_event)这些数据库的权限。

    使用生成的输出`--事件`包含[`创建事件`](create-event.html)创建事件的语句。

-   [](<>) `--忽略错误=*`错误[，错误,]...`*`

    [](<>)[](<>)

    忽略指定的错误。选项值是逗号分隔的错误编号列表，指定在此期间要忽略的错误[**mysql转储**](mysqldump.html)执行。如果[`- 力量`](mysqldump.html#option_mysqldump_force)还提供了忽略所有错误的选项，[`- 力量`](mysqldump.html#option_mysqldump_force)优先。

-   [](<>) `--忽略表=*`db_name.tbl_name`*`

    [](<>)[](<>)

    不要转储给定的表，该表必须同时使用数据库和表名来指定。要忽略多个表，请多次使用此选项。此选项还可用于忽略视图。

-   [](<>) `- 没有数据`,`-d`

    [](<>)[](<>)

    不写入任何表格行信息（即不转储表格内容）。如果您只想转储[`创建表`](create-table.html)表的语句（例如，通过加载转储文件来创建表的空副本）。

-   [](<>) `--例程`,`-R`

    [](<>)[](<>)

    在输出中包括转储数据库的存储例程（过程和函数）。此选项需要全局[`选择`](privileges-provided.html#priv_select)特权。

    使用生成的输出`--例程`包含[`创建过程`](create-procedure.html)和[`创建函数`](create-function.html)语句来创建例程。

-   [](<>) `--表`

    [](<>)[](<>)

    覆盖[`--数据库`](mysqldump.html#option_mysqldump_databases)要么`-B`选项。[**mysql转储**](mysqldump.html)将选项后面的所有名称参数视为表名。

-   [](<>) `--触发器`

    [](<>)[](<>)

    在输出中包含每个转储表的触发器。此选项默认启用；禁用它`--跳过触发器`.

    为了能够转储表的触发器，您必须拥有[`扳机`](privileges-provided.html#priv_trigger)表的特权。

    允许多个触发器。[**mysql转储**](mysqldump.html)以激活顺序转储触发器，以便在重新加载转储文件时，以相同的激活顺序创建触发器。但是，如果一个[**mysql转储**](mysqldump.html)转储文件包含具有相同触发事件和操作时间的表的多个触发器，尝试将转储文件加载到不支持多个触发器的旧服务器时会发生错误。（有关解决方法，请参阅[降级说明](https://dev.mysql.com/doc/refman/5.7/en/downgrading-to-previous-series.html);您可以将触发器转换为与旧服务器兼容。）

-   [](<>) `--where='*`where_condition`*'`,`-w'*`where_condition`*'`

    [](<>)[](<>)

    仅转储给定选择的行`在哪里`健康）状况。如果条件包含空格或其他对您的命令解释器来说特殊的字符，则必须在条件周围加上引号。

    例子：

    ```
    --where="user='jimf'"
    -w"userid>1"
    -w"userid<1"
    ```

#### 性能选项

以下选项与还原操作的性能最相关。对于大型数据集，恢复操作（处理`插入`转储文件中的语句）是最耗时的部分。当急需快速恢复数据时，提前规划和测试这个阶段的性能。对于以小时为单位的恢复时间，您可能更喜欢备用备份和恢复解决方案，例如[MySQL 企业备份](mysql-enterprise-backup.html)为了`InnoDB`- 仅和混合使用的数据库。

性能也受到影响[交易期权](mysqldump.html#mysqldump-transaction-options)，主要用于转储操作。

-   [](<>) [`--列统计`](mysqldump.html#option_mysqldump_column-statistics)

    [](<>)[](<>)

    添加[`分析表`](analyze-table.html)输出语句以在重新加载转储文件时为转储表生成直方图统计信息。默认情况下禁用此选项，因为大型表的直方图生成可能需要很长时间。

-   [](<>) `--禁用键`,`-K`

    [](<>)[](<>)

    对于每个表，围绕[`插入`](insert.html)与声明`/*!40000 更改表 *`tbl_name`* 禁用键 */;`和`/*!40000 更改表 *`tbl_name`* 启用键 */;`陈述。这使得加载转储文件更快，因为索引是在插入所有行之后创建的。此选项仅对`MyISAM`表。

-   [](<>) `--扩展插入`,`-e`

    [](<>)[](<>)

    写[`插入`](insert.html)使用多行语法的语句，包括几个`价值观`列表。这会导致转储文件更小，并在重新加载文件时加快插入速度。

-   [](<>) `--插入-忽略`

    [](<>)[](<>)

    写[`插入忽略`](insert.html)陈述而不是[`插入`](insert.html)陈述。

-   [](<>) [`--max-allowed-packet=*`价值`*`](mysqldump.html#option_mysqldump_max-allowed-packet)

    [](<>)[](<>)

    客户端/服务器通信的缓冲区的最大大小。默认为 24​​MB，最大为 1GB。

-   [](<>) [`--net-buffer-length=*`价值`*`](mysqldump.html#option_mysqldump_net-buffer-length)

    [](<>)[](<>)

    用于客户端/服务器通信的缓冲区的初始大小。创建多行时[`插入`](insert.html)声明（与[`--扩展插入`](mysqldump.html#option_mysqldump_extended-insert)要么[`- 选择`](mysqldump.html#option_mysqldump_opt)选项），[**mysql转储**](mysqldump.html)最多创建行[`--net-buffer-length`](mysqldump.html#option_mysqldump_net-buffer-length)字节长。如果增加此变量，请确保 MySQL 服务器[`net_buffer_length`](server-system-variables.html#sysvar_net_buffer_length)系统变量的值至少这么大。

-   [](<>) [`--网络超时`](mysqldump.html#option_mysqldump_network-timeout),`-M`

    [](<>)[](<>)

    通过设置启用要转储的大表[`--max-allowed-packet`](mysqldump.html#option_mysqldump_max-allowed-packet)到它的最大值和网络读写超时到一个很大的值。默认情况下启用此选项。要禁用它，请使用[`--skip-network-timeout`](mysqldump.html#option_mysqldump_network-timeout).

-   [](<>) `- 选择`

    [](<>)[](<>)

    此选项默认启用，是以下组合的简写[`--add-drop-table`](mysqldump.html#option_mysqldump_add-drop-table) [`--添加锁`](mysqldump.html#option_mysqldump_add-locks) [`--create-options`](mysqldump.html#option_mysqldump_create-options) [`--禁用键`](mysqldump.html#option_mysqldump_disable-keys) [`--扩展插入`](mysqldump.html#option_mysqldump_extended-insert) [`--锁表`](mysqldump.html#option_mysqldump_lock-tables) [`- 快的`](mysqldump.html#option_mysqldump_quick) [`--set-charset`](mysqldump.html#option_mysqldump_set-charset).它提供了快速转储操作并生成可以快速重新加载到 MySQL 服务器的转储文件。

    因为`- 选择`默认情况下启用选项，您只需指定其相反，[`--skip-opt`](mysqldump.html#option_mysqldump_skip-opt)关闭几个默认设置。见讨论[`mysql转储`选项组](mysqldump.html#mysqldump-option-groups)有关有选择地启用或禁用受影响的选项子集的信息`- 选择`.

-   [](<>) `- 快的`,`-q`

    [](<>)[](<>)

    此选项对于转储大型表很有用。它迫使[**mysql转储**](mysqldump.html)一次从服务器检索表的行，而不是检索整个行集并在将其写出之前将其缓冲在内存中。

-   [](<>) `--skip-opt`

    [](<>)[](<>)

    请参阅说明[`- 选择`](mysqldump.html#option_mysqldump_opt)选项。

#### 交易期权

以下选项权衡转储操作的性能与导出数据的可靠性和一致性。

-   [](<>) `--添加锁`

    [](<>)[](<>)

    围绕每个表转储[`锁定表`](lock-tables.html)和[`解锁桌子`](lock-tables.html)陈述。这会在重新加载转储文件时加快插入速度。看[第 8.2.5.1 节，“优化 INSERT 语句”](insert-optimization.html).

-   [](<>) `--刷新日志`,`-F`

    [](<>)[](<>)

    在开始转储之前刷新 MySQL 服务器日志文件。此选项需要[`重新加载`](privileges-provided.html#priv_reload)特权。如果您将此选项与[`--所有数据库`](mysqldump.html#option_mysqldump_all-databases)选项，日志被刷新*对于每个转储的数据库*.例外是使用时[`--锁定所有表`](mysqldump.html#option_mysqldump_lock-all-tables),[`--源数据`](mysqldump.html#option_mysqldump_source-data)要么[`- 主要的数据`](mysqldump.html#option_mysqldump_master-data)， 要么[`--单笔交易`](mysqldump.html#option_mysqldump_single-transaction).在这些情况下，日志只刷新一次，对应于所有表被锁定的时刻[`带读锁的刷新表`](flush.html#flush-tables-with-read-lock).如果您希望转储和日志刷新在完全相同的时刻发生，您应该使用`--刷新日志`和...一起[`--锁定所有表`](mysqldump.html#option_mysqldump_lock-all-tables),[`--源数据`](mysqldump.html#option_mysqldump_source-data)要么[`- 主要的数据`](mysqldump.html#option_mysqldump_master-data)， 要么[`--单笔交易`](mysqldump.html#option_mysqldump_single-transaction).

-   [](<>) `--刷新权限`

    [](<>)[](<>)

    添加一个[`刷新特权`](flush.html#flush-privileges)转储后的转储输出语句`mysql`数据库。每当转储包含`mysql`数据库和任何其他依赖于数据的数据库`mysql`数据库以进行适当的恢复。

    因为转储文件包含一个[`刷新特权`](flush.html#flush-privileges)语句，重新加载文件需要足够的权限来执行该语句。

    笔记

    对于从旧版本升级到 MySQL 5.7 或更高版本，请勿使用`--刷新权限`.有关这种情况下的升级说明，请参阅[第 2.11.4 节，“MySQL 8.0 中的更改”](upgrading-from-previous-series.html).

-   [](<>) `--锁定所有表`,`-x`

    [](<>)[](<>)

    锁定所有数据库中的所有表。这是通过在整个转储期间获取全局读锁来实现的。此选项自动关闭[`--单笔交易`](mysqldump.html#option_mysqldump_single-transaction)和[`--锁表`](mysqldump.html#option_mysqldump_lock-tables).

-   [](<>) `--锁表`,`-l`

    [](<>)[](<>)

    对于每个转储的数据库，在转储它们之前锁定所有要转储的表。表被锁定`阅读本地`在以下情况下允许并发插入`MyISAM`表。对于事务表，例如`InnoDB`,[`--单笔交易`](mysqldump.html#option_mysqldump_single-transaction)是一个比`--锁表`因为它根本不需要锁定表。

    因为`--锁表`为每个数据库单独锁定表，此选项不保证转储文件中的表在数据库之间逻辑上是一致的。不同数据库中的表可能会以完全不同的状态转储。

    一些选项，例如[`- 选择`](mysqldump.html#option_mysqldump_opt), 自动启用`--锁表`.如果要覆盖它，请使用`--skip-lock-tables`在选项列表的末尾。

-   [](<>) `--no-autocommit`

    [](<>)[](<>)

    附上[`插入`](insert.html)每个转储表的语句`设置自动提交 = 0`和[`犯罪`](commit.html)陈述。

-   [](<>) `--order-by-primary`

    [](<>)[](<>)

    如果存在这样的索引，则转储按其主键或按其第一个唯一索引排序的每个表的行。这在转储时很有用`MyISAM`表被加载到`InnoDB`表，但会使转储操作花费相当长的时间。

-   [](<>) [`--shared-memory-base-name=*`姓名`*`](mysqldump.html#option_mysqldump_shared-memory-base-name)

    [](<>)[](<>)

    在 Windows 上，用于使用共享内存与本地服务器建立连接的共享内存名称。默认值为`MYSQL`.共享内存名称区分大小写。

    此选项仅适用于服务器以[`共享内存`](server-system-variables.html#sysvar_shared_memory)启用系统变量以支持共享内存连接。

-   [](<>) `--单笔交易`

    [](<>)[](<>)

    此选项将事务隔离模式设置为[`可重复阅读`](innodb-transaction-isolation-levels.html#isolevel_repeatable-read)并发送一个[`开始交易`](commit.html)在转储数据之前向服务器执行 SQL 语句。它仅对事务表有用，例如`InnoDB`，因为那时它会转储数据库的一致状态[`开始交易`](commit.html)发布时没有阻止任何应用程序。

    使用此选项时，您应该记住，只有`InnoDB`表以一致的状态转储。例如，任何`MyISAM`要么`记忆`使用此选项时转储的表可能仍会更改状态。

    虽然一个[`--单笔交易`](mysqldump.html#option_mysqldump_single-transaction)dump 正在进行中，为确保转储文件有效（正确的表内容和二进制日志坐标），其他连接不应使用以下语句：[`更改表`](alter-table.html),[`创建表`](create-table.html),[`删除表`](drop-table.html),[`重命名表`](rename-table.html),[`截断表`](truncate-table.html).一致读取不会与这些语句隔离，因此在要转储的表上使用它们可能会导致[`选择`](select.html)这是由[**mysql转储**](mysqldump.html)检索表内容以获取不正确的内容或失败。

    这`--单笔交易`选项和[`--锁表`](mysqldump.html#option_mysqldump_lock-tables)选项是互斥的，因为[`锁定表`](lock-tables.html)导致任何未决事务被隐式提交。

    要转储大表，请结合`--单笔交易`选项与[`- 快的`](mysqldump.html#option_mysqldump_quick)选项。

#### 选项组

-   这[`- 选择`](mysqldump.html#option_mysqldump_opt)选项打开几个设置，它们一起工作以执行快速转储操作。所有这些设置都默认开启，因为`- 选择`默认开启。因此，您很少指定`- 选择`.相反，您可以通过指定将这些设置作为一个组关闭`--skip-opt`，通过稍后在命令行中指定相关选项，可选择重新启用某些设置。

-   这[`- 袖珍的`](mysqldump.html#option_mysqldump_compact)option 关闭几个设置，这些设置控制可选语句和注释是否出现在输出中。同样，您可以将此选项与重新启用某些设置的其他选项一起使用，或使用`--skip-compact`形式。

    当您有选择地启用或禁用组选项的效果时，顺序很重要，因为选项是从头到尾处理的。例如，[`--禁用键`](mysqldump.html#option_mysqldump_disable-keys) [`--锁表`](mysqldump.html#option_mysqldump_lock-tables) [`--skip-opt`](mysqldump.html#option_mysqldump_skip-opt)不会产生预期的效果；它与[`--skip-opt`](mysqldump.html#option_mysqldump_skip-opt)通过它自己。

#### 例子

要备份整个数据库：

```
mysqldump db_name > backup-file.sql
```

要将转储文件加载回服务器：

```
mysql db_name < backup-file.sql
```

重新加载转储文件的另一种方法：

```
mysql -e "source /path-to-backup/backup-file.sql" db_name
```

[**mysql转储**](mysqldump.html)通过将数据从一个 MySQL 服务器复制到另一个来填充数据库也非常有用：

```
mysqldump --opt db_name | mysql --host=remote_host -C db_name
```

您可以使用一个命令转储多个数据库：

```
mysqldump --databases db_name1 [db_name2 ...] > my_databases.sql
```

要转储所有数据库，请使用[`--所有数据库`](mysqldump.html#option_mysqldump_all-databases)选项：

```
mysqldump --all-databases > all_databases.sql
```

为了`InnoDB`表，[**mysql转储**](mysqldump.html)提供了一种进行在线备份的方法：

```
mysqldump --all-databases --master-data --single-transaction > all_databases.sql

or from MySQL 8.0.26:
mysqldump --all-databases --source-data --single-transaction > all_databases.sql
```

此备份在所有表上获取全局读锁（使用[`带读锁的刷新表`](flush.html#flush-tables-with-read-lock)) 在转储的开头。一旦获得了这个锁，就会读取二进制日志坐标并释放锁。如果在运行长更新语句时[`冲洗`](flush.html)发出语句，MySQL 服务器可能会停止，直到这些语句完成。之后，转储变为无锁并且不会干扰对表的读取和写入。如果 MySQL 服务器接收到的更新语句很短（就执行时间而言），那么即使有很多更新，初始锁定周期也不应该是明显的。

对于时间点恢复（也称为“前滚”，当您需要恢复旧备份并重放自该备份以来发生的更改时），轮换二进制日志通常很有用（参见[第 5.4.4 节，“二进制日志”](binary-log.html)) 或至少知道转储对应的二进制日志坐标：

```
mysqldump --all-databases --master-data=2 > all_databases.sql

or from MySQL 8.0.26:
mysqldump --all-databases --source-data=2 > all_databases.sql
```

要么：

```
mysqldump --all-databases --flush-logs --master-data=2 > all_databases.sql

or from MySQL 8.0.26:
mysqldump --all-databases --flush-logs --source-data=2 > all_databases.sql
```

这[`--源数据`](mysqldump.html#option_mysqldump_source-data)要么[`- 主要的数据`](mysqldump.html#option_mysqldump_master-data)选项可以与同时使用[`--单笔交易`](mysqldump.html#option_mysqldump_single-transaction)选项，如果表是使用`InnoDB`存储引擎。

有关制作备份的更多信息，请参阅[第 7.2 节，“数据库备份方法”](backup-methods.html)， 和[第 7.3 节，“示例备份和恢复策略”](backup-strategy-example.html).

-   选择效果[`- 选择`](mysqldump.html#option_mysqldump_opt)除某些功能外，请使用`- 跳过`每个功能的选项。要禁用扩展插入和内存缓冲，请使用[`- 选择`](mysqldump.html#option_mysqldump_opt) [`--skip-extended-insert`](mysqldump.html#option_mysqldump_extended-insert) [`--skip-quick`](mysqldump.html#option_mysqldump_quick).（实际上，[`--skip-extended-insert`](mysqldump.html#option_mysqldump_extended-insert) [`--skip-quick`](mysqldump.html#option_mysqldump_quick)就足够了，因为[`- 选择`](mysqldump.html#option_mysqldump_opt)默认开启。）

-   扭转[`- 选择`](mysqldump.html#option_mysqldump_opt)对于除索引禁用和表锁定之外的所有功能，请使用[`--skip-opt`](mysqldump.html#option_mysqldump_skip-opt) [`--禁用键`](mysqldump.html#option_mysqldump_disable-keys) [`--锁表`](mysqldump.html#option_mysqldump_lock-tables).

#### 限制

[](<>)[](<>)[](<>)

[**mysql转储**](mysqldump.html)不转储`性能模式`要么`系统`默认情况下的架构。要转储其中任何一个，请在命令行上明确命名它们。您也可以使用[`--数据库`](mysqldump.html#option_mysqldump_databases)选项。为了`性能模式`, 也使用[`--skip-lock-tables`](mysqldump.html#option_mysqldump_lock-tables)选项。

[**mysql转储**](mysqldump.html)不转储`INFORMATION_SCHEMA`架构。

[**mysql转储**](mysqldump.html)不转储`InnoDB` [`创建表空间`](create-tablespace.html)陈述。

[**mysql转储**](mysqldump.html)不转储 NDB Cluster[`ndbinfo`](mysql-cluster-ndbinfo.html)信息数据库。

[**mysql转储**](mysqldump.html)包括用于重新创建`通用日志`和`慢查询日志`转储表`mysql`数据库。不会转储日志表内容。

如果您因权限不足而在备份视图时遇到问题，请参阅[第 25.9 节，“视图限制”](view-restrictions.html)解决方法。
