### 4.5.6 mysqlpump——一个数据库备份程序

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

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

-   [mysqlpump 选项摘要](mysqlpump.html#mysqlpump-option-summary)

-   [mysqlpump 选项说明](mysqlpump.html#mysqlpump-options)

-   [mysqlpump 对象选择](mysqlpump.html#mysqlpump-filtering)

-   [mysqlpump 并行处理](mysqlpump.html#mysqlpump-parallelism)

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

    这[**mysql泵**](mysqlpump.html)客户端实用程序执行[逻辑备份](glossary.html#glos_logical_backup)，生成一组 SQL 语句，可以执行这些语句来重现原始数据库对象定义和表数据。它转储一个或多个 MySQL 数据库以进行备份或传输到另一台 SQL 服务器。

提示

考虑使用[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).

[**mysql泵**](mysqlpump.html)功能包括：

-   并行处理数据库和数据库内的对象，以加快转储过程

-   更好地控制要转储的数据库和数据库对象（表、存储程序、用户帐户）

-   将用户帐户作为帐户管理报表转储（[`创建用户`](create-user.html),[`授予`](grant.html)) 而不是作为插入`mysql`系统数据库

-   创建压缩输出的能力

-   进度指标（数值为估计值）

-   对于转储文件重新加载，更快的二级索引创建`InnoDB`通过在插入行后添加索引来创建表

笔记

[**mysql泵**](mysqlpump.html)使用 MySQL 5.7 中引入的 MySQL 功能，因此假定与 MySQL 5.7 或更高版本一起使用。

[**mysql泵**](mysqlpump.html)至少需要[`选择`](privileges-provided.html#priv_select)转储表的特权，[`显示视图`](privileges-provided.html#priv_show-view)对于倾倒的意见，[`扳机`](privileges-provided.html#priv_trigger)对于转储触发器，以及[`锁定表`](privileges-provided.html#priv_lock-tables)如果[`--单笔交易`](mysqlpump.html#option_mysqlpump_single-transaction)不使用选项。这[`选择`](privileges-provided.html#priv_select)上的特权`mysql`系统数据库需要转储用户定义。如选项描述中所述，某些选项可能需要其他权限。

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

笔记

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

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

但是，UTF-16 不允许作为连接字符集（请参阅[第 10.4 节，“连接字符集和排序规则”](charset-connection.html))，因此无法正确加载转储文件。要解决此问题，请使用`--结果文件`选项，它以 ASCII 格式创建输出：

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

#### mysqlpump 调用语法

默认，[**mysql泵**](mysqlpump.html)转储所有数据库（在[mysqlpump 限制](mysqlpump.html#mysqlpump-restrictions)）。要明确指定此行为，请使用[`--所有数据库`](mysqlpump.html#option_mysqlpump_all-databases)选项：

```
mysqlpump --all-databases
```

要转储单个数据库或该数据库中的某些表，请在命令行上命名数据库，后跟表名可选：

```
mysqlpump db_name
mysqlpump db_name tbl_name1 tbl_name2 ...
```

要将所有名称参数视为数据库名称，请使用[`--数据库`](mysqlpump.html#option_mysqlpump_databases)选项：

```
mysqlpump --databases db_name1 db_name2 ...
```

默认，[**mysql泵**](mysqlpump.html)不转储用户帐户定义，即使您转储`mysql`包含授权表的系统数据库。以以下形式将授权表内容转储为逻辑定义[`创建用户`](create-user.html)和[`授予`](grant.html)语句，使用[`--用户`](mysqlpump.html#option_mysqlpump_users)选项并禁止所有数据库转储：

```
mysqlpump --exclude-databases=% --users
```

在前面的命令中，`%`是匹配所有数据库名称的通配符[`--排除-数据库`](mysqlpump.html#option_mysqlpump_exclude-databases)选项。

[**mysql泵**](mysqlpump.html)支持包括或排除数据库、表、存储程序和用户定义的多个选项。看[mysqlpump 对象选择](mysqlpump.html#mysqlpump-filtering).

要重新加载转储文件，请执行它包含的语句。例如，使用[**mysql**](mysql.html)客户：

```
mysqlpump [options] > dump.sql
mysql < dump.sql
```

以下讨论提供了额外的[**mysql泵**](mysqlpump.html)用法示例。

查看选项列表[**mysql泵**](mysqlpump.html)支持，发出命令[**mysqlpump——帮助**](mysqlpump.html).

#### mysqlpump 选项摘要

[**mysql泵**](mysqlpump.html)支持以下选项，可以在命令行中指定，也可以在`[mysql泵]`和`[客户]`选项文件的组。（在 MySQL 8.0.20 之前，[**mysql泵**](mysqlpump.html)阅读`[mysql_dump]`组而不是`[mysql泵]`.从 8.0.20 开始，`[mysql_dump]`仍被接受但已弃用。）有关 MySQL 程序使用的选项文件的信息，请参阅[第 4.2.2.2 节，“使用选项文件”](option-files.html).

[](<>)

**表 4.16 mysqlpump 选项**

| 选项名称 | 描述 | 介绍 | 已弃用 |
| ---- | --- | --- | --- |
| [--添加-删除-数据库](mysqlpump.html#option_mysqlpump_add-drop-database) | 在每个 CREATE DATABASE 语句之前添加 DROP DATABASE 语句 |  |  |
| [--add-drop-table](mysqlpump.html#option_mysqlpump_add-drop-table) | 在每个 CREATE TABLE 语句之前添加 DROP TABLE 语句 |  |  |
| [--add-drop-user](mysqlpump.html#option_mysqlpump_add-drop-user) | 在每个 CREATE USER 语句之前添加 DROP USER 语句 |  |  |
| [--添加锁](mysqlpump.html#option_mysqlpump_add-locks) | 用 LOCK TABLES 和 UNLOCK TABLES 语句包围每个表转储 |  |  |
| [--所有数据库](mysqlpump.html#option_mysqlpump_all-databases) | 转储所有数据库 |  |  |
| [--绑定地址](mysqlpump.html#option_mysqlpump_bind-address) | 使用指定的网络接口连接 MySQL Server |  |  |
| [--字符集目录](mysqlpump.html#option_mysqlpump_character-sets-dir) | 安装字符集的目录 |  |  |
| [--列统计](mysqlpump.html#option_mysqlpump_column-statistics) | 编写 ANALYZE TABLE 语句以生成统计直方图 |  |  |
| [--完成插入](mysqlpump.html#option_mysqlpump_complete-insert) | 使用包含列名的完整 INSERT 语句 |  |  |
| [--压缩](mysqlpump.html#option_mysqlpump_compress) | 压缩客户端和服务器之间发送的所有信息 |  | 8.0.18 |
| [--压缩输出](mysqlpump.html#option_mysqlpump_compress-output) | 输出压缩算法 |  |  |
| [--压缩算法](mysqlpump.html#option_mysqlpump_compression-algorithms) | 允许连接到服务器的压缩算法 | 8.0.18 |  |
| [-- 数据库](mysqlpump.html#option_mysqlpump_databases) | 将所有名称参数解释为数据库名称 |  |  |
| [--调试](mysqlpump.html#option_mysqlpump_debug) | 写调试日志 |  |  |
| [--调试检查](mysqlpump.html#option_mysqlpump_debug-check) | 程序退出时打印调试信息 |  |  |
| [--调试信息](mysqlpump.html#option_mysqlpump_debug-info) | 程序退出时打印调试信息、内存和 CPU 统计信息 |  |  |
| [--默认身份验证](mysqlpump.html#option_mysqlpump_default-auth) | 要使用的身份验证插件 |  |  |
| [--默认字符集](mysqlpump.html#option_mysqlpump_default-character-set) | 指定默认字符集 |  |  |
| [--默认并行](mysqlpump.html#option_mysqlpump_default-parallelism) | 并行处理的默认线程数 |  |  |
| [--defaults-额外文件](mysqlpump.html#option_mysqlpump_defaults-extra-file) | 除了通常的选项文件外，还读取命名的选项文件 |  |  |
| [--默认文件](mysqlpump.html#option_mysqlpump_defaults-file) | 只读命名选项文件 |  |  |
| [--defaults-组后缀](mysqlpump.html#option_mysqlpump_defaults-group-suffix) | 选项组后缀值 |  |  |
| [--延迟表索引](mysqlpump.html#option_mysqlpump_defer-table-indexes) | 对于重新加载，将索引创建推迟到加载表行之后 |  |  |
| [--事件](mysqlpump.html#option_mysqlpump_events) | 从转储数据库转储事件 |  |  |
| [--排除数据库](mysqlpump.html#option_mysqlpump_exclude-databases) | 要从转储中排除的数据库 |  |  |
| [--排除事件](mysqlpump.html#option_mysqlpump_exclude-events) | 要从转储中排除的事件 |  |  |
| [--排除例程](mysqlpump.html#option_mysqlpump_exclude-routines) | 从转储中排除的例程 |  |  |
| [--排除表](mysqlpump.html#option_mysqlpump_exclude-tables) | 要从转储中排除的表 |  |  |
| [--排除触发器](mysqlpump.html#option_mysqlpump_exclude-triggers) | 从转储中排除的触发器 |  |  |
| [--排除用户](mysqlpump.html#option_mysqlpump_exclude-users) | 要从转储中排除的用户 |  |  |
| [--扩展插入](mysqlpump.html#option_mysqlpump_extended-insert) | 使用多行 INSERT 语法 |  |  |
| [--get-server-public-key](mysqlpump.html#option_mysqlpump_get-server-public-key) | 从服务器请求 RSA 公钥 |  |  |
| [--帮助](mysqlpump.html#option_mysqlpump_help) | 显示帮助信息并退出 |  |  |
| [--hex-blob](mysqlpump.html#option_mysqlpump_hex-blob) | 使用十六进制表示法转储二进制列 |  |  |
| [--主持人](mysqlpump.html#option_mysqlpump_host) | MySQL服务器所在的主机 |  |  |
| [--包括数据库](mysqlpump.html#option_mysqlpump_include-databases) | 要包含在转储中的数据库 |  |  |
| [--包括事件](mysqlpump.html#option_mysqlpump_include-events) | 要包含在转储中的事件 |  |  |
| [--包括例程](mysqlpump.html#option_mysqlpump_include-routines) | 包含在转储中的例程 |  |  |
| [--包括表](mysqlpump.html#option_mysqlpump_include-tables) | 要包含在转储中的表 |  |  |
| [--包括触发器](mysqlpump.html#option_mysqlpump_include-triggers) | 包含在转储中的触发器 |  |  |
| [--包括用户](mysqlpump.html#option_mysqlpump_include-users) | 要包含在转储中的用户 |  |  |
| [--插入-忽略](mysqlpump.html#option_mysqlpump_insert-ignore) | 编写 INSERT IGNORE 而不是 INSERT 语句 |  |  |
| [--日志错误文件](mysqlpump.html#option_mysqlpump_log-error-file) | 将警告和错误附加到命名文件 |  |  |
| [--登录路径](mysqlpump.html#option_mysqlpump_login-path) | 从 .mylogin.cnf 读取登录路径选项 |  |  |
| [--max-allowed-packet](mysqlpump.html#option_mysqlpump_max-allowed-packet) | 发送到服务器或从服务器接收的最大数据包长度 |  |  |
| [--净缓冲区长度](mysqlpump.html#option_mysqlpump_net-buffer-length) | TCP/IP 和套接字通信的缓冲区大小 |  |  |
| [--no-create-db](mysqlpump.html#option_mysqlpump_no-create-db) | 不要编写 CREATE DATABASE 语句 |  |  |
| [--无创建信息](mysqlpump.html#option_mysqlpump_no-create-info) | 不要编写重新创建每个转储表的 CREATE TABLE 语句 |  |  |
| [--无默认值](mysqlpump.html#option_mysqlpump_no-defaults) | 不读取选项文件 |  |  |
| [--并行模式](mysqlpump.html#option_mysqlpump_parallel-schemas) | 指定模式处理并行度 |  |  |
| [--密码](mysqlpump.html#option_mysqlpump_password) | 连接服务器时使用的密码 |  |  |
| [--密码1](mysqlpump.html#option_mysqlpump_password1) | 连接到服务器时使用的第一个多重身份验证密码 | 8.0.27 |  |
| [--密码2](mysqlpump.html#option_mysqlpump_password2) | 连接到服务器时使用的第二个多重身份验证密码 | 8.0.27 |  |
| [--密码3](mysqlpump.html#option_mysqlpump_password3) | 连接到服务器时使用的第三个多重身份验证密码 | 8.0.27 |  |
| [--插件目录](mysqlpump.html#option_mysqlpump_plugin-dir) | 插件安装目录 |  |  |
| [--港口](mysqlpump.html#option_mysqlpump_port) | 用于连接的 TCP/IP 端口号 |  |  |
| [--打印默认值](mysqlpump.html#option_mysqlpump_print-defaults) | 打印默认选项 |  |  |
| [--协议](mysqlpump.html#option_mysqlpump_protocol) | 要使用的传输协议 |  |  |
| [--代替](mysqlpump.html#option_mysqlpump_replace) | 编写 REPLACE 语句而不是 INSERT 语句 |  |  |
| [--结果文件](mysqlpump.html#option_mysqlpump_result-file) | 直接输出到给定文件 |  |  |
| [--例程](mysqlpump.html#option_mysqlpump_routines) | 从转储的数据库中转储存储的例程（过程和函数） |  |  |
| [--服务器公钥路径](mysqlpump.html#option_mysqlpump_server-public-key-path) | 包含 RSA 公钥的文件的路径名 |  |  |
| [--set-charset](mysqlpump.html#option_mysqlpump_set-charset) | 添加 SET NAMES 默认\_特点\_设置为输出 |  |  |
| [--set-gtid-purge](mysqlpump.html#option_mysqlpump_set-gtid-purged) | 是否添加 SET @@GLOBAL.GTID\_清除输出 |  |  |
| [--单笔交易](mysqlpump.html#option_mysqlpump_single-transaction) | 在单个事务中转储表 |  |  |
| [--跳过定义器](mysqlpump.html#option_mysqlpump_skip-definer) | 从视图和存储程序 CREATE 语句中省略 DEFINER 和 SQL SECURITY 子句 |  |  |
| [--跳过转储行](mysqlpump.html#option_mysqlpump_skip-dump-rows) | 不要转储表格行 |  |  |
| [--插座](mysqlpump.html#option_mysqlpump_socket) | 要使用的 Unix 套接字文件或 Windows 命名管道 |  |  |
| [--ssl-ca](mysqlpump.html#option_mysqlpump_ssl) | 包含受信任 SSL 证书颁发机构列表的文件 |  |  |
| [--ssl-capath](mysqlpump.html#option_mysqlpump_ssl) | 包含受信任的 SSL 证书颁发机构证书文件的目录 |  |  |
| [--ssl 证书](mysqlpump.html#option_mysqlpump_ssl) | 包含 X.509 证书的文件 |  |  |
| [--ssl密码](mysqlpump.html#option_mysqlpump_ssl) | 连接加密的允许密码 |  |  |
| [--ssl-crl](mysqlpump.html#option_mysqlpump_ssl) | 包含证书吊销列表的文件 |  |  |
| [--ssl-crlpath](mysqlpump.html#option_mysqlpump_ssl) | 包含证书吊销列表文件的目录 |  |  |
| [--ssl-fips 模式](mysqlpump.html#option_mysqlpump_ssl-fips-mode) | 客户端是否开启 FIPS 模式 |  |  |
| [--ssl 密钥](mysqlpump.html#option_mysqlpump_ssl) | 包含 X.509 密钥的文件 |  |  |
| [--ssl 模式](mysqlpump.html#option_mysqlpump_ssl) | 连接到服务器的所需安全状态 |  |  |
| [--ssl 会话数据](mysqlpump.html#option_mysqlpump_ssl) | 包含 SSL 会话数据的文件 | 8.0.29 |  |
| [--ssl-session-data-continue-on-failed-reuse](mysqlpump.html#option_mysqlpump_ssl) | 会话重用失败时是否建立连接 | 8.0.29 |  |
| [--tls-密码套件](mysqlpump.html#option_mysqlpump_tls-ciphersuites) | 用于加密连接的允许 TLSv1.3 密码套件 | 8.0.16 |  |
| [--tls-版本](mysqlpump.html#option_mysqlpump_tls-version) | 加密连接的允许 TLS 协议 |  |  |
| [--触发器](mysqlpump.html#option_mysqlpump_triggers) | 每个转储表的转储触发器 |  |  |
| [--tz-utc](mysqlpump.html#option_mysqlpump_tz-utc) | 添加设置时间\_ZONE='+00:00' 转储文件 |  |  |
| [--用户](mysqlpump.html#option_mysqlpump_user) | 连接到服务器时使用的 MySQL 用户名 |  |  |
| [--用户](mysqlpump.html#option_mysqlpump_users) | 转储用户帐户 |  |  |
| [--版本](mysqlpump.html#option_mysqlpump_version) | 显示版本信息并退出 |  |  |
| [--观察进度](mysqlpump.html#option_mysqlpump_watch-progress) | 显示进度指示器 |  |  |
| [--zstd-压缩级别](mysqlpump.html#option_mysqlpump_zstd-compression-level) | 与使用 zstd 压缩的服务器的连接的压缩级别 | 8.0.18 |  |

#### mysqlpump 选项说明

-   [](<>) [`- 帮助`](mysqlpump.html#option_mysqlpump_help), `-？`

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

    显示帮助信息并退出。

-   [](<>) [`--add-drop-database`](mysqlpump.html#option_mysqlpump_add-drop-database)

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

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

    笔记

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

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

-   [](<>) [`--add-drop-table`](mysqlpump.html#option_mysqlpump_add-drop-table)

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

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

-   [](<>) [`--add-drop-user`](mysqlpump.html#option_mysqlpump_add-drop-user)

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

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

-   [](<>) [`--添加锁`](mysqlpump.html#option_mysqlpump_add-locks)

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

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

    此选项不适用于并行性，因为[`插入`](insert.html)来自不同表的语句可以交错并且[`解锁桌子`](lock-tables.html)在一个表的插入结束之后可以释放对保留插入的表的锁定。

    [`--添加锁`](mysqlpump.html#option_mysqlpump_add-locks)和[`--单笔交易`](mysqlpump.html#option_mysqlpump_single-transaction)是互斥的。

-   [](<>) [`--所有数据库`](mysqlpump.html#option_mysqlpump_all-databases),`-一种`

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

    转储所有数据库（在[mysqlpump 限制](mysqlpump.html#mysqlpump-restrictions)）。如果没有明确指定其他行为，则这是默认行为。

    [`--所有数据库`](mysqlpump.html#option_mysqlpump_all-databases)和[`--数据库`](mysqlpump.html#option_mysqlpump_databases)是互斥的。

    笔记

    见[`--add-drop-database`](mysqlpump.html#option_mysqlpump_add-drop-database)有关该选项不兼容的信息的描述[`--所有数据库`](mysqlpump.html#option_mysqlpump_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)明确的选项。

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

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

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

-   [](<>) [`--字符集目录=*`小路`*`](mysqlpump.html#option_mysqlpump_character-sets-dir)

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

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

-   [](<>) [`--列统计`](mysqlpump.html#option_mysqlpump_column-statistics)

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

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

-   [](<>) [`--完成插入`](mysqlpump.html#option_mysqlpump_complete-insert)

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

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

-   [](<>) [`- 压缩`](mysqlpump.html#option_mysqlpump_compress),`-C`

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

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

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

-   [](<>) [`--压缩输出=*`算法`*`](mysqlpump.html#option_mysqlpump_compress-output)

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

    默认，[**mysql泵**](mysqlpump.html)不压缩输出。此选项指定使用指定算法的输出压缩。允许的算法是`LZ4`和`ZLIB`.

    要解压缩压缩输出，您必须具有适当的实用程序。如果系统命令**lz4**和**openssl zlib**不可用，MySQL 发行版包括[**lz4\_解压**](lz4-decompress.html)和[**zlib\_解压**](zlib-decompress.html)可用于解压缩的实用程序[**mysql泵**](mysqlpump.html)使用压缩的输出[`--压缩输出=LZ4`](mysqlpump.html#option_mysqlpump_compress-output)和[`--压缩输出=ZLIB`](mysqlpump.html#option_mysqlpump_compress-output)选项。有关详细信息，请参阅[第 4.8.1 节，“lz4_decompress — 解压 mysqlpump LZ4-压缩输出”](lz4-decompress.html)， 和[第 4.8.3 节，“zlib_decompress — 解压 mysqlpump ZLIB 压缩输出”](zlib-decompress.html).

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

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

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

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

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

-   [](<>) [`--数据库`](mysqlpump.html#option_mysqlpump_databases),`-B`

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

    一般，[**mysql泵**](mysqlpump.html)将命令行上的第一个 name 参数视​​为数据库名称，并将任何后续名称视为表名称。使用此选项，它将所有名称参数视为数据库名称。[`创建数据库`](create-database.html)语句包含在每个新数据库之前的输出中。

    [`--所有数据库`](mysqlpump.html#option_mysqlpump_all-databases)和[`--数据库`](mysqlpump.html#option_mysqlpump_databases)是互斥的。

    笔记

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

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

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

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

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

-   [](<>) [`--调试检查`](mysqlpump.html#option_mysqlpump_debug-check)

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

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

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

-   [](<>) [`- 调试信息`](mysqlpump.html#option_mysqlpump_debug-info),`-T`

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

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

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

-   [](<>) [`--default-auth=*`插入`*`](mysqlpump.html#option_mysqlpump_default-auth)

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

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

-   [](<>) [`--默认字符集=*`字符集名称`*`](mysqlpump.html#option_mysqlpump_default-character-set)

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

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

-   [](<>) [`--默认并行=*`ñ`*`](mysqlpump.html#option_mysqlpump_default-parallelism)

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

    每个并行处理队列的默认线程数。默认值为 2。

    这[`--并行模式`](mysqlpump.html#option_mysqlpump_parallel-schemas)选项也会影响并行性，可用于覆盖默认线程数。有关详细信息，请参阅[mysqlpump 并行处理](mysqlpump.html#mysqlpump-parallelism).

    和[`--默认并行度=0`](mysqlpump.html#option_mysqlpump_default-parallelism)和不[`--并行模式`](mysqlpump.html#option_mysqlpump_parallel-schemas)选项，[**mysql泵**](mysqlpump.html)作为单线程进程运行并且不创建队列。

    启用并行性后，可以交错来自不同数据库的输出。

-   [](<>) [`--defaults-extra-file=*`文件名`*`](mysqlpump.html#option_mysqlpump_defaults-extra-file)

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

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

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

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

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

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

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

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

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

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

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

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

-   [](<>) [`--defer-table-indexes`](mysqlpump.html#option_mysqlpump_defer-table-indexes)

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

    在转储输出中，将每个表的索引创建推迟到其行被加载之后。这适用于所有存储引擎，但对于`InnoDB`仅适用于二级索引。

    此选项默认启用；采用[`--skip-defer-table-indexes`](mysqlpump.html#option_mysqlpump_defer-table-indexes)禁用它。

-   [](<>) [`--事件`](mysqlpump.html#option_mysqlpump_events)

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

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

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

    此选项默认启用；采用[`--跳过事件`](mysqlpump.html#option_mysqlpump_events)禁用它。

-   [](<>) [`--排除数据库=*`db_list`*`](mysqlpump.html#option_mysqlpump_exclude-databases)

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

    不要将数据库转储到*`db_list`*，它是一个或多个以逗号分隔的数据库名称的列表。此选项的多个实例是相加的。有关详细信息，请参阅[mysqlpump 对象选择](mysqlpump.html#mysqlpump-filtering).

-   [](<>) [`--排除事件=*`活动列表`*`](mysqlpump.html#option_mysqlpump_exclude-events)

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

    不要将数据库转储到*`活动列表`*，它是一个或多个以逗号分隔的事件名称的列表。此选项的多个实例是相加的。有关详细信息，请参阅[mysqlpump 对象选择](mysqlpump.html#mysqlpump-filtering).

-   [](<>) [`--排除例程=*`例程列表`*`](mysqlpump.html#option_mysqlpump_exclude-routines)

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

    不要将事件转储到*`例程列表`*，它是一个或多个逗号分隔的例程（存储过程或函数）名称的列表。此选项的多个实例是相加的。有关详细信息，请参阅[mysqlpump 对象选择](mysqlpump.html#mysqlpump-filtering).

-   [](<>) [`--排除表=*`表列表`*`](mysqlpump.html#option_mysqlpump_exclude-tables)

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

    不要将表格倾倒在*`表列表`*，它是一个或多个以逗号分隔的表名的列表。此选项的多个实例是相加的。有关详细信息，请参阅[mysqlpump 对象选择](mysqlpump.html#mysqlpump-filtering).

-   [](<>) [`--排除触发器=*`触发器列表`*`](mysqlpump.html#option_mysqlpump_exclude-triggers)

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

    不要将触发器倾倒在*`触发器列表`*，它是一个或多个以逗号分隔的触发器名称的列表。此选项的多个实例是相加的。有关详细信息，请参阅[mysqlpump 对象选择](mysqlpump.html#mysqlpump-filtering).

-   [](<>) [`--排除用户=*`用户列表`*`](mysqlpump.html#option_mysqlpump_exclude-users)

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

    不要将用户帐户转储到*`用户列表`*，它是一个或多个以逗号分隔的帐户名称的列表。此选项的多个实例是相加的。有关详细信息，请参阅[mysqlpump 对象选择](mysqlpump.html#mysqlpump-filtering).

-   [](<>) [`--扩展插入=*`ñ`*`](mysqlpump.html#option_mysqlpump_extended-insert)

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

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

    选项值表示每个要包含的行数[`插入`](insert.html)陈述。默认值为 250。值为 1 产生 1插入[`每个表行的语句。`](insert.html)--get-server-public-key

-   [](<>) [`从服务器请求基于 RSA 密钥对的密码交换所需的公钥。`](mysqlpump.html#option_mysqlpump_get-server-public-key)

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

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

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

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

-   [](<>) [`--hex-blob`](mysqlpump.html#option_mysqlpump_hex-blob)

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

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

-   [](<>) [`--主机=*`主机名`*`](mysqlpump.html#option_mysqlpump_host),`-h *`主机名`*`

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

    从给定主机上的 MySQL 服务器转储数据。

-   [](<>) [`--include-databases=*`db_list`*`](mysqlpump.html#option_mysqlpump_include-databases)

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

    将数据库转储到*`db_list`*，它是一个或多个以逗号分隔的数据库名称的列表。转储包括命名数据库中的所有对象。此选项的多个实例是相加的。有关详细信息，请参阅[mysqlpump 对象选择](mysqlpump.html#mysqlpump-filtering).

-   [](<>) [`--包括事件=*`活动列表`*`](mysqlpump.html#option_mysqlpump_include-events)

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

    将事件转储到*`活动列表`*，它是一个或多个以逗号分隔的事件名称的列表。此选项的多个实例是相加的。有关详细信息，请参阅[mysqlpump 对象选择](mysqlpump.html#mysqlpump-filtering).

-   [](<>) [`--include-routines=*`例程列表`*`](mysqlpump.html#option_mysqlpump_include-routines)

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

    将例程转储到*`例程列表`*，它是一个或多个逗号分隔的例程（存储过程或函数）名称的列表。此选项的多个实例是相加的。有关详细信息，请参阅[mysqlpump 对象选择](mysqlpump.html#mysqlpump-filtering).

-   [](<>) [`--include-tables=*`表列表`*`](mysqlpump.html#option_mysqlpump_include-tables)

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

    将表转储到*`表列表`*，它是一个或多个以逗号分隔的表名的列表。此选项的多个实例是相加的。有关详细信息，请参阅[mysqlpump 对象选择](mysqlpump.html#mysqlpump-filtering).

-   [](<>) [`--include-triggers=*`触发器列表`*`](mysqlpump.html#option_mysqlpump_include-triggers)

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

    将触发器转储到*`触发器列表`*，它是一个或多个以逗号分隔的触发器名称的列表。此选项的多个实例是相加的。有关详细信息，请参阅[mysqlpump 对象选择](mysqlpump.html#mysqlpump-filtering).

-   [](<>) [`--包括用户=*`用户列表`*`](mysqlpump.html#option_mysqlpump_include-users)

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

    将用户帐户转储到*`用户列表`*，它是一个或多个以逗号分隔的用户名的列表。此选项的多个实例是相加的。有关详细信息，请参阅[mysqlpump 对象选择](mysqlpump.html#mysqlpump-filtering).

-   [](<>) [`--插入-忽略`](mysqlpump.html#option_mysqlpump_insert-ignore)

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

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

-   [](<>) [`--日志错误文件=*`文件名`*`](mysqlpump.html#option_mysqlpump_log-error-file)

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

    通过将警告和错误附加到命名文件来记录它们。如果没有给出这个选项，[**mysql泵**](mysqlpump.html)将警告和错误写入标准错误输出。

-   [](<>) [`--登录路径=*`姓名`*`](mysqlpump.html#option_mysqlpump_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).

-   [](<>) [`--max-allowed-packet=*`ñ`*`](mysqlpump.html#option_mysqlpump_max-allowed-packet)

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

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

-   [](<>) [`--net-buffer-length=*`ñ`*`](mysqlpump.html#option_mysqlpump_net-buffer-length)

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

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

-   [](<>) [`--no-create-db`](mysqlpump.html#option_mysqlpump_no-create-db)

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

    抑制任何[`创建数据库`](create-database.html)否则可能包含在输出中的语句。

-   [](<>) [`--no-create-info`](mysqlpump.html#option_mysqlpump_no-create-info),`-t`

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

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

-   [](<>) [`--no-defaults`](mysqlpump.html#option_mysqlpump_no-defaults)

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

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

    唯一的例外是`.mylogin.cnf`如果文件存在，则在所有情况下都会读取文件。这允许以比在命令行上更安全的方式指定密码，即使在[`--no-defaults`](mysqlpump.html#option_mysqlpump_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).

-   [](<>) [`--并行模式=[*`ñ`*:]*`db_list`*`](mysqlpump.html#option_mysqlpump_parallel-schemas)

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

    创建一个队列来处理数据库*`db_list`*，它是一个或多个以逗号分隔的数据库名称的列表。如果*`ñ`*给定，队列使用*`ñ`*线程。如果*`ñ`*没有给出，[`--默认并行`](mysqlpump.html#option_mysqlpump_default-parallelism)选项确定队列线程的数量。

    此选项的多个实例创建多个队列。[**mysql泵**](mysqlpump.html)还创建一个默认队列以用于未在任何名称中命名的数据库[`--并行模式`](mysqlpump.html#option_mysqlpump_parallel-schemas)选项，如果命令选项选择它们，则用于转储用户定义。有关详细信息，请参阅[mysqlpump 并行处理](mysqlpump.html#mysqlpump-parallelism).

-   [](<>) [`--密码[=*`密码`*]`](mysqlpump.html#option_mysqlpump_password),`-p[*`密码`*]`

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

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

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

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

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

    [](<>)

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

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

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

    [`--密码1`](mysqlpump.html#option_mysqlpump_password1)和[`- 密码`](mysqlpump.html#option_mysqlpump_password)是同义词[`--skip-password1`](mysqlpump.html#option_mysqlpump_password1)和[`--跳过密码`](mysqlpump.html#option_mysqlpump_password).

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

    [](<>)

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

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

    [](<>)

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

-   [](<>) [`--插件目录=*`目录名`*`](mysqlpump.html#option_mysqlpump_plugin-dir)

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

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

-   [](<>) [`--端口=*`端口号`*`](mysqlpump.html#option_mysqlpump_port),`-P *`端口号`*`

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

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

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

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

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

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

-   [](<>) [`--protocol={TCP|SOCKET|管道|内存}`](mysqlpump.html#option_mysqlpump_protocol)

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

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

-   [](<>) [`- 代替`](mysqlpump.html#option_mysqlpump_replace)

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

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

-   [](<>) [`--结果文件=*`文件名`*`](mysqlpump.html#option_mysqlpump_result-file)

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

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

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

-   [](<>) [`--例程`](mysqlpump.html#option_mysqlpump_routines)

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

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

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

    此选项默认启用；采用[`--跳过例程`](mysqlpump.html#option_mysqlpump_routines)禁用它。

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

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

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

    如果[`--server-public-key-path=*`文件名`*`](mysqlpump.html#option_mysqlpump_server-public-key-path)给出并指定一个有效的公钥文件，它优先于[`--get-server-public-key`](mysqlpump.html#option_mysqlpump_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).

-   [](<>) [`--set-charset`](mysqlpump.html#option_mysqlpump_set-charset)

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

    写[`设置名称 *`default_character_set`*`](set-names.html)到输出。

    默认情况下启用此选项。禁用它并抑制[`设置名称`](set-names.html)声明，使用[`--skip-set-charset`](mysqlpump.html#option_mysqlpump_set-charset).

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

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

    此选项启用对写入转储文件的全局事务 ID (GTID) 信息的控制，方法是指示是否添加[`SET @@GLOBAL.gtid_purged`](set-variable.html)对输出的声明。此选项还可能导致在重新加载转储文件时将一条语句写入禁用二进制日志记录的输出。

    下表显示了允许的选项值。默认值为`汽车`.

    | 价值 | 意义 |
    | --- | --- |
    | `离开` | 加号`放`对输出的声明。 |
    | `在` | 添加一个`放`对输出的声明。如果服务器上未启用 GTID，则会发生错误。 |
    | `汽车` | 添加一个`放`如果在服务器上启用了 GTID，则在输出中声明。 |

    这`--set-gtid-purge`重新加载转储文件时，选项对二进制日志记录有以下影响：

    -   `--set-gtid-purged=OFF`：`SET @@SESSION.SQL_LOG_BIN=0;`不会添加到输出中。

    -   `--set-gtid-purge=ON`：`SET @@SESSION.SQL_LOG_BIN=0;`被添加到输出中。

    -   `--set-gtid-purged=自动`：`SET @@SESSION.SQL_LOG_BIN=0;`如果在您正在备份的服务器上启用了 GTID（也就是说，如果`汽车`评估为`在`）。

-   [](<>) [`--单笔交易`](mysqlpump.html#option_mysqlpump_single-transaction)

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

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

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

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

    [`--添加锁`](mysqlpump.html#option_mysqlpump_add-locks)和[`--单笔交易`](mysqlpump.html#option_mysqlpump_single-transaction)是互斥的。

-   [](<>) [`--skip-definer`](mysqlpump.html#option_mysqlpump_skip-definer)

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

    忽略`定义者`和`SQL 安全`从条款`创建`视图和存储程序的语句。转储文件在重新加载时会创建使用默认值的对象`定义者`和`SQL 安全`价值观。看[第 25.6 节，“存储对象访问控制”](stored-objects-security.html).

-   [](<>) [`--skip-dump-rows`](mysqlpump.html#option_mysqlpump_skip-dump-rows),`-d`

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

    不要转储表行。

-   [](<>) [`--socket=*`小路`*`](mysqlpump.html#option_mysqlpump_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}`](mysqlpump.html#option_mysqlpump_ssl-fips-mode)

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

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

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

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

    -   `在`：启用 FIPS 模式。

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

    笔记

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

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

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

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

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

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

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

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

-   [](<>) [`--触发器`](mysqlpump.html#option_mysqlpump_triggers)

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

    在输出中包含每个转储表的触发器。

    此选项默认启用；采用[`--跳过触发器`](mysqlpump.html#option_mysqlpump_triggers)禁用它。

-   [](<>) [`--tz-utc`](mysqlpump.html#option_mysqlpump_tz-utc)

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

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

    此选项默认启用；采用[`--skip-tz-utc`](mysqlpump.html#option_mysqlpump_tz-utc)禁用它。

-   [](<>) [`--用户=*`用户名`*`](mysqlpump.html#option_mysqlpump_user),`-u *`用户名`*`

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

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

-   [](<>) [`--用户`](mysqlpump.html#option_mysqlpump_users)

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

    将用户帐户转储为以下形式的逻辑定义[`创建用户`](create-user.html)和[`授予`](grant.html)陈述。

    用户定义存储在授权表中`mysql`系统数据库。默认，[**mysql泵**](mysqlpump.html)不包括授权表`mysql`数据库转储。要将授权表的内容转储为逻辑定义，请使用[`--用户`](mysqlpump.html#option_mysqlpump_users)选项并禁止所有数据库转储：

    ```
    mysqlpump --exclude-databases=% --users
    ```

-   [](<>) [`- 版本`](mysqlpump.html#option_mysqlpump_version),`-V`

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

    显示版本信息并退出。

-   [](<>) [`--观察进度`](mysqlpump.html#option_mysqlpump_watch-progress)

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

    定期显示进度指示器，提供有关表、行和其他对象的已完成和总数的信息。

    此选项默认启用；采用[`--skip-watch-progress`](mysqlpump.html#option_mysqlpump_watch-progress)禁用它。

-   [](<>) [`--zstd-压缩级别=*`等级`*`](mysqlpump.html#option_mysqlpump_zstd-compression-level)

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

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

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

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

#### mysqlpump对象选择

[](<>)

[**mysqlpump**](mysqlpump.html)有一组包含和排除选项，可以过滤多种对象类型，并对要转储的对象提供灵活的控制：

-   [`--包括数据库`](mysqlpump.html#option_mysqlpump_include-databases)和[`--排除数据库`](mysqlpump.html#option_mysqlpump_exclude-databases)应用于数据库及其内的所有对象。

-   [`--包括桌子`](mysqlpump.html#option_mysqlpump_include-tables)和[`--排除表`](mysqlpump.html#option_mysqlpump_exclude-tables)适用于表格。这些选项也会影响与表关联的触发器，除非给出了特定于触发器的选项。

-   [`--包括触发器`](mysqlpump.html#option_mysqlpump_include-triggers)和[`--排除触发器`](mysqlpump.html#option_mysqlpump_exclude-triggers)应用于触发器。

-   [`--包括常规`](mysqlpump.html#option_mysqlpump_include-routines)和[`--排除例行程序`](mysqlpump.html#option_mysqlpump_exclude-routines)适用于存储过程和函数。如果例程选项与存储过程名称匹配，那么它也会与同名的存储函数匹配。

-   [`--包括活动`](mysqlpump.html#option_mysqlpump_include-events)和[`--排除事件`](mysqlpump.html#option_mysqlpump_exclude-events)应用于事件计划程序事件。

-   [`--包括用户`](mysqlpump.html#option_mysqlpump_include-users)和[`--排除用户`](mysqlpump.html#option_mysqlpump_exclude-users)适用于用户帐户。

    任何包含或排除选项都可能被多次给出。这种效应是加性的。这些选项的顺序并不重要。

    每个包含和排除选项的值都是相应对象类型的逗号分隔名称列表。例如：


```
--exclude-databases=test,world
--include-tables=customer,invoice
```

对象名称中允许使用通配符：

-   `%`匹配零个或多个字符的任意序列。

-   `_`匹配任何单个字符。

    例如[`--包括表格=t%，_tmp`](mysqlpump.html#option_mysqlpump_include-tables)匹配以开头的所有表名`t`以及所有以`tmp`.

    对于用户来说，没有主机部分的指定名称将被解释为隐含的主机`%`例如`u1`和`u1@%`它们是等价的。这与MySQL中通常使用的等价性相同（参见[第6.2.4节“指定账户名称”](account-names.html)).

    包含和排除选项的交互作用如下：

-   默认情况下，没有包含或排除选项，[**mysqlpump**](mysqlpump.html)转储所有数据库（在[MySQL泵限制](mysqlpump.html#mysqlpump-restrictions)).

-   如果在没有排除选项的情况下给出包含选项，则仅转储名为“包含”的对象。

-   如果在没有包含选项的情况下给出了排除选项，则将转储所有对象，但命名为排除的对象除外。

-   如果给定了包含和排除选项，则不会转储所有命名为排除和未命名为包含的对象。所有其他物体都会被倾倒。

    如果转储多个数据库，可以通过使用数据库名称限定对象名称来命名特定数据库中的表、触发器和例程。下面的命令转储数据库`db1`和`db2`，但不包括表格`db1。t1`和`db2。t2`:


```
mysqlpump --include-databases=db1,db2 --exclude-tables=db1.t1,db2.t2
```

以下选项提供了指定要转储哪些数据库的替代方法：

-   这个[`--所有数据库`](mysqlpump.html#option_mysqlpump_all-databases)选项转储所有数据库（在[MySQL泵限制](mysqlpump.html#mysqlpump-restrictions))。这相当于完全不指定对象选项（默认设置）[**mysqlpump**](mysqlpump.html)行动就是抛弃一切）。

    [`--包含数据库=%`](mysqlpump.html#option_mysqlpump_include-databases)类似于[`--所有数据库`](mysqlpump.html#option_mysqlpump_all-databases)，但会选择所有要转储的数据库，即使这些数据库是[`--所有数据库`](mysqlpump.html#option_mysqlpump_all-databases).

-   这个[`--数据库`](mysqlpump.html#option_mysqlpump_databases)选择原因[**mysqlpump**](mysqlpump.html)将所有名称参数视为要转储的数据库的名称。这相当于[`--包括数据库`](mysqlpump.html#option_mysqlpump_include-databases)选项命名相同的数据库。

#### mysqlpump并行处理

[](<>)

[**mysqlpump**](mysqlpump.html)可以使用并行来实现并发处理。可以选择数据库之间的并发性（同时转储多个数据库）和数据库内部的并发性（同时转储给定数据库中的多个对象）。

默认情况下，[**mysqlpump**](mysqlpump.html)设置一个包含两个线程的队列。您可以创建其他队列，并控制分配给每个队列的线程数，包括默认队列：

-   [`--默认并行性=*`N`*`](mysqlpump.html#option_mysqlpump_default-parallelism)指定用于每个队列的默认线程数。如果没有这个选择，*`N`*是2。

    默认队列始终使用默认的线程数。其他队列使用默认的线程数，除非另行指定。

-   [`--并行模式=[*`N`*:]*`db\_列表`*`](mysqlpump.html#option_mysqlpump_parallel-schemas)设置用于转储中名为的数据库的处理队列*`db_列表`*并可选地指定队列使用的线程数。*`db_列表`*是以逗号分隔的数据库名称列表。如果选项参数以`*`N`*:`，队列使用*`N`*线程。否则[`--默认并行性`](mysqlpump.html#option_mysqlpump_default-parallelism)选项确定队列线程的数量。

    多个[`--并行模式`](mysqlpump.html#option_mysqlpump_parallel-schemas)选项创建多个队列。

    数据库列表中的名称允许包含相同的名称`%`和`_`筛选选项支持通配符（请参阅[mysqlpump对象选择](mysqlpump.html#mysqlpump-filtering)).

[**mysqlpump**](mysqlpump.html)使用默认队列处理未使用[`--并行模式`](mysqlpump.html#option_mysqlpump_parallel-schemas)选项，如果命令选项选择了用户定义，则用于转储用户定义。

一般来说，对于多个队列，[**mysqlpump**](mysqlpump.html)使用队列处理的数据库集之间的并行性，同时转储多个数据库。对于使用多个线程的队列，[**mysqlpump**](mysqlpump.html)使用数据库内的并行性，同时从给定数据库转储多个对象。例外情况可能发生；例如[**mysqlpump**](mysqlpump.html)从数据库中的服务器对象列表中获取时，可能会阻止队列。

启用并行性后，不同数据库的输出可以交错。例如[`插入`](insert.html)来自并行转储的多个表的语句可以交错；这些陈述不是按任何特定顺序写的。这不会影响重新加载，因为output语句用数据库名称限定对象名称，或者前面有[`使用`](use.html)按要求提交报表。

并行性的粒度是单个数据库对象。例如，不能使用多个线程并行转储单个表。

例如：

```
mysqlpump --parallel-schemas=db1,db2 --parallel-schemas=db3
```

[**mysqlpump**](mysqlpump.html)设置要处理的队列`db1`和`db2`，另一个要处理的队列`db3`，以及处理所有其他数据库的默认队列。所有队列都使用两个线程。

```
mysqlpump --parallel-schemas=db1,db2 --parallel-schemas=db3
          --default-parallelism=4
```

这与前面的示例相同，只是所有队列都使用四个线程。

```
mysqlpump --parallel-schemas=5:db1,db2 --parallel-schemas=3:db3
```

排队等候`db1`和`db2`使用五个线程，队列为`db3`使用三个线程，默认队列使用默认的两个线程。

作为特例[`--默认并行度=0`](mysqlpump.html#option_mysqlpump_default-parallelism)没有[`--并行模式`](mysqlpump.html#option_mysqlpump_parallel-schemas)选项，[**mysqlpump**](mysqlpump.html)作为单线程进程运行，不创建队列。

#### MySQL泵限制

[](<>)

[**mysqlpump**](mysqlpump.html)不会倾倒垃圾`性能模式`, `恩宾福`或`系统`默认模式。要转储其中任何一个，请在命令行中显式地命名它们。你也可以用[`--数据库`](mysqlpump.html#option_mysqlpump_databases)或[`--包括数据库`](mysqlpump.html#option_mysqlpump_include-databases)选项

[**mysqlpump**](mysqlpump.html)不会倾倒垃圾`信息模式`模式。

[**mysqlpump**](mysqlpump.html)不倾倒`InnoDB` [`创建表空间`](create-tablespace.html)声明。

[**mysqlpump**](mysqlpump.html)使用以逻辑形式转储用户帐户[`创建用户`](create-user.html)和[`授予`](grant.html)语句（例如，当您使用[`--包括用户`](mysqlpump.html#option_mysqlpump_include-users)或[`--用户`](mysqlpump.html#option_mysqlpump_users)选项）。由于这个原因，大量的`mysql`默认情况下，系统数据库不包括包含用户定义的授权表：`使用者`, `分贝`, `表_priv`, `列队`, `私人程序`或`私人代理人`.要转储任何grant表，请指定`mysql`数据库，后跟表名：

```
mysqlpump mysql user db ...
```
