所述mysqlpump客户实用程序执行 逻辑备份,产生一组能够被执行以再现原始数据库对象定义和表数据的SQL语句。它转储一个或多个MySQL数据库以进行备份或转移到另一台SQL服务器。
小费
考虑使用MySQL Shell转储实用程序,该实用程序提供具有多个线程的并行转储,文件压缩和进度信息显示,以及云功能(例如Oracle Cloud Infrastructure对象存储流)以及MySQL数据库服务兼容性检查和修改。使用MySQL Shell负载转储实用程序,可以轻松地将转储导入MySQL Server实例或MySQL数据库服务数据库系统。可以在此处找到MySQL Shell的安装说明。
mysqlpump功能包括:
- 并行处理数据库以及数据库中的对象,以加快转储过程
- 更好地控制要转储的数据库和数据库对象(表,存储的程序,用户帐户)
- 的用户帐户倾倒作为帐户管理语句(
CREATE USER,GRANT),而不是作为到刀片mysql系统数据库 - 创建压缩输出的能力
- 进度指示器(值是估计值)
- 对于转储文件重新加载,
InnoDB通过在插入行后添加索引,可以更快地为表 创建二级索引
注意
mysqlpump使用MySQL 5.7中引入的MySQL功能,因此假定与MySQL 5.7或更高版本一起使用。
mysqlpump至少需要具有SELECT转储表,SHOW VIEW转储视图,TRIGGER转储触发器以及未使用LOCK TABLES该 --single-transaction选项的 特权。在SELECT上权限mysql系统数据库需要转储用户定义。如选项说明中所述,某些选项可能需要其他特权。
要重新加载转储文件,您必须具有执行该文件所包含的语句所需的特权,例如CREATE对那些语句创建的对象的适当 特权。
注意
在Windows上使用PowerShell通过输出重定向创建的转储将创建具有UTF-16编码的文件:
shell> mysqlpump [options] > dump.sql
但是,不允许将UTF-16作为连接字符集(请参见第10.4节“连接字符集和排序规则”),因此无法正确加载转储文件。要变通解决此问题,请使用 --result-file选项,该选项以ASCII格式创建输出:
shell> mysqlpump [options] --result-file=dump.sql
mysqlpump调用语法
默认情况下,mysqlpump转储所有数据库(mysqlpump Restrictions中注明的某些例外 )。要明确指定此行为,请使用以下 --all-databases选项:
shell> mysqlpump --all-databases
要转储单个数据库或该数据库中的某些表,请在命令行上命名该数据库,还可以选择后面加上表名:
shell> mysqlpump db_name
shell> mysqlpump db_name tbl_name1 tbl_name2 ...
要将所有名称参数都视为数据库名称,请使用以下 --databases选项:
shell> mysqlpump --databases db_name1 db_name2 ...
默认情况下,即使您转储包含授权表的系统数据库,mysqlpump也不转储用户帐户定义 mysql。要将授权表内容作为逻辑定义以CREATE USERand GRANT语句的形式转储,请使用该 --users选项并禁止所有数据库转储:
shell> mysqlpump --exclude-databases=% --users
在前面的命令中,%是一个与该--exclude-databases选项的所有数据库名称匹配的通配符 。
mysqlpump支持几个选项,包括或不包括数据库,表,存储的程序和用户定义。参见mysqlpump对象选择。
要重新加载转储文件,请执行其中包含的语句。例如,使用mysql客户端:
shell> mysqlpump [options] > dump.sql
shell> mysql < dump.sql
以下讨论提供了附加的 mysqlpump使用示例。
要查看mysqlpump 支持的选项列表,请发出命令mysqlpump --help。
mysqlpump选项摘要
mysqlpump支持以下选项,可以在命令行或 选项文件的 [mysqlpump]和[client]组中指定这些选项。(在MySQL 8.0.20之前, mysqlpump读取该 [mysql_dump]组而不是 [mysqlpump]。从8.0.20开始, [mysql_dump]它仍被接受,但已弃用。)有关MySQL程序使用的选项文件的信息,请参见第4.2.2.2节“使用选项文件”。。
表4.16 mysqlpump选项
| 选项名称 | 描述 | 介绍了 | 不推荐使用 |
|---|---|---|---|
| –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语句包围每个表转储 | ||
| -所有数据库 | 转储所有数据库 | ||
| –bind-address | 使用指定的网络接口连接到MySQL Server | ||
| –character-sets-dir | 字符集的安装目录 | ||
| –column-statistics | 编写ANALYZE TABLE语句以生成统计数据直方图 | ||
| -完全插入 | 使用包含列名的完整INSERT语句 | ||
| - 压缩 | 压缩客户端和服务器之间发送的所有信息 | 8.0.18 | |
| –compress-输出 | 输出压缩算法 | ||
| -压缩算法 | 用于服务器连接的允许压缩算法 | 8.0.18 | |
| -数据库 | 将所有名称参数解释为数据库名称 | ||
| -调试 | 编写调试日志 | ||
| -调试检查 | 程序退出时打印调试信息 | ||
| - 调试信息 | 程序退出时打印调试信息,内存和CPU统计信息 | ||
| –default-auth | 身份验证插件使用 | ||
| –default-character-set | 指定默认字符集 | ||
| -默认并行度 | 并行处理的默认线程数 | ||
| –defaults-extra-file | 除常规选项文件外,还读取命名的选项文件 | ||
| –defaults-file | 只读命名的选项文件 | ||
| –defaults-group-suffix | 选项组后缀值 | ||
| –defer-table-indexes | 对于重新加载,将索引创建推迟到加载表行之后 | ||
| -事件 | 从转储的数据库中转储事件 | ||
| –exclude-databases | 从转储中排除的数据库 | ||
| -排除事件 | 从转储中排除的事件 | ||
| –exclude-routines | 从转储中排除的例程 | ||
| –exclude-tables | 从转储中排除的表 | ||
| -排除触发 | 触发从转储中排除 | ||
| –exclude-users | 从转储中排除的用户 | ||
| –extended-insert | 使用多行INSERT语法 | ||
| –get-server-public-key | 从服务器请求RSA公钥 | ||
| - 救命 | 显示帮助信息并退出 | ||
| –hex-blob | 使用十六进制表示法转储二进制列 | ||
| - 主办 | MySQL服务器所在的主机 | ||
| –include-databases | 转储中包含的数据库 | ||
| –include-events | 转储中包含的事件 | ||
| –include例程 | 转储中包含的例程 | ||
| –include-tables | 转储中包含的表 | ||
| –include-triggers | 触发包含在转储中 | ||
| –include-users | 要包含在转储中的用户 | ||
| –insert-ignore | 编写INSERT IGNORE而不是INSERT语句 | ||
| –log-错误文件 | 将警告和错误附加到命名文件 | ||
| -登录路径 | 从.mylogin.cnf中读取登录路径选项 | ||
| –max-allowed-packet | 发送到服务器或从服务器接收的最大数据包长度 | ||
| –net-buffer-length | TCP / IP和套接字通信的缓冲区大小 | ||
| –no-create-db | 不要写CREATE DATABASE语句 | ||
| –no-create-info | 不要编写重新创建每个转储表的CREATE TABLE语句 | ||
| -无默认值 | 不读取选项文件 | ||
| -平行方案 | 指定模式处理并行性 | ||
| - 密码 | 连接服务器时使用的密码 | ||
| –plugin-dir | 安装插件的目录 | ||
| - 港口 | 用于连接的TCP / IP端口号 | ||
| –print-defaults | 打印默认选项 | ||
| - 协议 | 使用的传输协议 | ||
| - 更换 | 编写REPLACE语句而不是INSERT语句 | ||
| -结果文件 | 直接输出到给定文件 | ||
| -例程 | 从转储的数据库中转储存储的例程(过程和函数) | ||
| –server-public-key-path | 包含RSA公钥的文件的路径名 | ||
| –set字符集 | 将SET NAMES default_character_set添加到输出 | ||
| –set-gtid-purged | 是否将SET @@ GLOBAL.GTID_PURGED添加到输出 | ||
| -单笔交易 | 在单个事务中转储表 | ||
| –skip-definer | 从视图和存储的程序CREATE语句中忽略DEFINER和SQL SECURITY子句 | ||
| –skip-dump-rows | 不要转储表行 | ||
| - 插座 | Unix套接字文件或Windows命名管道使用 | ||
| –ssl-ca | 包含受信任的SSL证书颁发机构列表的文件 | ||
| –ssl-capath | 包含受信任的SSL证书颁发机构证书文件的目录 | ||
| –ssl-cert | 包含X.509证书的文件 | ||
| –ssl-cipher | 连接加密的允许密码 | ||
| –ssl-crl | 包含证书吊销列表的文件 | ||
| –ssl-crlpath | 包含证书吊销列表文件的目录 | ||
| –ssl-fips-mode | 是否在客户端启用FIPS模式 | ||
| –ssl键 | 包含X.509密钥的文件 | ||
| –ssl模式 | 与服务器连接的所需安全状态 | ||
| –tls-ciphersuites | 允许的TLSv1.3密码套件用于加密连接 | 8.0.16 | |
| –tls-version | 允许的TLS协议进行加密连接 | ||
| -触发 | 每个转储表的转储触发器 | ||
| –tz-utc | 将SET TIME_ZONE =’+ 00:00’添加到转储文件 | ||
| - 用户 | 连接服务器时使用的MySQL用户名 | ||
| -用户 | 转储用户帐户 | ||
| - 版 | 显示版本信息并退出 | ||
| –watch-progress | 显示进度指示器 | ||
| –zstd-压缩级别 | 与使用zstd压缩的服务器的连接的压缩级别 | 8.0.18 |
mysqlpump选项说明
-
--help,-?显示帮助消息并退出。
-
DROP DATABASE在每条CREATE DATABASE陈述前 写一条陈述。注意
在MySQL 8.0中,该
mysql架构被视为最终用户无法删除的系统架构。如果--add-drop-database与要转储的模式列表--all-databases一起使用或与一起 使用 ,则转储文件包含一条语句,该 语句在重新加载转储文件时导致错误。--databasesmysql``DROP DATABASEmysql``相反,要使用
--add-drop-database,请--databases与要转储的模式列表一起使用 , 该列表不包含mysql。 -
DROP TABLE在每条CREATE TABLE陈述前 写一条陈述。 -
DROP USER在每条CREATE USER陈述前 写一条陈述。 -
用
LOCK TABLES和UNLOCK TABLES语句包围每个表转储。重新装入转储文件时,这可以加快插入速度。请参见 第8.2.5.1节“优化INSERT语句”。此选项不适用于并行性,因为可以
INSERT对来自不同表的语句进行交织,并且UNLOCK TABLES在一个表的插入结束之后可能会释放对保留有插入内容的表的锁定。--add-locks并且--single-transaction是互斥的。 -
--all-databases,-A转储所有数据库(在mysqlpump Restrictions中注明了某些例外 )。如果未明确指定其他行为,则这是默认行为。
--all-databases并且--databases是互斥的。注意
有关该
--add-drop-database选项与的不兼容性的信息,请参见 说明--all-databases。在MySQL 8.0之前,使用以下选项时,不需要mysqldump和 mysqlpump的
--routinesand--events选项 包含存储的例程和事件 :转储包括系统数据库,因此还包含存储的例程和事件定义的 and 表。从MySQL 8.0开始,and--all-databasesmysql``mysql.proc``mysql.event``mysql.event``mysql.proc表未使用。对应对象的定义存储在数据字典表中,但这些表不会转储。要将存储的例程和事件包括在使用创建的转储中--all-databases,请显式使用--routines和--events选项。 -
在具有多个网络接口的计算机上,使用此选项选择用于连接到MySQL服务器的接口。
-
字符集的安装目录。请参见 第10.15节“字符集配置”。
-
ANALYZE TABLE重新加载转储文件时,在输出中 添加语句以为转储表生成直方图统计信息。默认情况下,此选项是禁用的,因为大型表的直方图生成可能会花费很长时间。 -
编写
INSERT包含列名称的完整语句。 -
--compress,-C尽可能压缩客户端和服务器之间发送的所有信息。请参见 第4.2.8节“连接压缩控制”。
从MySQL 8.0.18开始,此选项已被弃用。希望在将来的MySQL版本中将其删除。请参阅 配置旧版连接压缩。
-
默认情况下,mysqlpump不压缩输出。此选项使用指定的算法指定输出压缩。允许的算法为
LZ4和ZLIB。要解压缩压缩的输出,必须具有适当的实用程序。如果系统命令 lz4和openssl zlib 不可用,则MySQL发行版包括 lz4_decompress和 zlib_decompress实用程序,可用于解压缩使用和 选项压缩的mysqlpump输出 。有关更多信息,请参见 第4.8.1节“ lz4_decompress-解压缩mysqlpump LZ4-Compressed输出”和 第4.8.3节“ zlib_decompress
--compress-output=LZ4--compress-output=ZLIB—解压缩mysqlpump ZLIB压缩输出”。 -
--compression-algorithms=*value*用于连接到服务器的允许的压缩算法。可用算法与
protocol_compression_algorithms系统变量相同 。默认值为uncompressed。有关更多信息,请参见 第4.2.8节“连接压缩控制”。
该选项是在MySQL 8.0.18中添加的。
-
--databases,-B通常,mysqlpump将命令行上的名字参数视为数据库名称,并将其后的名称视为表名称。使用此选项,它将所有名称参数视为数据库名称。
CREATE DATABASE语句包含在每个新数据库之前的输出中。--all-databases并且--databases是互斥的。注意
有关该
--add-drop-database选项与的不兼容性的信息,请参见 说明--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.17节“可插入身份验证”。
-
--default-character-set=*charset_name*使用*
charset_name*作为默认字符集。请参见第10.15节“字符集配置”。如果未指定任何字符集,则 mysqlpump使用utf8。 -
每个并行处理队列的默认线程数。预设值为2。
该
--parallel-schemas选项还影响并行性,可用于覆盖默认线程数。有关更多信息,请参见 mysqlpump并行处理。使用
--default-parallelism=0和不使用--parallel-schemas选项,mysqlpump作为单线程进程运行,并且不创建队列。启用并行性后,可以对来自不同数据库的输出进行交织。
-
--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这些数据库的 特权。使用
--eventscontainsCREATE EVENT语句生成的输出 将创建事件。默认情况下启用此选项。用于
--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.2节“缓存SHA-2可插拔身份验证”。 -
使用十六进制表示法转储二进制列(例如,
'abc'变为0x616263)。受影响的数据类型是BINARY,VARBINARY,BLOB类型,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.7节“ 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.7节“ 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.17节“可插入身份验证”。 -
--port=*port_num*,-P *port_num*对于TCP / IP连接,使用的端口号。
-
打印程序名称及其从选项文件中获得的所有选项。
有关此选项和其他选项文件选项的更多信息,请参见第4.2.2.3节“影响选项文件处理的命令行选项”。
-
--protocol={TCP|SOCKET|PIPE|MEMORY}用于连接到服务器的传输协议。当其他连接参数通常导致使用您想要的协议以外的协议时,此功能很有用。有关允许值的详细信息,请参见 第4.2.7节“连接传输协议”。
-
直接输出到命名文件。即使生成转储时发生错误,也将创建结果文件并覆盖其先前的内容。
在Windows上应使用此选项,以防止将换行符
\n转换为\r\n回车/换行符序列。 -
在输出中包括用于转储数据库的存储例程(过程和函数)。此选项需要全局
SELECT特权。通过使用
--routinescontainsCREATE PROCEDURE和CREATE FUNCTION语句创建例程所生成的输出 。默认情况下启用此选项。用于
--skip-routines禁用它。 -
--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,仅当MySQL使用OpenSSL构建时,此选项才适用。有关
sha256_password和caching_sha2_password插件的信息,请参见 第6.4.1.3节“ SHA-256可插拔身份验证”和 第6.4.1.2节“缓存SHA-2可插拔身份验证”。 -
写入 输出。
SET NAMES *default_character_set*默认情况下启用此选项。要禁用它并取消显示该
SET NAMES语句,请使用--skip-set-charset。 -
--set-gtid-purged=*value*此选项通过指示是否向
SET @@GLOBAL.gtid_purged输出添加语句来控制写入转储文件的全局事务ID(GTID)信息 。此选项还可能导致将语句写入输出,从而在重新加载转储文件时禁用二进制日志记录。下表显示了允许的选项值。默认值为
AUTO。值 含义 OFFSET在输出中不添加任何语句。ONSET在输出中添加一条语句。如果未在服务器上启用GTID,则会发生错误。AUTOSET如果在服务器上启用了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)。
-
此选项将事务隔离模式设置为,
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是互斥的。 -
对于视图和存储的程序,从语句中 省略
DEFINER和SQL SECURITY子句CREATE。重新加载转储文件时,该转储文件将创建使用默认值DEFINER和SQL SECURITY值的对象。请参见 第25.6节“存储的对象访问控制”。 -
--skip-dump-rows,-d不要转储表行。
-
--socket=*path*,-S *path*对于与的连接
localhost,要使用的Unix套接字文件,或者在Windows上,要使用的命名管道的名称。在Windows上,仅当在
named_pipe启用了支持命名管道连接的系统变量的情况下启动服务器时,此选项才适用。另外,建立连接的用户必须是named_pipe_full_access_group系统变量指定的Windows组的成员 。 -
--ssl*以开头的选项
--ssl指定是否使用SSL连接到服务器,并指示在何处查找SSL密钥和证书。请参阅 加密连接的命令选项。 -
--ssl-fips-mode={OFF|ON|STRICT}控制是否在客户端上启用FIPS模式。该
--ssl-fips-mode选项与其他选项的不同之处在于,该 选项 不用于建立加密连接,而是影响允许的加密操作。请参见第6.8节“ FIPS支持”。--ssl-*xxx*这些
--ssl-fips-mode值是允许的:OFF:禁用FIPS模式。ON:启用FIPS模式。STRICT:启用“严格” FIPS模式。
注意
如果OpenSSL的FIPS对象模块不可用时,对于唯一的允许值
--ssl-fips-mode是OFF。在这种情况下,设置--ssl-fips-mode为ON或STRICT导致客户端在启动时发出警告并以非FIPS模式运行。 -
--tls-ciphersuites=*ciphersuite_list*使用TLSv1.3的加密连接的允许密码套件。该值是一个或多个以冒号分隔的密码套件名称的列表。可以为此选项命名的密码套件取决于用于编译MySQL的SSL库。有关详细信息,请参见 第6.3.2节“加密的连接TLS协议和密码”。
该选项是在MySQL 8.0.16中添加的。
-
加密连接允许的TLS协议。该值是一个或多个逗号分隔的协议名称的列表。可以为此选项命名的协议取决于用于编译MySQL的SSL库。有关详细信息,请参见 第6.3.2节“加密的连接TLS协议和密码”。
-
在输出中包括每个转储表的触发器。
默认情况下启用此选项。用于
--skip-triggers禁用它。 -
此选项使
TIMESTAMP列可以在不同时区的服务器之间转储和重新加载。mysqlpump将其连接时区设置为UTC并添加SET TIME_ZONE='+00:00'到转储文件中。如果没有此选项,则TIMESTAMP列将在源服务器和目标服务器本地时区中转储并重新加载,如果服务器位于不同时区中,则可能导致值更改。--tz-utc还可以防止由于夏令时而导致的更改。默认情况下启用此选项。用于
--skip-tz-utc禁用它。 -
--user=*user_name*,-u *user_name*用于连接到服务器的MySQL帐户的用户名。
-
将用户帐户作为逻辑定义转储为
CREATE USERandGRANT语句。用户定义存储在
mysql系统数据库的授权表中 。默认情况下, mysqlpump在mysql数据库转储中不包括授权表。要将授权表的内容转储为逻辑定义,请使用该--users选项并禁止所有数据库转储:shell> mysqlpump --exclude-databases=% --users -
--version,-V显示版本信息并退出。
-
定期显示进度指示器,该指示器提供有关表,行和其他对象的已完成和总数的信息。
默认情况下启用此选项。用于
--skip-watch-progress禁用它。 -
--zstd-compression-level=*level*用于与使用
zstd压缩算法的服务器的连接的压缩级别。允许的级别为1到22,更大的值表示压缩级别增加。默认zstd压缩级别为3。压缩级别设置对不使用zstd压缩的连接无效。有关更多信息,请参见 第4.2.8节“连接压缩控制”。
该选项是在MySQL 8.0.18中添加的。
mysqlpump对象选择
mysqlpump具有一组包含和排除选项,它们可以过滤几种对象类型并提供对要转储哪些对象的灵活控制:
--include-databases并--exclude-databases应用于数据库及其中的所有对象。--include-tables并--exclude-tables应用于表格。除非给出特定于触发器的选项,否则这些选项还会影响与表关联的触发器。--include-triggers并--exclude-triggers应用于触发器。--include-routines并--exclude-routines适用于存储过程和功能。如果例程选项与存储过程名称匹配,则它也与相同名称的存储函数匹配。--include-events并--exclude-events应用于事件计划程序事件。--include-users并--exclude-users应用于用户帐户。
任何包含或排除选项都可以多次给出。效果是累加的。这些选项的顺序无关紧要。
每个包含和排除选项的值是相应对象类型的逗号分隔名称的列表。例如:
--exclude-databases=test,world
--include-tables=customer,invoice
对象名称中允许使用通配符:
%匹配零个或多个字符的任何序列。_匹配任何单个字符。
例如, --include-tables=t%,__tmp 匹配所有以开头的t表名和以结尾的所有五个字符的表名 tmp。
对于用户,指定的没有主机名的名称将以的隐含主机解释%。例如, u1和u1@%是等效的。这与MySQL中通常使用的等效项相同(请参见第6.2.4节“指定帐户名”)。
包含和排除选项的相互作用如下:
- 默认情况下,没有任何包含或排除选项, mysqlpump会转储所有数据库(mysqlpump Restrictions中有某些例外 )。
- 如果在没有排除选项的情况下给出了包含选项,则仅转储名为“ included”的对象。
- 如果在没有包含选项的情况下给出了排除选项,则所有对象都将被转储,除非命名为被排除的对象。
- 如果给出了包含和排除选项,则不会转储所有名为“排除”和未命名为“包括”的对象。所有其他对象将被转储。
如果要转储多个数据库,则可以通过用数据库名称限定对象名称来命名特定数据库中的表,触发器和例程。以下命令转储数据库db1和 db2,但不包括表 db1.t1和db2.t2:
shell> mysqlpump --include-databases=db1,db2 --exclude-tables=db1.t1,db2.t2
以下选项提供了指定转储哪些数据库的替代方法:
-
该
--all-databases选项转储所有数据库(在mysqlpump Restrictions中有一些例外 )。这等效于完全不指定任何对象选项(默认的 mysqlpump操作是转储所有内容)。--include-databases=%与相似--all-databases,但是选择所有数据库进行转储,即使是那些例外--all-databases。 -
该
--databases选项使mysqlpump将所有名称参数视为要转储的数据库名称。它等效于--include-databases为相同数据库命名的选项。
mysqlpump并行处理
mysqlpump可以使用并行性来实现并发处理。您可以选择数据库之间(同时转储多个数据库)和数据库内(同时转储给定数据库的多个对象)的并发性。
默认情况下,mysqlpump设置一个带有两个线程的队列。您可以创建其他队列并控制分配给每个队列的线程数,包括默认队列:
-
--default-parallelism=*N*指定用于每个队列的默认线程数。如果没有此选项,N则为2。默认队列始终使用默认线程数。除非另外指定,否则其他队列将使用默认线程数。
-
--parallel-schemas=[*N*:\]*db_list*设置一个处理队列以转储名为中的数据库,*db_list*并可以选择指定该队列使用多少线程。 *db_list是逗号分隔的数据库名称的列表。如果option参数以开头*N*:,则队列使用N*线程。否则,该--default-parallelism选项确定队列线程的数量。该
--parallel-schemas选项的多个实例 创建多个队列。数据库列表中的名称允许包含过滤选项所支持的相同
%和_通配符(请参见 mysqlpump对象选择)。
mysqlpump使用默认队列来处理未使用--parallel-schemas选项显式命名的任何数据库 ,并在命令选项选择它们的情况下转储用户定义。
通常,对于多个队列,mysqlpump 使用队列处理的数据库集之间的并行性来同时转储多个数据库。对于使用多个线程的队列,mysqlpump使用数据库内的并行性,以同时从给定数据库中转储多个对象。可能会发生异常;例如,当mysqlpump从服务器上获取数据库中的对象列表时,它可能会阻塞队列。
启用并行性后,可以对来自不同数据库的输出进行交织。例如, INSERT可以对并行转储的多个表中的语句进行交织;声明未按任何特定顺序编写。这不会影响重新加载,因为输出语句使用数据库名称来限定对象名称,或者在USE需要时以语句开头 。
并行性的粒度是单个数据库对象。例如,不能使用多个线程并行转储单个表。
例子:
shell> mysqlpump --parallel-schemas=db1,db2 --parallel-schemas=db3
mysqlpump建立一个队列过程 db1和db2另一个排队的过程db3,和默认队列来处理所有其他数据库。所有队列使用两个线程。
shell> mysqlpump --parallel-schemas=db1,db2 --parallel-schemas=db3
--default-parallelism=4
除了所有队列都使用四个线程之外,这与前面的示例相同。
shell> mysqlpump --parallel-schemas=5:db1,db2 --parallel-schemas=3:db3
队列db1和db2 使用五个线程,队列db3使用3个线程,默认队列使用两个线程的默认。
作为一种特殊情况,带有--default-parallelism=0和不带--parallel-schemas选项的 mysqlpump作为单线程进程运行, 并且不 创建队列。
mysqlpump限制
mysqlpump不转储 performance_schema, ndbinfo或sys默认模式。要转储任何这些,请在命令行上明确命名它们。您也可以使用--databases或 --include-databases选项为它们命名 。
mysqlpump不会转储 INFORMATION_SCHEMA模式。
mysqlpump不转储 InnoDB CREATE TABLESPACE语句。
mysqlpump使用CREATE USER和 GRANT语句以逻辑形式转储用户帐户(例如,当您使用 --include-usersor --users选项时)。出于这个原因,转储mysql系统数据库默认情况下不包括含有用户定义的授权表:user,db, tables_priv,columns_priv, procs_priv,或 proxies_priv。要转储任何授权表,请先命名mysql数据库,再命名表名:
shell> mysqlpump mysql user db ...




