mysqlpump客户端实用程序执行 逻辑备份,生成一组可执行的 SQL 语句以重现原始数据库对象定义和表数据。它转储一个或多个 MySQL 数据库以进行备份或传输到另一台 SQL 服务器。
mysqlpump功能包括:
并行处理数据库和数据库中的对象,以加速转储过程
更好地控制转储哪些数据库和数据库对象(表、存储程序、用户帐户)
将用户帐户转储为帐户管理语句 (
CREATE USER
,GRANT
) 而不是插入到mysql
系统数据库 中创建压缩输出的能力
进度指示器(值是估计值)
InnoDB
对于转储文件重新加载,通过在插入行后添加索引 来更快地为表创建二级索引
mysqlpump至少需要
SELECT
转储表、SHOW VIEW
转储视图、TRIGGER
转储触发器以及未使用LOCK TABLES
该
转储用户定义需要系统数据库--single-transaction
的SELECT
权限mysql
某些选项可能需要其他权限,如选项说明中所述。
要重新加载转储文件,您必须具有执行它包含的语句所需的权限,例如对
CREATE
这些语句创建的对象的适当权限。
在 Windows 上使用 PowerShell 进行输出重定向的转储创建了一个具有 UTF-16 编码的文件:
mysqlpump [options] > dump.sql
但是,不允许将 UTF-16 作为连接字符集(请参阅第 10.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 USER
要以and
GRANT
语句
的形式将授权表内容转储为逻辑定义,请使用该--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]
(在 MySQL 5.7.30 之前,
mysqlpump读取
[mysql_dump]
组而不是
[mysqlpump]
。截至 5.7.30,
[mysql_dump]
仍然被接受但已弃用。)有关 MySQL 程序使用的选项文件的信息,请参阅第 4.2.2.2 节,“使用选项文件”.
表 4.17 mysqlpump 选项
选项名称 | 描述 | 介绍 |
---|---|---|
--添加删除数据库 | 在每个 CREATE DATABASE 语句之前添加 DROP DATABASE 语句 | |
--添加删除表 | 在每个 CREATE TABLE 语句之前添加 DROP TABLE 语句 | |
--添加删除用户 | 在每个 CREATE USER 语句之前添加 DROP USER 语句 | |
--添加锁 | 用 LOCK TABLES 和 UNLOCK TABLES 语句围绕每个表转储 | |
--所有数据库 | 转储所有数据库 | |
--绑定地址 | 使用指定的网络接口连接到 MySQL 服务器 | |
--字符集目录 | 安装字符集的目录 | |
--complete-插入 | 使用包含列名的完整 INSERT 语句 | |
- 压缩 | 压缩客户端和服务器之间发送的所有信息 | |
--压缩输出 | 输出压缩算法 | |
--数据库 | 将所有名称参数解释为数据库名称 | |
--调试 | 写调试日志 | |
--调试检查 | 程序退出时打印调试信息 | |
- 调试信息 | 程序退出时打印调试信息、内存和 CPU 统计信息 | |
--default-auth | 要使用的身份验证插件 | |
--默认字符集 | 指定默认字符集 | |
--默认并行 | 并行处理的默认线程数 | |
--defaults-extra-file | 除了通常的选项文件外,还读取命名的选项文件 | |
--defaults-文件 | 只读命名选项文件 | |
--defaults-group-suffix | 选项组后缀值 | |
--defer-table-indexes | 对于重新加载,将索引创建推迟到加载表行之后 | |
--事件 | 从转储数据库中转储事件 | |
--exclude-数据库 | 要从转储中排除的数据库 | |
--排除事件 | 要从转储中排除的事件 | |
--exclude-routines | 从转储中排除的例程 | |
--排除表 | 从转储中排除的表 | |
--exclude-触发器 | 从转储中排除的触发器 | |
--exclude-用户 | 要从转储中排除的用户 | |
--扩展插入 | 使用多行 INSERT 语法 | |
--get-server-public-key | 从服务器请求 RSA 公钥 | 5.7.23 |
- 帮助 | 显示帮助信息并退出 | |
--hex-blob | 使用十六进制表示法转储二进制列 | |
- 主持人 | MySQL 服务器所在的主机 | |
--include-数据库 | 要包含在转储中的数据库 | |
--include-事件 | 要包含在转储中的事件 | |
--include-routines | 包含在转储中的例程 | |
--include-tables | 要包含在转储中的表 | |
--include-触发器 | 要包含在转储中的触发器 | |
--include-用户 | 要包含在转储中的用户 | |
--插入忽略 | 编写 INSERT IGNORE 而不是 INSERT 语句 | |
--日志错误文件 | 将警告和错误附加到命名文件 | |
--登录路径 | 从 .mylogin.cnf 读取登录路径选项 | |
--最大允许数据包 | 发送到服务器或从服务器接收的最大数据包长度 | |
--net-buffer-length | TCP/IP 和套接字通信的缓冲区大小 | |
--no-create-db | 不要编写 CREATE DATABASE 语句 | |
--no-create-info | 不要编写重新创建每个转储表的 CREATE TABLE 语句 | |
--no-defaults | 不读取选项文件 | |
--parallel-schemas | 指定模式处理并行性 | |
- 密码 | 连接到服务器时使用的密码 | |
--插件目录 | 安装插件的目录 | |
- 港口 | 用于连接的 TCP/IP 端口号 | |
--print-defaults | 打印默认选项 | |
- 协议 | 使用的传输协议 | |
- 代替 | 编写 REPLACE 语句而不是 INSERT 语句 | |
--结果文件 | 直接输出到给定文件 | |
--例程 | 从转储的数据库中转储存储的例程(过程和函数) | |
--secure-auth | 不要以旧的(pre-4.1)格式向服务器发送密码 | |
--server-public-key-path | 包含 RSA 公钥的文件的路径名 | 5.7.23 |
--set-字符集 | 将 SET NAMES default_character_set 添加到输出 | |
--set-gtid-清除 | 是否在输出中添加 SET @@GLOBAL.GTID_PURGED | 5.7.18 |
--单笔交易 | 在单个事务中转储表 | |
--skip-定义器 | 从视图和存储程序 CREATE 语句中省略 DEFINER 和 SQL SECURITY 子句 | |
--skip-dump-rows | 不要转储表行 | |
- 插座 | 要使用的 Unix 套接字文件或 Windows 命名管道 | |
--ssl | 启用连接加密 | |
--ssl-ca | 包含可信 SSL 证书颁发机构列表的文件 | |
--ssl-capath | 包含受信任的 SSL 证书颁发机构证书文件的目录 | |
--ssl证书 | 包含 X.509 证书的文件 | |
--ssl密码 | 连接加密的允许密码 | |
--ssl-crl | 包含证书吊销列表的文件 | |
--ssl-crlpath | 包含证书吊销列表文件的目录 | |
--ssl-密钥 | 包含 X.509 密钥的文件 | |
--ssl模式 | 连接到服务器的所需安全状态 | 5.7.11 |
--ssl-verify-server-cert | 根据服务器证书公用名身份验证主机名 | |
--tls-版本 | 加密连接允许的 TLS 协议 | 5.7.10 |
--触发器 | 每个转储表的转储触发器 | |
--tz-utc | 将 SET TIME_ZONE='+00:00' 添加到转储文件 | |
- 用户 | 连接到服务器时使用的 MySQL 用户名 | |
--用户 | 转储用户帐户 | |
- 版本 | 显示版本信息并退出 | |
--watch-progress | 显示进度指示器 |
mysqlpump 选项说明
--help
,-?
显示帮助信息并退出。
DROP DATABASE
在每个陈述之前 写一个CREATE DATABASE
陈述。DROP TABLE
在每个陈述之前 写一个CREATE TABLE
陈述。DROP USER
在每个陈述之前 写一个CREATE USER
陈述。LOCK TABLES
用andUNLOCK TABLES
语句 包围每个表转储。重新加载转储文件时,这会导致更快的插入。请参阅 第 8.2.4.1 节,“优化 INSERT 语句”。此选项不适用于并行性,因为
INSERT
来自不同表的语句可以交错,并且UNLOCK TABLES
在一个表的插入结束后可以释放对保留插入的表的锁定。--add-locks
并且--single-transaction
是互斥的。--all-databases
,-A
转储所有数据库( mysqlpump Restrictions中注明的某些例外情况)。如果没有明确指定其他行为,则这是默认行为。
--all-databases
并且--databases
是互斥的。在具有多个网络接口的计算机上,使用此选项来选择用于连接到 MySQL 服务器的接口。
安装字符集的目录。请参阅 第 10.15 节,“字符集配置”。
编写
INSERT
包含列名的完整语句。--compress
,-C
如果可能,压缩客户端和服务器之间发送的所有信息。请参阅 第 4.2.6 节,“连接压缩控制”。
默认情况下,mysqlpump不压缩输出。此选项指定使用指定算法的输出压缩。允许的算法是
LZ4
和ZLIB
。要解压缩压缩的输出,您必须具有适当的实用程序。如果系统命令 lz4和openssl zlib 不可用,从 MySQL 5.7.10 开始,MySQL 发行版包括lz4_decompress和 zlib_decompress实用程序,可用于解压缩使用 和 选项压缩的mysqlpump输出。有关详细信息,请参阅 第 4.8.1 节,“lz4_decompress — 解压缩 mysqlpump LZ4 压缩输出”,以及
--compress-output=LZ4
--compress-output=ZLIB
第 4.8.5 节,“zlib_decompress — 解压缩 mysqlpump ZLIB 压缩输出”。备选方案包括lz4和
openssl
命令,如果它们安装在您的系统上。例如,lz4可以解压缩LZ4
输出:lz4 -d input_file output_file
ZLIB
输出可以像这样解压缩:openssl zlib -d < input_file > output_file
--databases
,-B
通常,mysqlpump将命令行上的第一个名称参数视为数据库名称,并将任何后续名称视为表名。使用此选项,它将所有名称参数视为数据库名称。
CREATE DATABASE
语句包含在每个新数据库之前的输出中。--all-databases
并且--databases
是互斥的。--debug[=
,debug_options
]-# [
debug_options
]写调试日志。典型的
debug_options
字符串是 . 默认值为 。d:t:o,
file_name
d:t:O,/tmp/mysqlpump.trace
仅当 MySQL 是使用
WITH_DEBUG
. Oracle 提供的 MySQL 发布二进制文件不是 使用此选项构建的。程序退出时打印一些调试信息。
仅当 MySQL 是使用
WITH_DEBUG
. Oracle 提供的 MySQL 发布二进制文件不是 使用此选项构建的。--debug-info
,-T
程序退出时打印调试信息以及内存和 CPU 使用统计信息。
仅当 MySQL 是使用
WITH_DEBUG
. Oracle 提供的 MySQL 发布二进制文件不是 使用此选项构建的。关于使用哪个客户端身份验证插件的提示。请参阅第 6.2.13 节,“可插入身份验证”。
--default-character-set=
charset_name
用作
charset_name
默认字符集。请参阅第 10.15 节,“字符集配置”。如果没有指定字符集, mysqlpump使用utf8
.每个并行处理队列的默认线程数。默认值为 2。
该
--parallel-schemas
选项还会影响并行度,可用于覆盖默认线程数。有关详细信息,请参阅 mysqlpump 并行处理。无论有
--default-parallelism=0
没有--parallel-schemas
选项,mysqlpump 都作为单线程进程运行并且不创建队列。启用并行性后,可以交错来自不同数据库的输出。
笔记在 MySQL 5.7.11 之前,该
--single-transaction
选项的使用与并行性是互斥的。要使用 ,通过设置为 0 并且不使用任何实例来--single-transaction
禁用并行 性:--default-parallelism
--parallel-schemas
mysqlpump --single-transaction --default-parallelism=0
--defaults-extra-file=
file_name
在全局选项文件之后但(在 Unix 上)在用户选项文件之前读取此选项文件。如果该文件不存在或无法访问,则会发生错误。如果
file_name
不是绝对路径名,则将其解释为相对于当前目录。有关此选项和其他选项文件选项的其他信息,请参阅第 4.2.2.3 节,“影响选项文件处理的命令行选项”。
仅使用给定的选项文件。如果该文件不存在或无法访问,则会发生错误。如果
file_name
不是绝对路径名,则将其解释为相对于当前目录。例外:即使有
--defaults-file
,客户端程序也会读取.mylogin.cnf
.有关此选项和其他选项文件选项的其他信息,请参阅第 4.2.2.3 节,“影响选项文件处理的命令行选项”。
不仅要阅读通常的选项组,还要阅读具有通常名称和后缀
str
. 例如, mysqlpump通常读取[client]
和[mysqlpump]
组。如果此选项作为 给出--defaults-group-suffix=_other
, 则 mysqlpump还会读取[client_other]
和[mysqlpump_other]
组。有关此选项和其他选项文件选项的其他信息,请参阅第 4.2.2.3 节,“影响选项文件处理的命令行选项”。
在转储输出中,将每个表的索引创建推迟到其行已加载之后。这适用于所有存储引擎,但
InnoDB
仅适用于二级索引。默认情况下启用此选项;用于
--skip-defer-table-indexes
禁用它。在输出中包括转储数据库的事件计划程序事件。事件转储需要
EVENT
这些数据库的权限。通过使用
--events
containsCREATE EVENT
语句创建事件而生成的输出。但是,这些语句不包括事件创建和修改时间戳等属性,因此在重新加载事件时,创建的时间戳等于重新加载时间。如果您需要使用其原始时间戳属性创建事件,请不要使用
--events
. 相反,mysql.event
使用对数据库具有适当权限的 MySQL 帐户直接转储并重新加载表 的内容mysql
。默认情况下启用此选项;用于
--skip-events
禁用它。不要转储 中的数据库
db_list
,它是一个或多个以逗号分隔的数据库名称的列表。此选项的多个实例是相加的。有关详细信息,请参阅 mysqlpump 对象选择。不要将数据库转储到 中
event_list
,它是一个或多个以逗号分隔的事件名称的列表。此选项的多个实例是相加的。有关详细信息,请参阅 mysqlpump 对象选择。--exclude-routines=
routine_list
不要转储 中的事件
routine_list
,它是一个或多个以逗号分隔的例程(存储过程或函数)名称的列表。此选项的多个实例是相加的。有关详细信息,请参阅 mysqlpump 对象选择。不要转储 中的表
table_list
,它是一个或多个以逗号分隔的表名的列表。此选项的多个实例是相加的。有关详细信息,请参阅 mysqlpump 对象选择。--exclude-triggers=
trigger_list
不要将触发器转储到 中
trigger_list
,它是一个或多个以逗号分隔的触发器名称的列表。此选项的多个实例是相加的。有关详细信息,请参阅mysqlpump 对象选择。不要将用户帐户转储到 中
user_list
,它是一个或多个以逗号分隔的帐户名称的列表。此选项的多个实例是相加的。有关详细信息,请参阅 mysqlpump 对象选择。INSERT
使用包含多个VALUES
列表的多行语法 编写语句。这会导致转储文件更小,并在重新加载文件时加快插入速度。从服务器请求基于 RSA 密钥对的密码交换所需的公钥。此选项适用于使用
caching_sha2_password
身份验证插件进行身份验证的客户端。对于该插件,除非请求,否则服务器不会发送公钥。对于未使用该插件进行身份验证的帐户,将忽略此选项。如果不使用基于 RSA 的密码交换,它也会被忽略,就像客户端使用安全连接连接到服务器时的情况一样。如果 给出并指定一个有效的公钥文件,它优先于 .
--server-public-key-path=
file_name
--get-server-public-key
有关
caching_sha2_password
插件的信息,请参阅 第 6.4.1.4 节,“缓存 SHA-2 可插入身份验证”。该
--get-server-public-key
选项是在 MySQL 5.7.23 中添加的。使用十六进制表示法转储二进制列(例如,
'abc'
变成0x616263
)。受影响的数据类型是BINARY
,VARBINARY
,BLOB
types, , 所有空间数据类型,以及与 字符集BIT
一起使用时的其他非二进制数据类型 。binary
--host=
,host_name
-h
host_name
从给定主机上的 MySQL 服务器转储数据。
将数据库转储到 中
db_list
,这是一个或多个以逗号分隔的数据库名称的列表。转储包括指定数据库中的所有对象。此选项的多个实例是相加的。有关详细信息,请参阅mysqlpump 对象选择。将事件转储到 中
event_list
,这是一个或多个以逗号分隔的事件名称的列表。此选项的多个实例是相加的。有关详细信息,请参阅mysqlpump 对象选择。--include-routines=
routine_list
将例程转储到 中
routine_list
,这是一个或多个以逗号分隔的例程(存储过程或函数)名称的列表。此选项的多个实例是相加的。有关详细信息,请参阅 mysqlpump 对象选择。将表转储到 中
table_list
,这是一个或多个以逗号分隔的表名的列表。此选项的多个实例是相加的。有关详细信息,请参阅mysqlpump 对象选择。--include-triggers=
trigger_list
将触发器转储到 中
trigger_list
,这是一个或多个以逗号分隔的触发器名称的列表。此选项的多个实例是相加的。有关详细信息,请参阅mysqlpump 对象选择。将用户帐户转储到 中
user_list
,这是一个或多个以逗号分隔的用户名的列表。此选项的多个实例是相加的。有关详细信息,请参阅 mysqlpump 对象选择。写
INSERT IGNORE
陈述而不是INSERT
陈述。通过将它们附加到命名文件来记录警告和错误。如果未给出此选项,mysqlpump 会将警告和错误写入标准错误输出。
从登录路径文件中指定的登录路径读取选项
.mylogin.cnf
。“ 登录路径”是一个选项组,其中包含指定要连接到哪个 MySQL 服务器以及要以哪个帐户进行身份验证的选项。要创建或修改登录路径文件,请使用 mysql_config_editor实用程序。请参阅 第 4.6.6 节,“mysql_config_editor — MySQL 配置实用程序”。有关此选项和其他选项文件选项的其他信息,请参阅第 4.2.2.3 节,“影响选项文件处理的命令行选项”。
客户端/服务器通信缓冲区的最大大小。默认为 24MB,最大为 1GB。
客户端/服务器通信缓冲区的初始大小。当创建多行
INSERT
语句时(与--extended-insert
选项一样),mysqlpump创建最多N
字节长的行。如果使用此选项来增加值,请确保 MySQL 服务器net_buffer_length
系统变量的值至少有这么大。抑制
CREATE DATABASE
可能包含在输出中的任何语句。--no-create-info
,-t
不要编写
CREATE TABLE
创建每个转储表的语句。不要读取任何选项文件。如果程序启动因从选项文件中读取未知选项而失败,
--no-defaults
可用于防止它们被读取。例外情况是
.mylogin.cnf
文件在所有情况下都会被读取(如果存在)。这允许以比在命令行上更安全的方式指定密码,即使在--no-defaults
使用 时也是如此。要创建.mylogin.cnf
,请使用 mysql_config_editor实用程序。请参阅 第 4.6.6 节,“mysql_config_editor — MySQL 配置实用程序”。有关此选项和其他选项文件选项的其他信息,请参阅第 4.2.2.3 节,“影响选项文件处理的命令行选项”。
--parallel-schemas=[
N
:]db_list
创建一个队列来处理 中的数据库
db_list
,它是一个或多个以逗号分隔的数据库名称的列表。如果N
给出,队列使用N
线程。如果N
未给出,则该--default-parallelism
选项确定队列线程的数量。此选项的多个实例创建多个队列。 mysqlpump还创建一个默认队列,用于未在任何
--parallel-schemas
选项中命名的数据库,以及如果命令选项选择它们,则用于转储用户定义。有关详细信息,请参阅 mysqlpump 并行处理。--password[=
,password
]-p[
password
]用于连接到服务器的 MySQL 帐户的密码。密码值是可选的。如果没有给出, mysqlpump会提示输入一个。如果给定,则后面 的密码之间 不能有空格。如果未指定密码选项,则默认为不发送密码。
--password=
-p
在命令行上指定密码应该被认为是不安全的。为避免在命令行中提供密码,请使用选项文件。请参阅 第 6.1.2.1 节,“密码安全的最终用户指南”。
要明确指定没有密码并且 mysqlpump不应提示输入密码,请使用该
--skip-password
选项。在其中查找插件的目录。如果该
--default-auth
选项用于指定身份验证插件但 mysqlpump未找到它,请指定此选项。请参阅 第 6.2.13 节,“可插入身份验证”。--port=
,port_num
-P
port_num
对于 TCP/IP 连接,要使用的端口号。
打印程序名称和它从选项文件中获取的所有选项。
有关此选项和其他选项文件选项的其他信息,请参阅第 4.2.2.3 节,“影响选项文件处理的命令行选项”。
--protocol={TCP|SOCKET|PIPE|MEMORY}
用于连接到服务器的传输协议。当其他连接参数通常导致使用您想要的协议以外的协议时,它很有用。有关允许值的详细信息,请参阅 第 4.2.5 节“连接传输协议”。
直接输出到命名文件。即使在生成转储时发生错误,也会创建结果文件并覆盖其先前的内容。
此选项应该在 Windows 上使用,以防止换行符
\n
被转换为\r\n
回车/换行符序列。在输出中包括转储数据库的存储例程(过程和函数)。此选项需要表的
SELECT
权限mysql.proc
。通过使用
--routines
containsCREATE PROCEDURE
和CREATE FUNCTION
语句创建例程生成的输出。但是,这些语句不包括例程创建和修改时间戳等属性,因此在重新加载例程时,创建它们的时间戳等于重新加载时间。如果您需要使用其原始时间戳属性创建例程,请不要使用
--routines
. 相反,mysql.proc
使用对数据库具有适当权限的 MySQL 帐户直接转储并重新加载表的内容mysql
。默认情况下启用此选项;用于
--skip-routines
禁用它。不要以旧的(pre-4.1)格式向服务器发送密码。这会阻止除使用较新密码格式的服务器之外的连接。
此选项已弃用;希望在未来的 MySQL 版本中将其删除。它始终处于启用状态,尝试禁用它 (
--skip-secure-auth
,--secure-auth=0
) 会产生错误。--server-public-key-path=
file_name
PEM 格式文件的路径名,其中包含服务器所需的公钥客户端副本,用于基于 RSA 密钥对的密码交换。此选项适用于使用
sha256_password
或caching_sha2_password
身份验证插件进行身份验证的客户端。对于未使用其中一个插件进行身份验证的帐户,将忽略此选项。如果不使用基于 RSA 的密码交换,它也会被忽略,就像客户端使用安全连接连接到服务器时的情况一样。如果 给出并指定一个有效的公钥文件,它优先于 .
--server-public-key-path=
file_name
--get-server-public-key
对于
sha256_password
,此选项仅适用于使用 OpenSSL 构建 MySQL 的情况。有关插件
sha256_password
和caching_sha2_password
插件的信息,请参阅 第 6.4.1.5 节,“SHA-256 可插入身份验证”和 第 6.4.1.4 节,“缓存 SHA-2 可插入身份验证”。该
--server-public-key-path
选项是在 MySQL 5.7.23 中添加的。写入 输出。
SET NAMES
default_character_set
默认情况下启用此选项。要禁用它并禁止该
SET NAMES
语句,请使用--skip-set-charset
.SET @@GLOBAL.gtid_purged
此选项通过指示是否向输出添加语句来 控制写入转储文件的全局事务 ID (GTID) 信息 。此选项还可能导致在重新加载转储文件时将语句写入禁用二进制日志记录的输出。下表显示了允许的选项值。默认值为
AUTO
。价值 意义 OFF
SET
不向输出添加语句。ON
在输出中添加 SET
语句。如果服务器上未启用 GTID,则会发生错误。AUTO
SET
如果在服务器上启用了 GTID,则在输出中添加一条语句。重新加载转储文件时,该
--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
:SET @@SESSION.SQL_LOG_BIN=0;
如果在您正在备份的服务器上启用了 GTID,则添加到输出中(即,如果AUTO
评估为ON
)。
这个选项是在 MySQL 5.7.18 中添加的。
此选项将事务隔离模式设置为
REPEATABLE READ
并在转储数据之前向服务器发送START TRANSACTION
SQL 语句。它仅对诸如 之类的事务表有用InnoDB
,因为它会在发布时转储数据库的一致状态,START TRANSACTION
而不会阻止任何应用程序。使用此选项时,您应该记住,只有
InnoDB
表会以一致的状态转储。例如,使用此选项时转储 的任何MyISAM
或 表可能仍会更改状态。MEMORY
在
--single-transaction
转储过程中,为确保转储文件有效(正确的表内容和二进制日志坐标),其他任何连接都不应使用以下语句:ALTER TABLE
,CREATE TABLE
,DROP TABLE
,RENAME TABLE
,TRUNCATE TABLE
。一致性读取并不与这些语句隔离,因此在要转储的表上使用它们可能会导致 mysqlpumpSELECT
执行的 检索表内容的操作获取不正确的内容或失败。--add-locks
并且--single-transaction
是互斥的。笔记在 MySQL 5.7.11 之前,该
--single-transaction
选项的使用与并行性是互斥的。要使用 ,通过设置为 0 并且不使用任何实例来--single-transaction
禁用并行 性:--default-parallelism
--parallel-schemas
mysqlpump --single-transaction --default-parallelism=0
从视图和存储程序的语句中 省略
DEFINER
和SQL SECURITY
子句 。CREATE
转储文件在重新加载时会创建使用默认值DEFINER
和SQL SECURITY
值的对象。请参阅 第 23.6 节,“存储对象访问控制”。--skip-dump-rows
,-d
不要转储表行。
--socket=
,path
-S
path
对于与 的连接
localhost
,要使用的 Unix 套接字文件,或者在 Windows 上,要使用的命名管道的名称。在 Windows 上,仅当服务器启动时
named_pipe
启用了支持命名管道连接的系统变量时,此选项才适用。此外,进行连接的用户必须是named_pipe_full_access_group
系统变量指定的 Windows 组的成员。以 开头的选项
--ssl
指定是否使用加密连接到服务器并指示在哪里可以找到 SSL 密钥和证书。请参阅 加密连接的命令选项。加密连接允许的 TLS 协议。该值是一个或多个以逗号分隔的协议名称的列表。可以为此选项命名的协议取决于用于编译 MySQL 的 SSL 库。有关详细信息,请参阅 第 6.3.2 节,“加密连接 TLS 协议和密码”。
这个选项是在 MySQL 5.7.10 中添加的。
在输出中包含每个转储表的触发器。
默认情况下启用此选项;用于
--skip-triggers
禁用它。此选项允许
TIMESTAMP
在不同时区的服务器之间转储和重新加载列。mysqlpump将其连接时区设置为 UTC 并添加SET TIME_ZONE='+00:00'
到转储文件中。如果没有此选项,TIMESTAMP
列将在源服务器和目标服务器的本地时区转储和重新加载,如果服务器位于不同的时区,这可能会导致值发生变化。--tz-utc
还可以防止由于夏令时而发生的变化。默认情况下启用此选项;用于
--skip-tz-utc
禁用它。--user=
,user_name
-u
user_name
用于连接到服务器的 MySQL 帐户的用户名。
CREATE USER
以和GRANT
语句 的形式将用户帐户转储为逻辑定义 。用户定义存储在
mysql
系统数据库的授权表中。默认情况下, mysqlpump不在mysql
数据库转储中包含授权表。要将授权表的内容转储为逻辑定义,请使用该--users
选项并禁止所有数据库转储:mysqlpump --exclude-databases=% --users
--version
,-V
显示版本信息并退出。
定期显示进度指示器,提供有关表、行和其他对象的已完成和总数的信息。
默认情况下启用此选项;用于
--skip-watch-progress
禁用它。
mysqlpump 对象选择
mysqlpump有一组包含和排除选项,可以过滤多种对象类型并提供对要转储的对象的灵活控制:
--include-databases
并--exclude-databases
应用于数据库和其中的所有对象。--include-tables
并--exclude-tables
应用于表格。这些选项也会影响与表关联的触发器,除非给出特定于触发器的选项。--include-triggers
并--exclude-triggers
应用于触发器。--include-routines
并--exclude-routines
应用于存储过程和函数。如果例程选项与存储过程名称匹配,它也会与同名的存储函数匹配。--include-events
并--exclude-events
应用于 Event Scheduler 事件。--include-users
并--exclude-users
应用于用户帐户。
可以多次给出任何包含或排除选项。效果是叠加的。这些选项的顺序无关紧要。
每个包含和排除选项的值是适当对象类型的逗号分隔名称列表。例如:
--exclude-databases=test,world
--include-tables=customer,invoice
对象名称中允许使用通配符:
%
匹配零个或多个字符的任何序列。_
匹配任何单个字符。
例如,
--include-tables=t%,__tmp
匹配所有以 开头的表名t
和所有以 . 结尾的五个字符的表名
tmp
。
对于用户,没有主机部分的指定名称被解释为隐含主机%
. 例如,
u1
和u1@%
是等价的。这与通常在 MySQL 中应用的相同(请参阅第 6.2.4 节,“指定帐户名称”)。
包含和排除选项相互作用如下:
By default, with no inclusion or exclusion options, mysqlpump dumps all databases (with certain exceptions noted in mysqlpump Restrictions).
If inclusion options are given in the absence of exclusion options, only the objects named as included are dumped.
If exclusion options are given in the absence of inclusion options, all objects are dumped except those named as excluded.
If inclusion and exclusion options are given, all objects named as excluded and not named as included are not dumped. All other objects are dumped.
If multiple databases are being dumped, it is possible to name
tables, triggers, and routines in a specific database by
qualifying the object names with the database name. The
following command dumps databases db1
and
db2
, but excludes tables
db1.t1
and db2.t2
:
mysqlpump --include-databases=db1,db2 --exclude-tables=db1.t1,db2.t2
The following options provide alternative ways to specify which databases to dump:
The
--all-databases
option dumps all databases (with certain exceptions noted in mysqlpump Restrictions). It is equivalent to specifying no object options at all (the default mysqlpump action is to dump everything).--include-databases=%
is similar to--all-databases
, but selects all databases for dumping, even those that are exceptions for--all-databases
.The
--databases
option causes mysqlpump to treat all name arguments as names of databases to dump. It is equivalent to an--include-databases
option that names the same databases.
mysqlpump Parallel Processing
mysqlpump can use parallelism to achieve concurrent processing. You can select concurrency between databases (to dump multiple databases simultaneously) and within databases (to dump multiple objects from a given database simultaneously).
By default, mysqlpump sets up one queue with two threads. You can create additional queues and control the number of threads assigned to each one, including the default queue:
--default-parallelism=
specifies the default number of threads used for each queue. In the absence of this option,N
N
is 2.The default queue always uses the default number of threads. Additional queues use the default number of threads unless you specify otherwise.
--parallel-schemas=[
sets up a processing queue for dumping the databases named inN
:]db_list
db_list
and optionally specifies how many threads the queue uses.db_list
is a list of comma-separated database names. If the option argument begins with
, the queue usesN
:N
threads. Otherwise, the--default-parallelism
option determines the number of queue threads.Multiple instances of the
--parallel-schemas
option create multiple queues.Names in the database list are permitted to contain the same
%
and_
wildcard characters supported for filtering options (see mysqlpump Object Selection).
mysqlpump uses the default queue for
processing any databases not named explicitly with a
--parallel-schemas
option, and
for dumping user definitions if command options select them.
In general, with multiple queues, mysqlpump uses parallelism between the sets of databases processed by the queues, to dump multiple databases simultaneously. For a queue that uses multiple threads, mysqlpump uses parallelism within databases, to dump multiple objects from a given database simultaneously. Exceptions can occur; for example, mysqlpump may block queues while it obtains from the server lists of objects in databases.
With parallelism enabled, it is possible for output from
different databases to be interleaved. For example,
INSERT
statements from multiple
tables dumped in parallel can be interleaved; the statements are
not written in any particular order. This does not affect
reloading because output statements qualify object names with
database names or are preceded by
USE
statements as required.
The granularity for parallelism is a single database object. For example, a single table cannot be dumped in parallel using multiple threads.
Examples:
mysqlpump --parallel-schemas=db1,db2 --parallel-schemas=db3
mysqlpump sets up a queue to process
db1
and db2
, another queue
to process db3
, and a default queue to
process all other databases. All queues use two threads.
mysqlpump --parallel-schemas=db1,db2 --parallel-schemas=db3
--default-parallelism=4
This is the same as the previous example except that all queues use four threads.
mysqlpump --parallel-schemas=5:db1,db2 --parallel-schemas=3:db3
The queue for db1
and db2
uses five threads, the queue for db3
uses
three threads, and the default queue uses the default of two
threads.
As a special case, with
--default-parallelism=0
and no
--parallel-schemas
options,
mysqlpump runs as a single-threaded process
and creates no queues.
Before MySQL 5.7.11, use of the
--single-transaction
option
is mutually exclusive with parallelism. To use
--single-transaction
,
disable parallelism by setting
--default-parallelism
to 0
and not using any instances of
--parallel-schemas
:
mysqlpump --single-transaction --default-parallelism=0
mysqlpump Restrictions
mysqlpump does not dump the
INFORMATION_SCHEMA
,
performance_schema
,
ndbinfo
, or sys
schema by
default. To dump any of these, name them explicitly on the
command line. You can also name them with the
--databases
or
--include-databases
option.
mysqlpump does not dump
InnoDB
CREATE
TABLESPACE
statements.
mysqlpumpCREATE USER
使用and
以逻辑形式转储用户帐户GRANT
(例如,当您使用
--include-users
or
--users
选项时)。出于这个原因,系统数据库的转储在默认情况
mysql
下不包括包含用户定义的授权表:
、、、、、、或
。要转储任何授权表,请在数据库后跟表名命名:
user
db
tables_priv
columns_priv
procs_priv
proxies_priv
mysql
mysqlpump mysql user db ...