Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  mysqlpump — A Database Backup Program

6.5.6 mysqlpump — 数据库备份程序

客户端实用程序 mysqlpump 执行逻辑备份,生成一组 SQL 语句,可以执行以恢复原始数据库对象定义和表数据。它将一个或多个 MySQL 数据库转储以备用或传输到另一个 SQL 服务器。

Note

mysqlpump 从 MySQL 8.0.34 / 8.1.0 开始弃用;预计在未来版本的 MySQL 中删除。你可以使用诸如 mysqldump 和 MySQL Shell 等 MySQL 程序来执行逻辑备份、转储数据库和类似任务。

Tip

考虑使用 MySQL Shell 转储实用程序,它提供了并行转储、文件压缩和进度信息显示,以及云功能,如 Oracle Cloud Infrastructure Object Storage 流式传输和 MySQL HeatWave Service 兼容性检查和修改。转储可以轻松地导入到 MySQL 服务器实例或 MySQL HeatWave Service DB System 中,使用 MySQL Shell 载入转储实用程序。MySQL Shell 的安装说明可以在 这里找到。

mysqlpump 的功能包括:

  • 数据库和数据库对象(表、存储过程、用户账户)的并行处理,以加速转储过程

  • 更好地控制要转储的数据库和数据库对象(表、存储过程、用户账户)

  • 将用户账户转储为账户管理语句(CREATE USERGRANT),而不是将其作为插入到 mysql 系统数据库中

  • 创建压缩输出的能力

  • 进度指示器(值为估算)

  • 对于转储文件的重新加载,使用 InnoDB 表的次要索引创建,通过在插入行后添加索引来加速

Note

mysqlpump 使用 MySQL 5.7 中引入的功能,因此假设使用 MySQL 5.7 或更高版本。

mysqlpump 需要至少具有转储表的 SELECT 权限,转储视图的 SHOW VIEW 权限,转储触发器的 TRIGGER 权限,以及 LOCK TABLES 权限,如果不使用 --single-transaction 选项。需要 SELECT 权限在 mysql 系统数据库中,以转储用户定义。某些选项可能需要其他权限,如选项描述中所述。

要重新加载转储文件,需要执行语句所需的权限,例如创建对象的适当 CREATE 权限。

Note

使用 PowerShell 在 Windows 上创建的转储文件具有 UTF-16 编码:

mysqlpump [options] > dump.sql

然而,UTF-16 不允许作为连接字符集(见 第 12.4 节,“连接字符集和排序规则”),因此无法正确加载转储文件。要解决这个问题,请使用 --result-file 选项,该选项以 ASCII 格式创建输出:

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

mysqlpump 调用语法

默认情况下,mysqlpump 转储所有数据库(某些例外情况见 mysqlpump 限制)。要明确指定此行为,请使用 --all-databases 选项:

mysqlpump --all-databases

要转储单个数据库或该数据库中的某些表,请在命令行中指定数据库名称,后跟表名称:

mysqlpump db_name
mysqlpump db_name tbl_name1 tbl_name2 ...

要将所有名称参数视为数据库名称,请使用 --databases 选项:

mysqlpump --databases db_name1 db_name2 ...

默认情况下,mysqlpump 不转储用户帐户定义,即使您转储了包含授权表的 mysql 系统数据库。要转储授权表内容作为逻辑定义,以 CREATE USERGRANT 语句的形式,请使用 --users 选项并抑制所有数据库转储:

mysqlpump --exclude-databases=% --users

在上面的命令中,% 是一个通配符,匹配 --exclude-databases 选项的所有数据库名称。

mysqlpump 支持多个选项,以包括或排除数据库、表、存储程序和用户定义。请参阅 mysqlpump 对象选择

要重新加载转储文件,请执行它包含的语句。例如,使用 mysql 客户端:

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

以下讨论提供了更多的 mysqlpump 用法示例。

要查看 mysqlpump 支持的选项列表,请发出命令 mysqlpump --help

mysqlpump 选项摘要

mysqlpump 支持以下选项,可以在命令行或选项文件的 [mysqlpump][client] 组中指定。mysqlpump 也读取 [mysql_dump] 组,但这种行为已弃用。有关 MySQL 程序使用的选项文件的信息,请参阅 第 6.2.2.2 节,“使用选项文件”

表 6.16 mysqlpump 选项

Option Name Description
--add-drop-database 在每个 CREATE DATABASE 语句之前添加 DROP DATABASE 语句
--add-drop-table 在每个 CREATE TABLE 语句之前添加 DROP TABLE 语句
--add-drop-user 在每个 CREATE USER 语句之前添加 DROP USER 语句
--add-locks 将每个表转储围绕 LOCK TABLES 和 UNLOCK TABLES 语句
--all-databases 转储所有数据库
--bind-address 使用指定的网络接口连接到 MySQL 服务器
--character-sets-dir 字符集安装的目录
--列统计信息 写入ANALYZE TABLE语句以生成统计信息histograms
--完整插入 使用完整的INSERT语句,包括列名
--压缩 压缩客户端和服务器之间的所有信息
--输出压缩 输出压缩算法
--压缩算法 服务器连接的允许压缩算法
--数据库 将所有名称参数解释为数据库名称
--调试 写入调试日志
--调试检查 程序退出时打印调试信息
--调试信息 程序退出时打印调试信息、内存和CPU统计信息
--默认身份验证 要使用的身份验证插件
--默认字符集 指定默认字符集
--默认并行度 默认的并行处理线程数
--额外选项文件 除了通常的选项文件外,还读取命名的选项文件
--选项文件 只读取命名的选项文件
--选项组后缀 选项组后缀值
--延迟表索引 在重新加载时,延迟索引创建直到加载表行后
--事件 从转储的数据库中转储事件
--排除数据库 要排除的数据库
--排除事件 要排除的事件
--排除例程 要排除的例程
--排除表 要排除的表
--排除触发器 要排除的触发器
--排除用户 要排除的用户
--扩展插入 使用多行INSERT语句
--获取服务器公钥 从服务器请求RSA公钥
--帮助 显示帮助信息并退出
--十六进制Blob 使用十六进制表示法转储二进制列
--主机 MySQL服务器所在的主机
--包括数据库 要包括在转储中的数据库
--包括事件 要包括在转储中的事件
--包括例程 要包括在转储中的例程
--包括表 要包括在转储中的表
--包括触发器 要包括在转储中的触发器
--包括用户 要包括在转储中的用户
--插入忽略 写入INSERT IGNORE语句而不是INSERT语句
--日志错误文件 将警告和错误追加到命名文件
--登录路径 从.mylogin.cnf中读取登录路径选项
--最大允许数据包 从服务器发送或接收的最大数据包长度
--网络缓冲区长度 TCP/IP和套接字通信的缓冲区大小
--不创建数据库 不写入CREATE DATABASE语句
--不创建信息 不写入重新创建每个转储表的CREATE TABLE语句
--不使用默认值 不读取选项文件
--不使用登录路径 不从登录路径文件中读取登录路径
--并行模式 指定模式处理并行度
--密码 连接服务器时使用的密码
--密码1 连接服务器时使用的第一个多因素身份验证密码
--密码2 连接服务器时使用的第二个多因素身份验证密码
--密码3 连接服务器时使用的第三个多因素身份验证密码
--插件目录 插件安装的目录
--端口 连接服务器时使用的TCP/IP端口号
--打印默认值 打印默认选项
--协议 使用的传输协议
--replace 写入REPLACE语句而不是INSERT语句
--结果文件 将输出直接写入到指定文件
--例程 转储存储过程和函数
--服务器公钥路径 包含RSA公钥的文件路径
--设置字符集 添加SET NAMES default_character_set到输出
--设置GTID已清除 是否添加SET @@GLOBAL.GTID_PURGED到输出
--单个事务 在单个事务中转储表
--跳过定义者 省略DEFINER和SQL SECURITY子句从视图和存储程序CREATE语句
--跳过转储行 不转储表行
--跳过生成的不可见主键 不转储关于生成的不可见主键的信息
--套接字 Unix套接字文件或Windows命名管道
--ssl-ca 包含受信任的SSL证书颁发机构的文件
--ssl-capath 包含受信任的SSL证书颁发机构证书文件的目录
--ssl-cert 包含X.509证书的文件
--ssl-cipher 连接加密的可接受密码
--ssl-crl 包含证书吊销列表的文件
--ssl-crlpath 包含证书吊销列表文件的目录
--ssl-FIPS 模式 是否在客户端启用 FIPS 模式
--ssl-key 包含 X.509 密钥的文件
--ssl-mode 到服务器的连接的所需安全状态
--ssl-session-data 包含 SSL 会话数据的文件
--ssl-session-data-continue-on-failed-reuse 如果会话重用失败,是否建立连接
--tls-ciphersuites 加密连接的可接受 TLSv1.3 密码套件
--tls-sni-servername 客户端提供的服务器名称
--tls-version 加密连接的可接受 TLS 协议
--triggers 转储每个表的触发器
--tz-utc 将 SET TIME_ZONE='+00:00' 添加到转储文件
--user 连接到服务器时使用的 MySQL 用户名
--users 转储用户账户
--version 显示版本信息并退出
--watch-progress 显示进度指示器
--zstd-compression-level 使用 zstd 压缩的连接的压缩级别

mysqlpump 选项描述

  • --help, -?

    Command-Line Format --help

    显示帮助信息并退出。

  • --add-drop-database

    Command-Line Format --add-drop-database

    在每个 CREATE DATABASE 语句之前写入 DROP DATABASE 语句。

    Note

    在 MySQL 8.3 中,mysql 架构被认为是一个系统架构,不能被最终用户删除。如果使用 --add-drop-database--all-databases 或与 --databases 一起使用,其中包括 mysql 架构的列表,转储文件将包含一个 DROP DATABASE `mysql` 语句,该语句在重新加载时将导致错误。

    相反,使用 --add-drop-database,使用 --databases 与不包括 mysql 的架构列表。

  • --add-drop-table

    Command-Line Format --add-drop-table

    在每个 CREATE TABLE 语句之前写入 DROP TABLE 语句。

  • --add-drop-user

    Command-Line Format --add-drop-user

    在每个 CREATE USER 语句之前写入 DROP USER 语句。

  • --add-locks

    Command-Line Format --add-locks

    将每个表转储括在 LOCK TABLESUNLOCK TABLES 语句中。这将在重新加载转储文件时加速插入。见 第 10.2.5.1 节,“优化 INSERT 语句”

    这个选项不适用于并行处理,因为 INSERT 语句来自不同表可以交叉,并且 UNLOCK TABLES 在一个表的插入结束后可能会释放其他表的锁。

    --add-locks--single-transaction 是互斥的。

  • --all-databases, -A

    Command-Line Format --all-databases

    转储所有数据库(除了某些特殊情况,见 mysqlpump 限制)。这是默认行为,如果没有其他选项被明确指定。

    --all-databases--databases 是互斥的。

    Note

    --add-drop-database 描述关于该选项与 --all-databases 的不兼容性。

    在 MySQL 8.3 之前,--routines--events 选项对于 mysqldumpmysqlpump 不是必需的,以便在使用 --all-databases 选项时包括存储过程和事件:转储包括 mysql 系统数据库,因此也包括 mysql.procmysql.event 表,包含存储过程和事件定义。从 MySQL 8.3 开始,mysql.eventmysql.proc 表不再使用。相应对象的定义存储在数据字典表中,但这些表不被转储。要在使用 --all-databases 选项时包括存储过程和事件,请明确使用 --routines--events 选项。

  • --bind-address=ip_address

    Command-Line Format --bind-address=ip_address

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

  • --character-sets-dir=path

    Command-Line Format --character-sets-dir=dir_name
    Type 目录名称

    字符集安装的目录。见 第 12.15 节,“字符集配置”

  • --column-statistics

    Command-Line Format --column-statistics
    Type 布尔值
    Default Value OFF

    ANALYZE TABLE 语句添加到输出中,以生成柱状图统计信息,当转储文件被重新加载时。这选项默认情况下是禁用的,因为大表的柱状图生成可能需要很长时间。

  • --完整插入

    Command-Line Format --完整插入

    写入完整的 INSERT 语句,包括列名。

  • --压缩, -C

    Command-Line Format --压缩[={OFF|ON}]
    Deprecated
    Type 布尔值
    Default Value OFF

    在客户端和服务器之间发送所有信息时进行压缩,如果可能。见 第 6.2.8 节,“连接压缩控制”

    该选项已弃用。预计在未来版本的 MySQL 中删除该选项。见 配置遗留连接压缩

  • --压缩输出=算法

    Command-Line Format --压缩输出=算法
    Type 枚举
    Valid Values

    LZ4

    ZLIB

    默认情况下,mysqlpump 不压缩输出。该选项指定输出压缩使用指定的算法。允许的算法是 LZ4ZLIB

    要解压缩压缩的输出,您需要一个适当的实用程序。如果系统命令 lz4openssl zlib 不可用,MySQL 发行版包括 lz4_decompresszlib_decompress 实用程序,可以用来解压缩 mysqlpump 输出,该输出使用 --压缩输出=LZ4--压缩输出=ZLIB 选项压缩的输出。更多信息,请见 第 6.8.1 节,“lz4_decompress — 解压缩 mysqlpump LZ4 压缩输出”,和 第 6.8.3 节,“zlib_decompress — 解压缩 mysqlpump ZLIB 压缩输出”

  • --压缩算法=

    Command-Line Format --压缩算法=值
    Type 设置
    Default Value 未压缩
    Valid Values

    zlib

    zstd

    未压缩

    服务器连接的允许压缩算法。可用的算法与 protocol_compression_algorithms 系统变量相同。默认值是 未压缩

    更多信息,请见 第 6.2.8 节,“连接压缩控制”

  • --数据库, -B

    Command-Line Format --数据库

    通常,mysqlpump 将命令行上的第一个名称参数视为数据库名称,并将随后的名称参数视为表名称。使用该选项,mysqlpump 将所有名称参数视为数据库名称。CREATE DATABASE 语句将包含在输出中,每个新数据库之前。

    --所有数据库--数据库 是互斥的。

    Note

    请参阅 --添加-删除-数据库 描述,以了解该选项与 --数据库 的不兼容性。

  • --调试[=调试选项], -# [调试选项]

    Command-Line Format --调试[=调试选项]
    Type 字符串
    Default Value d:t:O,/tmp/mysqlpump.trace

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

    该选项仅在 MySQL 使用 WITH_DEBUG 构建时可用。 Oracle 提供的 MySQL 发行二进制文件 使用该选项。

  • --调试检查

    Command-Line Format --调试检查
    Type 布尔值
    Default Value FALSE

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

    该选项仅在 MySQL 使用 WITH_DEBUG 构建时可用。 Oracle 提供的 MySQL 发行二进制文件 使用该选项。

  • --调试信息, -T

    Command-Line Format --调试信息
    Type 布尔值
    Default Value FALSE

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

    该选项仅在 MySQL 使用 WITH_DEBUG 构建时可用。 Oracle 提供的 MySQL 发行二进制文件 使用该选项。

  • --默认身份验证=插件

    Command-Line Format --默认身份验证=插件
    Type 字符串

    关于客户端身份验证插件的提示。请参阅 第 8.2.17 节,“可插拔身份验证”

  • --默认字符集=字符集名称

    Command-Line Format --默认字符集=字符集名称
    Type 字符串
    Default Value utf8

    使用 字符集名称 作为默认字符集。请参阅 第 12.15 节,“字符集配置”。如果没有指定字符集,mysqlpump 使用 utf8mb4

  • --默认并行度=N

    Command-Line Format --默认并行度=N
    Type 整数
    Default Value 2

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

    --并行模式 选项也会影响并行度,可以用来覆盖默认线程数。有关更多信息,请参阅 mysqlpump 并行处理

    使用 --default-parallelism=0 和没有 --parallel-schemas 选项时,mysqlpump 作为单线程进程运行,不创建队列。

    启用并行处理时,来自不同数据库的输出可能会交叉。

  • --defaults-extra-file=文件名

    Command-Line Format --defaults-extra-file=文件名
    Type 文件名

    在全局选项文件之后(在 Unix 上)但在用户选项文件之前读取该选项文件。如果文件不存在或不可访问,将发生错误。如果 文件名 不是绝对路径名,则相对于当前目录进行解释。

    有关此选项和其他选项文件选项的更多信息,请参阅 第 6.2.2.3 节,“命令行选项影响选项文件处理”

  • --defaults-file=文件名

    Command-Line Format --defaults-file=文件名
    Type 文件名

    仅使用给定的选项文件。如果文件不存在或不可访问,将发生错误。如果 文件名 不是绝对路径名,则相对于当前目录进行解释。

    例外:即使使用 --defaults-file,客户端程序也会读取 .mylogin.cnf

    有关此选项和其他选项文件选项的更多信息,请参阅 第 6.2.2.3 节,“命令行选项影响选项文件处理”

  • --defaults-group-suffix=字符串

    Command-Line Format --defaults-group-suffix=字符串
    Type 字符串

    不仅读取通常的选项组,还读取具有通常名称和 字符串 后缀的组。例如,mysqlpump 通常读取 [client][mysqlpump] 组。如果使用 --defaults-group-suffix=_othermysqlpump 也将读取 [client_other][mysqlpump_other] 组。

    有关此选项和其他选项文件选项的更多信息,请参阅 第 6.2.2.3 节,“命令行选项影响选项文件处理”

  • --defer-table-indexes

    Command-Line Format --defer-table-indexes
    Type 布尔值
    Default Value TRUE

    在转储输出中,将每个表的索引创建延迟到行加载完成后。这适用于所有存储引擎,但对于 InnoDB 只适用于次要索引。

    此选项默认启用;使用 --skip-defer-table-indexes 禁用它。

  • --events

    Command-Line Format --events
    Type 布尔值
    Default Value TRUE

    在转储输出中包括 Event Scheduler 事件 для转储的数据库。事件转储需要 EVENT 权限 для这些数据库。

    使用 --events 生成的输出包含 CREATE EVENT 语句以创建事件。

    此选项默认启用;使用 --skip-events 禁用它。

  • --exclude-databases=db_list

    Command-Line Format --exclude-databases=db_list
    Type 字符串

    不要转储 db_list 中的数据库,后者是一个或多个以逗号分隔的数据库名称。多个实例的此选项是累加的。有关更多信息,请参阅 mysqlpump 对象选择

  • --exclude-events=event_list

    Command-Line Format --exclude-events=event_list
    Type 字符串

    不要转储 event_list 中的事件,后者是一个或多个以逗号分隔的事件名称。多个实例的此选项是累加的。有关更多信息,请参阅 mysqlpump 对象选择

  • --exclude-routines=routine_list

    Command-Line Format --exclude-routines=routine_list
    Type 字符串

    不要转储 routine_list 中的存储过程或函数,后者是一个或多个以逗号分隔的存储过程或函数名称。多个实例的此选项是累加的。有关更多信息,请参阅 mysqlpump 对象选择

  • --exclude-tables=table_list

    Command-Line Format --exclude-tables=table_list
    Type 字符串

    不要转储 table_list 中的表,后者是一个或多个以逗号分隔的表名称。多个实例的此选项是累加的。有关更多信息,请参阅 mysqlpump 对象选择

  • --exclude-triggers=trigger_list

    Command-Line Format --exclude-triggers=trigger_list
    Type 字符串

    不要转储 trigger_list 中的触发器,后者是一个或多个以逗号分隔的触发器名称。多个实例的此选项是累加的。有关更多信息,请参阅 mysqlpump 对象选择

  • --exclude-users=user_list

    Command-Line Format --exclude-users=user_list
    Type 字符串

    不要转储 user_list 中的用户账户,后者是一个或多个以逗号分隔的账户名称。多个实例的此选项是累加的。有关更多信息,请参阅 mysqlpump 对象选择

  • --extended-insert=N

    Command-Line Format --extended-insert=N

    使用多行语法写入 INSERT 语句,包括多个 VALUES 列表。这将生成较小的转储文件,并在重新加载文件时加速插入。

    选项值指示每个 INSERT 语句中包括的行数。默认值为 250。值为 1 将生成每行一个 INSERT 语句。

  • --get-server-public-key

    Command-Line Format --get-server-public-key
    Type 布尔值

    从服务器请求用于RSA密钥对基于密码交换的公钥。此选项适用于使用caching_sha2_password身份验证插件的客户端。对于该插件,服务器不会发送公钥,除非被请求。此选项将被忽略,如果RSA基于密码交换不被使用,如客户端使用安全连接连接到服务器时。

    如果--server-public-key-path=file_name被指定并指定了有效的公钥文件,它将优先于--get-server-public-key

    有关caching_sha2_password插件的信息,请参阅第 8.4.1.2 节,“Caching SHA-2 Pluggable Authentication”

  • --hex-blob

    Command-Line Format --hex-blob

    使用十六进制表示形式转储二进制列(例如,'abc' 变为 0x616263)。受影响的数据类型是BINARYVARBINARYBLOB类型、BIT、所有空间数据类型和使用binary 字符集的其他非二进制数据类型。

  • --host=host_name, -h host_name

    Command-Line Format --host

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

  • --include-databases=db_list

    Command-Line Format --include-databases=db_list
    Type String

    转储db_list中的数据库,db_list是以逗号分隔的一或多个数据库名称的列表。转储包括所有对象在命名的数据库中。多个实例此选项是累加的。有关更多信息,请参阅mysqlpump 对象选择

  • --include-events=event_list

    Command-Line Format --include-events=event_list
    Type String

    转储event_list中的事件,event_list是以逗号分隔的一或多个事件名称的列表。多个实例此选项是累加的。有关更多信息,请参阅mysqlpump 对象选择

  • --include-routines=routine_list

    Command-Line Format --include-routines=routine_list
    Type String

    转储routine_list中的例程(存储过程或函数),routine_list是以逗号分隔的一或多个例程名称的列表。多个实例此选项是累加的。有关更多信息,请参阅mysqlpump 对象选择

  • --include-tables=table_list

    Command-Line Format --include-tables=table_list
    Type String

    转储table_list中的表,table_list是以逗号分隔的一或多个表名称的列表。多个实例此选项是累加的。有关更多信息,请参阅mysqlpump 对象选择

  • --include-triggers=trigger_list

    Command-Line Format --include-triggers=触发器列表
    Type 字符串

    转储触发器在 trigger_list 中,该列表包含一个或多个以逗号分隔的触发器名称。多个实例此选项是累加的。有关更多信息,请参阅 mysqlpump 对象选择

  • --include-users=user_list

    Command-Line Format --include-users=user_list
    Type 字符串

    转储用户账户在 user_list 中,该列表包含一个或多个以逗号分隔的用户名。多个实例此选项是累加的。有关更多信息,请参阅 mysqlpump 对象选择

  • --insert-ignore

    Command-Line Format --insert-ignore

    写入 INSERT IGNORE 语句,而不是 INSERT 语句。

  • --log-error-file=文件名

    Command-Line Format --log-error-file=file_name
    Type 文件名

    将警告和错误追加到命名文件中。如果不指定此选项,mysqlpump 将警告和错误写入标准错误输出。

  • --login-path=名称

    Command-Line Format --login-path=name
    Type 字符串

    从命名登录路径在 .mylogin.cnf 登录路径文件中读取选项。一个 登录路径 是一个选项组,指定了连接到哪个 MySQL 服务器并以哪个账户身份验证。要创建或修改登录路径文件,请使用 mysql_config_editor 实用程序。请参阅 第 6.6.7 节,“mysql_config_editor — MySQL 配置实用程序”

    有关此选项和其他选项文件选项的更多信息,请参阅 第 6.2.2.3 节,“命令行选项影响选项文件处理”

  • --no-login-paths

    Command-Line Format --no-login-paths

    跳过从登录路径文件中读取选项。

    请参阅 --login-path 有关相关信息。

    有关此选项和其他选项文件选项的更多信息,请参阅 第 6.2.2.3 节,“命令行选项影响选项文件处理”

  • --max-allowed-packet=N

    Command-Line Format --max-allowed-packet=N
    Type 数字
    Default Value 25165824

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

  • --net-buffer-length=N

    Command-Line Format --net-buffer-length=N
    Type 数字
    Default Value 1047552

    客户端/服务器通信的初始缓冲区大小。当创建多行INSERT语句(如--extended-insert选项)时,mysqlpump创建的行长达N字节。如果您使用此选项增加值,请确保 MySQL 服务器net_buffer_length系统变量的值至少与此相同。

  • --no-create-db

    Command-Line Format --no-create-db

    抑制任何可能包含在输出中的CREATE DATABASE语句。

  • --no-create-info, -t

    Command-Line Format --no-create-info

    不写入CREATE TABLE语句以创建每个转储表。

  • --no-defaults

    Command-Line Format --no-defaults

    不读取任何选项文件。如果程序启动失败是由于从选项文件中读取未知选项,--no-defaults可以用于防止它们被读取。

    唯一的例外是,如果存在,.mylogin.cnf文件将被读取。这允许在命令行上以更安全的方式指定密码,即使使用--no-defaults。要创建.mylogin.cnf,请使用mysql_config_editor实用程序。请参阅第 6.6.7 节,“mysql_config_editor — MySQL 配置实用程序”

    有关此选项和其他选项文件选项的更多信息,请参阅第 6.2.2.3 节,“命令行选项影响选项文件处理”

  • --parallel-schemas=[N:]db_list

    Command-Line Format --parallel-schemas=[N:]schema_list
    Type String

    为处理数据库队列db_list,其中db_list是以逗号分隔的一或多个数据库名称的列表。如果给定N,队列将使用N个线程。如果未给定N,则--default-parallelism选项将确定队列线程的数量。

    多个实例创建多个队列。mysqlpump还将创建一个默认队列,以便处理未在任何--parallel-schemas选项中命名的数据库,以及转储用户定义时命令选项选择它们。有关更多信息,请参阅mysqlpump 并行处理

  • --password[=password], -p[password]

    Command-Line Format --password[=password]
    Type String

    MySQL账户用于连接服务器的密码。密码值是可选的。如果不提供,mysqlpump 将提示输入。如果提供,必须在 --password=-p 和其后的密码之间没有空格。如果不指定密码选项,默认情况下不发送密码。

    在命令行上指定密码应该被认为是不安全的。要避免在命令行上输入密码,请使用选项文件。参见 第 8.1.2.1 节,“最终用户密码安全指南”

    要明确指定没有密码并且 mysqlpump 不应该提示输入,请使用 --skip-password 选项。

  • --password1[=pass_val]

    MySQL 账户用于连接服务器的多因素身份验证因子 1 的密码。密码值是可选的。如果不提供,mysqlpump 将提示输入。如果提供,必须在 --password1= 和其后的密码之间没有空格。如果不指定密码选项,默认情况下不发送密码。

    在命令行上指定密码应该被认为是不安全的。要避免在命令行上输入密码,请使用选项文件。参见 第 8.1.2.1 节,“最终用户密码安全指南”

    要明确指定没有密码并且 mysqlpump 不应该提示输入,请使用 --skip-password1 选项。

    --password1--password 是同义的,如同 --skip-password1--skip-password

  • --password2[=pass_val]

    MySQL 账户用于连接服务器的多因素身份验证因子 2 的密码。该选项的语义与 --password1 的语义相同;请参见该选项的描述以获取详细信息。

  • --password3[=pass_val]

    MySQL 账户用于连接服务器的多因素身份验证因子 3 的密码。该选项的语义与 --password1 的语义相同;请参见该选项的描述以获取详细信息。

  • --plugin-dir=dir_name

    Command-Line Format --plugin-dir=dir_name
    Type 目录名称

    在该目录中查找插件。如果使用 --default-auth 选项指定身份验证插件,但 mysqlpump 未找到它。参见 第 8.2.17 节,“可插拔身份验证”

  • --port=port_num, -P port_num

    Command-Line Format --port=port_num
    Type 数字
    Default Value 3306

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

  • --打印默认值

    Command-Line Format --打印默认值

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

    有关此选项和其他选项文件选项的更多信息,请参见 第 6.2.2.3 节,“命令行选项影响选项文件处理”

  • --协议={TCP|SOCKET|PIPE|MEMORY}

    Command-Line Format --协议=type
    Type 字符串
    Default Value [见文本]
    Valid Values

    TCP

    SOCKET

    PIPE

    MEMORY

    用于连接到服务器的传输协议。当其他连接参数通常导致使用其他协议时,这很有用。有关允许值的详细信息,请参见 第 6.2.7 节,“连接传输协议”

  • --replace

    Command-Line Format --replace

    编写 REPLACE 语句,而不是 INSERT 语句。

  • --结果文件=文件名

    Command-Line Format --结果文件=file_name
    Type 文件名

    将输出定向到命名的文件中。结果文件将被创建,并且其以前的内容将被覆盖,即使在生成转储时发生错误。

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

  • --例程

    Command-Line Format --例程
    Type 布尔值
    Default Value TRUE

    在转储的数据库中包括存储的例程(过程和函数)。此选项需要全局 SELECT 权限。

    使用 --例程 生成的输出包含 CREATE PROCEDURECREATE FUNCTION 语句,以创建例程。

    此选项默认启用;使用 --skip-routines 禁用它。

  • --服务器公钥路径=文件名

    Command-Line Format --服务器公钥路径=file_name
    Type 文件名

    服务器公钥文件的路径名,以 PEM 格式包含客户端副本的公钥,用于 RSA 密钥对基于密码交换。该选项仅适用于使用 sha256_passwordcaching_sha2_password 身份验证插件的客户端。如果客户端使用安全连接连接到服务器,该选项将被忽略。

    如果 --服务器公钥路径=文件名 指定了有效的公钥文件,它将优先于 --获取服务器公钥

    对于 sha256_password,该选项仅在 MySQL 使用 OpenSSL 构建时适用。

    关于 sha256_passwordcaching_sha2_password 插件的信息,请参阅 第 8.4.1.3 节,“SHA-256 可插拔身份验证”第 8.4.1.2 节,“Caching SHA-2 可插拔身份验证”

  • --set-charset

    Command-Line Format --set-charset

    SET NAMES default_character_set 写入输出。

    此选项默认启用。要禁用它并抑制 SET NAMES 语句,请使用 --skip-set-charset

  • --set-gtid-purged=value

    Command-Line Format --set-gtid-purged=value
    Type 枚举
    Default Value AUTO
    Valid Values

    OFF

    ON

    AUTO

    此选项启用对全局事务 ID(GTID)信息的控制,该信息将被写入转储文件,指示是否添加 SET @@GLOBAL.gtid_purged 语句到输出。此选项还可能导致写入输出的语句,以禁用二进制日志记录,而不是在转储文件被重新加载时。

    以下表格显示了允许的选项值。默认值为 AUTO

    Value Meaning
    OFF 不添加 SET 语句到输出。
    ON 添加 SET 语句到输出。如果服务器上未启用 GTID,将发生错误。
    AUTO 如果服务器上启用了 GTID,添加 SET 语句到输出。

    当转储文件被重新加载时,--set-gtid-purged 选项对二进制日志记录的影响如下:

    • --set-gtid-purged=OFF: 不添加 SET @@SESSION.SQL_LOG_BIN=0; 到输出。

    • --set-gtid-purged=ON: 添加 SET @@SESSION.SQL_LOG_BIN=0; 到输出。

    • --set-gtid-purged=AUTO: 如果服务器上启用了 GTID(即 AUTO 评估为 ON),添加 SET @@SESSION.SQL_LOG_BIN=0; 到输出。

  • --single-transaction

    Command-Line Format --single-transaction

    此选项将事务隔离模式设置为 REPEATABLE READ,并在转储数据之前向服务器发送 START TRANSACTION SQL 语句。它仅适用于事务表,如 InnoDB,因为它会在 START TRANSACTION 发出时转储数据库的一致状态,而不阻止任何应用程序。

    使用此选项时,请注意只有 InnoDB 表格会被转储到一致状态。例如,使用此选项时转储的 MyISAMMEMORY 表格可能仍然会更改状态。

    --single-transaction 转储正在进行时,为了确保转储文件的正确性(正确的表内容和二进制日志坐标),不应该使用以下语句的其他连接:ALTER TABLECREATE TABLEDROP TABLERENAME TABLETRUNCATE TABLE。一致的读取不是从这些语句中隔离的,因此在要转储的表上使用这些语句可能会导致 SELECTmysqlpump 执行以检索表内容获取不正确的内容或失败。

    --add-locks--single-transaction 是互斥的。

  • --skip-definer

    Command-Line Format --skip-definer
    Type 布尔值
    Default Value FALSE

    省略 DEFINERSQL SECURITY 子句从视图和存储程序的 CREATE 语句中。转储文件,在重新加载时,创建使用默认 DEFINERSQL SECURITY 值的对象。见 第 27.6 节,“存储对象访问控制”

  • --skip-dump-rows, -d

    Command-Line Format --skip-dump-rows
    Type 布尔值
    Default Value FALSE

    不转储表行。

  • --skip-generated-invisible-primary-key

    Command-Line Format --skip-generated-invisible-primary-key
    Type 布尔值
    Default Value FALSE

    该选项将生成的不可见主键(GIPK)排除在转储之外。见 第 15.1.20.11 节,“生成的不可见主键”,了解更多关于 GIPK 和 GIPK 模式的信息。

  • --socket=path, -S path

    Command-Line Format --socket={file_name|pipe_name}
    Type 字符串

    对于连接到 localhost 的连接,使用的 Unix 套接字文件,或者在 Windows 上,使用的命名管道名称。

    在 Windows 上,该选项仅适用于服务器启动时启用了 named_pipe 系统变量以支持命名管道连接。此外,执行连接的用户必须是 Windows 组 named_pipe_full_access_group 的成员。

  • --ssl*

    --ssl 开头的选项指定是否使用加密连接到服务器,并指示 SSL 密钥和证书的位置。见 命令选项加密连接

  • --ssl-fips-mode={OFF|ON|STRICT}

    Command-Line Format --ssl-fips-mode={OFF|ON|STRICT}
    Deprecated
    Type 枚举
    Default Value OFF
    Valid Values

    OFF

    ON

    STRICT

    在客户端启用 FIPS 模式的控制。 --ssl-fips-mode 选项不同于其他 --ssl-xxx 选项,因为它不是用来建立加密连接,而是影响允许哪些加密操作。请参阅 第 8.8 节,“FIPS 支持”

    这些 --ssl-fips-mode 值是允许的:

    • OFF:禁用 FIPS 模式。

    • ON:启用 FIPS 模式。

    • STRICT:启用“严格”FIPS 模式。

    Note

    如果 OpenSSL FIPS 对象模块不可用,则唯一允许的 --ssl-fips-mode 值是 OFF。在这种情况下,将 --ssl-fips-mode 设置为 ONSTRICT 将导致客户端在启动时产生警告,并在非 FIPS 模式下操作。

    该选项已弃用。预计它将在未来版本的 MySQL 中被删除。

  • --tls-ciphersuites=ciphersuite_list

    Command-Line Format --tls-ciphersuites=ciphersuite_list
    Type 字符串

    使用 TLSv1.3 加密连接的允许密码套件。该值是一个或多个以冒号分隔的密码套件名称。可以命名的密码套件取决于编译 MySQL 的 SSL 库。详细信息,请参阅 第 8.3.2 节,“加密连接 TLS 协议和密码”

  • --tls-sni-servername=server_name

    Command-Line Format --tls-sni-servername=server_name
    Type 字符串

    当指定时,该名称将传递给 libmysqlclient C API 库使用 MYSQL_OPT_TLS_SNI_SERVERNAME 选项的 mysql_options()。服务器名称不区分大小写。要显示客户端当前会话中指定的服务器名称(如果有),请检查 Tls_sni_server_name 状态变量。

    服务器名称指示(SNI)是 TLS 协议的扩展(OpenSSL 必须使用 TLS 扩展来编译以使该选项生效)。MySQL 实现的 SNI 仅表示客户端。

  • --tls-version=protocol_list

    Command-Line Format --tls-version=protocol_list
    Type 字符串
    Default Value

    TLSv1,TLSv1.1,TLSv1.2,TLSv1.3 (OpenSSL 1.1.1 或更高版本)

    TLSv1,TLSv1.1,TLSv1.2 (否则)

    加密连接的允许 TLS 协议。该值是一个或多个以逗号分隔的协议名称。可以命名的协议取决于编译 MySQL 的 SSL 库。详细信息,请参阅 第 8.3.2 节,“加密连接 TLS 协议和密码”

  • --triggers

    Command-Line Format --triggers
    Type 布尔值
    Default Value TRUE

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

    该选项默认启用;使用 --skip-triggers 禁用它。

  • --tz-utc

    Command-Line Format --tz-utc

    启用该选项,以便在不同时区的服务器之间转储和重新加载 TIMESTAMP 列。mysqlpump 将其连接时区设置为 UTC,并将 SET TIME_ZONE='+00:00' 添加到转储文件中。否则,TIMESTAMP 列将在源服务器和目标服务器的本地时区中转储和重新加载,这可能会导致值更改,如果服务器位于不同的时区。--tz-utc 选项还保护了夏令时的更改。

    该选项默认启用;使用 --skip-tz-utc 禁用它。

  • --user=user_name, -u user_name

    Command-Line Format --user=user_name
    Type 字符串

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

    如果您使用 Rewriter 插件,应该授予该用户 SKIP_QUERY_REWRITE 权限。

  • --users

    Command-Line Format --users
    Type 布尔值
    Default Value FALSE

    将用户帐户转储为逻辑定义,以 CREATE USERGRANT 语句的形式。

    用户定义存储在 mysql 系统数据库中的授权表中。默认情况下,mysqlpump 不包括 mysql 数据库转储中的授权表。要转储授权表的内容作为逻辑定义,请使用 --users 选项并抑制所有数据库转储:

    mysqlpump --exclude-databases=% --users
  • --version, -V

    Command-Line Format --version

    显示版本信息并退出。

  • --watch-progress

    Command-Line Format --watch-progress
    Type 布尔值
    Default Value TRUE

    周期性地显示进度指示器,提供关于已完成和总表、行和其他对象的信息。

    该选项默认启用;使用 --skip-watch-progress 禁用它。

  • --zstd-compression-level=level

    Command-Line Format --zstd-compression-level=#
    Type 整数

    用于服务器连接的 zstd 压缩级别。允许的级别从 1 到 22,较高的值表示增加的压缩级别。默认的 zstd 压缩级别为 3。压缩级别设置对不使用 zstd 压缩的连接没有影响。

    有关更多信息,请参阅 第 6.2.8 节,“连接压缩控制”

mysqlpump 对象选择

mysqlpump 具有多个包含和排除选项,用于过滤多种对象类型,并提供了对要转储的对象的灵活控制:

任何包含或排除选项都可以多次给出。效果是累加的。这些选项的顺序无关紧要。

每个包含或排除选项的值是一个逗号分隔的对象名称列表。例如:

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

通配符可以在对象名称中使用:

  • % 匹配零个或多个字符。

  • _ 匹配单个字符。

例如,--include-tables=t%,__tmp 匹配所有以 t 开头的表名和所有以 tmp 结尾的五个字符的表名。

对于用户,未指定主机部分的名称将被解释为 %。例如,u1u1@% 是等效的。这与 MySQL 中的账户名称规范相同(见 第 8.2.4 节,“Specifying Account Names”)。

包含和排除选项的交互方式如下:

  • 默认情况下,没有包含或排除选项,mysqlpump 将转储所有数据库(某些例外情况见 mysqlpump Restrictions)。

  • 如果只有包含选项,而没有排除选项,那么只有命名的对象将被转储。

  • 如果只有排除选项,而没有包含选项,那么所有对象都将被转储,除了命名的排除对象。

  • 如果同时指定了包含和排除选项,那么命名的排除对象和未命名的包含对象都将被排除。所有其他对象都将被转储。

如果转储多个数据库,可以通过将对象名称限定为特定数据库来命名表、触发器和例程。以下命令转储数据库 db1db2,但排除表 db1.t1db2.t2

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

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

mysqlpump 并行处理

mysqlpump 可以使用并行处理来实现并发处理。你可以在数据库之间选择并发(以同时转储多个数据库)和在数据库内部选择并发(以同时转储给定数据库中的多个对象)。

默认情况下,mysqlpump 设置一个队列,使用两个线程。你可以创建附加队列并控制每个队列的线程数,包括默认队列:

  • --default-parallelism=N 指定每个队列使用的默认线程数。在缺少该选项时,N 是 2。

    默认队列总是使用默认线程数。附加队列使用默认线程数,除非你指定其他线程数。

  • --parallel-schemas=[N:]db_list 设置一个处理队列,以转储 db_list 中命名的数据库,并可选地指定队列使用的线程数。db_list 是一个以逗号分隔的数据库名称列表。如果选项参数以 N: 开头,则队列使用 N 线程。否则,--default-parallelism 选项确定队列线程数。

    多个 --parallel-schemas 选项实例创建多个队列。

    数据库列表中的名称允许包含与过滤选项相同的 %_ 通配符(参见 mysqlpump 对象选择)。

mysqlpump 使用默认队列处理未明确指定的数据库,以及命令选项选择的用户定义。

一般来说,使用多个队列时,mysqlpump 使用队列之间的并行处理,以同时转储多个数据库。对于使用多个线程的队列,mysqlpump 使用数据库内部的并行处理,以同时转储给定数据库中的多个对象。可能会出现例外情况;例如,mysqlpump 可能会阻止队列,以从服务器获取数据库对象列表。

启用并行处理时,来自不同数据库的输出可能会交叉。例如,来自多个表的 INSERT 语句可能会交叉;语句的顺序不确定。这不会影响重新加载,因为输出语句使用数据库名称或前缀 USE 语句,如有必要。

并行处理的粒度是一个单独的数据库对象。例如,无法使用多个线程并行转储单个表。

示例:

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

mysqlpump 设置一个队列来处理 db1db2,另一个队列来处理 db3,默认队列来处理所有其他数据库。所有队列使用两个线程。

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

这与前一个示例相同,除了所有队列使用四个线程。

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

队列用于 db1db2 使用五个线程,队列用于 db3 使用三个线程,默认队列使用默认的两个线程。

作为特殊情况,使用 --default-parallelism=0 选项且不带 --parallel-schemas 选项时,mysqlpump 作为单线程进程运行,不创建队列。

mysqlpump 限制

mysqlpump 默认情况下不转储 performance_schemandbinfosys 模式。要转储任何这些模式,请在命令行上明确命名它们。您也可以使用 --databases--include-databases 选项命名它们。

mysqlpump 不转储 INFORMATION_SCHEMA 模式。

mysqlpump 不转储 InnoDB CREATE TABLESPACE 语句。

mysqlpump 使用逻辑形式的 CREATE USERGRANT 语句转储用户账户(例如,当您使用 --include-users--users 选项时)。因此,mysql 系统数据库的转储默认情况下不包括包含用户定义的授权表:userdbtables_privcolumns_privprocs_privproxies_priv。要转储任何授权表,请在命令行上明确命名 mysql 数据库,后跟表名:

mysqlpump mysql user db ...