MySQL Shell 的实例转储实用程序 util.dumpInstance()
和架构转储实用程序 util.dumpSchemas()
是在 MySQL Shell 8.0.21 中引入的,支持将所有架构或选定架构从本地 MySQL 实例导出到 Oracle 云基础设施对象存储存储桶或一组本地文件中。 MySQL Shell 8.0.22 中引入的表转储实用程序util.dumpTables()
支持从模式中选择表或视图的相同操作。然后,可以使用该实用程序将导出的项目导入 MySQL HeatWave 服务数据库系统(简称 MySQL 数据库系统)或 MySQL 服务器实例 util.loadDump()
(请参阅 第 11.6 节 “转储加载实用程序”)。为了获得最佳功能,请始终使用 MySQL Shell 转储和转储加载实用程序的最新版本。
- 关于公用事业
- 要求和限制
- 运行实用程序
- 转储控制选项
- 转储输出选项
- 过滤选项
- MySQL HeatWave 服务和 Oracle 云基础设施选项
- S3 兼容服务的选项
- Microsoft Azure Blob 存储选项
- 实用程序错误消息
关于公用事业
MySQL Shell 的实例转储实用程序、模式转储实用程序和表转储实用程序提供 Oracle Cloud Infrastructure 对象存储流、MySQL HeatWave 服务兼容性检查和修改、多线程并行转储以及文件压缩,而mysqldump不提供这些功能。转储期间会显示进度信息。您可以使用所选的转储选项集进行试运行,以显示有关将执行哪些操作、将转储哪些项目以及(对于实例转储实用程序和架构转储实用程序)MySQL HeatWave 服务兼容性问题需要哪些信息当您使用这些选项实际运行该实用程序时,即可修复。
选择转储文件的目标位置时,请注意,要导入到 MySQL 数据库系统,运行转储加载实用程序的 MySQL Shell 实例必须安装在有权访问 MySQL 数据库系统的 Oracle Cloud Infrastructure Compute 实例上。如果将实例、架构或表转储到对象存储桶,您可以从计算实例访问对象存储桶。如果您在本地系统上创建转储文件,则需要使用您选择的复制实用程序将它们传输到 Oracle Cloud Infrastructure 计算实例,具体取决于您为计算实例选择的操作系统。
MySQL Shell 的实例转储实用程序、架构转储实用程序和表转储实用程序创建的转储包含指定架构结构的 DDL 文件和 .tsv
包含数据的制表符分隔文件。如果您希望将导出的模式设置为单独的练习,而不是使用导出的数据填充它,您还可以选择仅生成 DDL 文件或仅生成数据文件。您可以选择在转储期间是否锁定备份实例以保证数据一致性。默认情况下,转储实用程序将块表数据放入多个数据文件中并压缩这些文件。
您可以使用实用程序的选项来包含或排除指定的架构和表、用户及其角色和授权、事件、例程和触发器。如果您指定了冲突的包含和排除选项,或者命名了一个未包含在转储中的对象,则在 MySQL Shell 8.0.28 之前,这种情况将被忽略,转储将在没有该对象的情况下继续进行。从 MySQL Shell 8.0.28 开始,会报告错误并停止转储,以便您可以更正选项。如果您需要转储 MySQL 实例中的大部分架构,作为替代策略,您可以使用实例转储实用程序而不是架构转储实用程序,并指定excludeSchemas
列出那些不转储的架构的选项。同样,如果您需要转储模式中的大部分表,则可以使用带有该选项的模式转储实用程序, excludeTables
而不是表转储实用程序。
mysql.apply_status
、 mysql.general_log
、 mysql.schema
和 的数据mysql.slow_log tables
始终从 MySQL Shell 的架构转储实用程序创建的转储中排除,尽管它们的 DDL 语句也包含在内。information_schema
、mysql
、 ndbinfo
、 performance_schema
和 架构 sys
始终从实例转储中排除。
默认情况下,转储输出中的所有时间戳数据中的时区都标准化为 UTC,这有助于在不同时区的服务器之间移动数据以及处理具有多个时区的数据。如果愿意,您可以使用该tzUtc: false
选项来保留原始时间戳。
MySQL Shell 转储加载实用程序 util.loadDump()
支持使用预先身份验证的请求 (PAR) 从对象存储存储桶加载导出的实例和架构。从 MySQL Shell 8.0.22 到 8.0.26,必须在启用的情况下导出实例和架构, ociParManifest
以允许使用 PAR 从对象存储进行加载操作。有关详细信息,请参阅该选项的说明ociParManifest
。从 MySQL Shell 8.0.27 开始,引入了对存储桶中所有对象或存储桶中具有特定前缀的对象的 PAR 支持,导出ociParManifest
实例和模式时不再严格需要启用该选项。有关使用 PAR 加载转储的信息,请参阅第 11.6 节 “转储加载实用程序”。
从 MySQL Shell 8.0.27 开始,MySQL Shell 的实例转储实用程序、模式转储实用程序和表转储实用程序是分区感知的(请参阅 MySQL 手册中的 分区)。当转储的表被分区时,每个分区被视为一个独立的表;如果表有子分区,则每个子分区都被视为独立表。这也意味着,当启用分块时,分区表或子分区表的每个分区或子分区都会独立分块。为分区表创建的转储文件的基本名称使用格式 ,其中和 分别是父模式和表的名称,并且 是分区或子分区的 URL 编码名称。 *
schema*@*
table*@*
partition*
schema
table
partition
要管理早期版本的 MySQL Shell 实用程序不支持的附加功能,从 MySQL Shell 8.0.27 开始util.dumpInstance()
, util.dumpSchemas()
将 创建转储时使用的功能列表util.dumpTables()
写入 util.loadDump()
转储元数据文件;对于每个这样的功能,都会将一个元素添加到列表中。当转储加载实用程序读取元数据文件并发现列出的不支持的功能时,它会报告错误;错误消息包含支持该功能的 MySQL Shell 版本。 MySQL Shell 8.0.27 中引入的分区感知功能是第一个支持功能管理的功能。
要求和限制
-
实例转储实用程序、架构转储实用程序和表转储实用程序仅支持 MySQL Server 版本的通用 (GA) 版本。
-
将加载转储的目标 MySQL 实例需要 MySQL 5.7 或更高版本。
-
对于源 MySQL 实例,在提供实用程序的所有 MySQL Shell 版本中完全支持从 MySQL 5.7 或更高版本进行转储。从 MySQL Shell 8.0.22 到 MySQL Shell 8.0.25,可以从 MySQL 5.6 实例转储实例、架构或表并将其加载到 MySQL 5.7 或更高版本的目标中,但不能从 MySQL 5.6 转储用户帐户支持的。从 MySQL Shell 8.0.26 开始,支持从 MySQL 5.6 转储用户帐户。
-
util.loadDump()
8.0.27 之前的 MySQL Shell 版本中的 MySQL Shell 转储加载实用程序 无法加载使用 MySQL Shell 8.0.27 或更高版本中的转储实用程序创建的转储。这是因为从 MySQL Shell 8.0.27 开始,转储元数据中包含有关创建转储时使用的功能的信息。此功能列表不向后兼容,但在未来版本中添加新功能时,它支持向后兼容。为了获得最佳功能,请始终使用 MySQL Shell 转储和转储加载实用程序的最新版本。 -
实例或架构中的对象名称必须位于
latin1
或utf8
字符集中。 -
仅对使用存储引擎的表保证数据一致性
InnoDB
。 -
用于运行该实用程序的用户帐户必须对涉及的所有模式具有的最低所需权限集如下:
EVENT
、RELOAD
、SELECT
、SHOW VIEW
和TRIGGER
。- 如果该
consistent
选项设置为true
,这是默认值,则LOCK TABLES
所有转储表上的权限可以替代该RELOAD
权限(如果后者不可用)。 - 在 MySQL Shell 8.0.29 之前,如果该
consistent
选项设置为true
默认值,BACKUP_ADMIN
则也需要该权限。从 MySQL Shell 8.0.29 开始,不再需要它。如果用户帐户没有BACKUP_ADMIN
权限并且LOCK INSTANCE FOR BACKUP
无法执行,实用程序会在转储期间进行额外的一致性检查。如果此检查失败,则实例转储将停止,但模式转储或表转储将继续,并返回错误消息以警告用户一致性检查失败。 - 如果该
consistent
选项设置为false
,则 不需要BACKUP_ADMIN
和 权限。RELOAD
- 如果转储来自 MySQL 5.6 或 MySQL 5.7 实例,
EXECUTE
并且转储中的视图调用函数来获取其数据(直到 MySQL 8.0.27,不再需要),也需要该权限。 - 如果转储来自 MySQL 5.6 实例并包含用户帐户(仅可使用实例转储实用程序实现),
SUPER
则还需要该权限。
- 如果该
-
从 MySQL Shell 8.0.24 开始,用于运行该实用程序的用户帐户需要相应
REPLICATION CLIENT
权限,以便该实用程序能够在转储元数据中包含二进制日志文件名和位置。如果用户 ID 没有该权限,转储将继续,但不包括二进制日志信息。将转储的数据加载到副本服务器后,可以使用二进制日志信息来设置与非 GTID 源服务器的复制,使用ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS
语句选项CHANGE REPLICATION SOURCE TO
(从 MySQL Server 8.0.23 开始提供)。 -
用于将文件传输到 Oracle Cloud Infrastructure 对象存储存储桶的上传方法的文件大小限制为 1.2 TiB。在 MySQL Shell 8.0.21 中,多部分大小设置意味着首先应用多个文件部分的数字限制,从而创建大约 640 GB 的限制。从 MySQL Shell 8.0.22 开始,多部分大小设置已更改为允许完整文件大小限制。
-
这些实用程序将以文本形式(例如 )存储的数据类型不安全的列转换
BLOB
为 Base64。因此,这些列的大小不得超过max_allowed_packet
目标 MySQL 实例上配置的系统变量值(以字节为单位)的大约 0.74 倍。 -
对于表转储实用程序,导出的视图和触发器不得使用限定名称来引用其他视图或表。
-
表转储实用程序不会转储例程,因此转储对象(例如,使用函数的视图)引用的任何例程在加载转储时必须已经存在。
-
要导入到 MySQL 数据库系统,请将
ocimds
选项设置为true
,以确保与 MySQL HeatWave 服务的兼容性。 -
为了与 MySQL HeatWave 服务兼容,所有表都必须使用
InnoDB
存储引擎。该ocimds
选项检查转储中发现的任何异常,并且该compatibility
选项更改转储文件以将其他存储引擎替换为InnoDB
. -
对于实例转储实用程序和架构转储实用程序,为了与 MySQL HeatWave 服务兼容,实例或架构中的所有表必须位于 MySQL 数据目录中,并且必须使用默认架构加密。该
ocimds
选项更改转储文件以应用这些要求。 -
MySQL HeatWave 服务使用
partial_revokes=ON
,这意味着对包含通配符(例如_
或%
)的架构的数据库级用户授权将报告为错误。MySQL Shell 8.0.33 中引入了兼容性选项
ignore_wildcard_grants
,以及strip_invalid_grants
有关更多信息, 请参阅MySQL HeatWave 服务和 Oracle 云基础设施的选项。
-
许多其他与安全相关的限制和要求适用于表空间和与 MySQL HeatWave 服务兼容的权限等项目。该
ocimds
选项检查转储期间发现的任何异常,并且该compatibility
选项自动更改转储文件以解决某些兼容性问题。您可能需要(或更愿意)手动进行一些更改。有关更多详细信息,请参阅该选项的说明compatibility
。 -
对于使用组复制的 MySQL HeatWave 服务高可用性,每个表都需要主键。从 MySQL Shell 8.0.24 开始,该
ocimds
选项检查转储中缺少主键的任何表并报告错误。compatibility
如果不需要,可以将该选项设置为忽略丢失的主键,或者通知 MySQL Shell 的转储加载实用程序在不存在主键的不可见列中添加主键。有关详细信息,请参阅该选项的说明compatibility
。如果可能,请考虑在再次转储之前在源服务器上的表中创建主键,而不是在实用程序中进行管理。 -
从 MySQL Shell 8.0.30 开始,如果针对 MySQL 5.7 运行任何转储实用程序,则
"ocimds": true
自动util.checkForServerUpgrade
运行 , 。根据转储中包含的对象类型运行升级前检查。
运行实用程序
实例转储实用程序、架构转储实用程序和表转储实用程序使用 MySQL Shell 全局会话来获取从中执行导出的目标 MySQL 服务器的连接详细信息。在运行其中一个实用程序之前,您必须打开全局会话(可以具有 X 协议连接或经典 MySQL 协议连接)。这些实用程序为每个线程打开自己的会话,从全局会话复制连接压缩和 SSL 选项等选项,并且不再进一步使用全局会话。
在 MySQL Shell API 中,实例转储实用程序、模式转储实用程序和表转储实用程序是 util
全局对象的函数,并具有以下签名:
util.dumpInstance(outputUrl[, options])
util.dumpSchemas(schemas, outputUrl[, options])
util.dumpTables(schema, tables, outputUrl[, options])
options
是一个选项字典,如果为空则可以省略。本主题的其余部分列出了实例转储实用程序、架构转储实用程序和表转储实用程序的可用选项。
对于架构转储实用程序,schemas
指定要从 MySQL 实例转储的一个或多个架构的列表。
对于表转储实用程序,schema
指定包含要转储的项目的架构,并且 tables
是指定要转储的表或视图的字符串数组。从 MySQL Shell 8.0.23 开始,表转储包含在目标 MySQL 实例中设置指定架构所需的信息,尽管可以使用转储加载实用程序的schema
选项将其加载到备用目标架构中。在 MySQL Shell 8.0.22 中,不包含架构信息,因此该实用程序生成的转储文件必须加载到现有的目标架构中。
表转储实用程序可用于从模式中选择单个表,例如,如果您想在模式之间传输表。在此示例中,在 MySQL Shell 的 JavaScript 模式下,表employees
和 架构salaries
中的表将导出到实用程序在当前工作目录中创建的 hr
本地目录 :emp
shell-js> util.dumpTables("hr", [ "employees", "salaries" ], "emp")
要转储指定架构中的所有视图和表,请使用该all
选项并将 tables
参数设置为空数组,如下例所示:
shell-js> util.dumpTables("hr", [], "emp", { "all": true })
如果要转储到本地文件系统, outputUrl
则为一个字符串,指定要放置转储文件的本地目录的路径。您可以指定绝对路径或相对于当前工作目录的路径。您可以使用架构作为本地目录路径的前缀file://
。在此示例中,连接的 MySQL 实例被转储到本地目录,并在转储文件中进行了一些修改以与 MySQL HeatWave 服务兼容。用户首先执行试运行以检查架构并查看兼容性问题,然后使用应用的适当兼容性选项运行转储以消除问题:
解释shell-js> util.dumpInstance("C:/Users/hanna/worlddump", {dryRun: true, ocimds: true})
Checking for compatibility with MySQL HeatWave Service 8.0.21
...
Compatibility issues with MySQL HeatWave Service 8.0.21 were found. Please use the
'compatibility' option to apply compatibility adaptations to the dumped DDL.
Util.dumpInstance: Compatibility issues were found (RuntimeError)
shell-js> util.dumpInstance("C:/Users/hanna/worlddump", {
> ocimds: true, compatibility: ["strip_definers", "strip_restricted_grants"]})
导出之前目标目录必须为空。如果该目录在其父目录中尚不存在,实用程序将创建它。对于导出到本地目录,转储期间创建的目录是使用访问权限创建的rwxr-x---
,并且文件是使用访问权限创建的 rw-r-----
(在支持这些权限的操作系统上)。文件和目录的所有者是运行 MySQL Shell 的用户帐户。
如果您要转储到 Oracle Cloud Infrastructure 对象存储存储桶,outputUrl
则 是一个路径,将用于为存储桶中的转储文件添加前缀,以模拟目录结构。使用该osBucketName
选项提供对象存储存储桶的名称,并 osNamespace
使用该选项标识该存储桶的命名空间。在此示例中,用户将 world
架构从连接的 MySQL 实例转储到对象存储存储桶,并进行与上一示例相同的兼容性修改:
shell-js> util.dumpSchemas(["world"], "worlddump", {
> "osBucketName": "hanna-bucket", "osNamespace": "idx28w1ckztq",
> "ocimds": "true", "compatibility": ["strip_definers", "strip_restricted_grants"]})
在对象存储桶中,转储文件均以 前缀出现worlddump
,例如:
解释worlddump/@.done.json
worlddump/@.json
worlddump/@.post.sql
worlddump/@.sql
worlddump/world.json
worlddump/world.sql
worlddump/world@city.json
worlddump/world@city.sql
worlddump/world@city@@0.tsv.zst
worlddump/world@city@@0.tsv.zst.idx
...
对象存储存储桶的命名空间显示在 Oracle Cloud Infrastructure 控制台存储桶详细信息页面的存储桶信息选项卡中,或者可以使用 Oracle Cloud Infrastructure 命令行界面获取。使用默认 Oracle Cloud Infrastructure CLI 配置文件中的默认配置文件或您使用ociConfigFile
和 选项指定的替代详细信息建立与对象存储存储桶的连接ociProfile
。有关设置 CLI 配置文件的说明,请参阅 SDK 和 CLI 配置文件。
转储控制选项
-
dryRun: [ true | false ]
显示有关使用指定选项集转储的内容的信息,以及有关 MySQL HeatWave 服务兼容性检查结果的信息(如果
ocimds
指定了该选项),但不继续转储。设置此选项使您能够在开始转储之前列出所有兼容性问题。默认为false
. -
showProgress: [ true | false ]
显示 (
true
) 或隐藏 (false
) 转储的进度信息。默认为true
ifstdout
是终端 (tty
),例如当 MySQL Shell 处于交互模式时,false
否则。进度信息包括估计要转储的总行数、到目前为止转储的行数、完成百分比以及每秒行数和字节数的吞吐量。 -
threads: \*
int\*
用于从 MySQL 实例转储数据块的并行线程数。每个线程都有自己的与 MySQL 实例的连接。默认值为 4。
-
maxRate: "\*
string\*"
转储期间每个线程数据读取吞吐量每秒的最大字节数。可以使用
k
千字节、M
兆字节和千兆字节的单位后缀G
(例如,将100M
吞吐量设置为每个线程每秒 100 兆字节)。设置0
(这是默认值),或将选项设置为空字符串,意味着不设置限制。 -
defaultCharacterSet: "\*
string\*"
MySQL Shell 打开到服务器进行转储的会话连接期间要使用的字符集。默认为
utf8mb4
.对于每个连接,系统变量character_set_client
、character_set_connection
和 的会话值character_set_results
都设置为此值。该字符集必须是系统变量允许character_set_client
且MySQL实例支持的。 -
consistent: [ true | false ]
通过在转储期间锁定备份实例来 启用 (
true
) 或禁用 ( ) 一致数据转储。false
默认为true
.true
设置 后,实用程序会使用该FLUSH TABLES WITH READ LOCK
语句设置一个全局读锁(如果用于运行该实用程序的用户 ID 具有该RELOAD
权限),或使用语句设置一系列表锁LOCK TABLES
(如果该用户 ID 没有该RELOAD
权限但具有该权限)。LOCK TABLES
)。每个线程的事务是使用语句SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
和启动的START TRANSACTION WITH CONSISTENT SNAPSHOT
。当所有线程都开始其事务时,实例将被锁定以进行备份(如 LOCK INSTANCE FOR BACKUP 和 UNLOCK INSTANCE 语句中所述),并且全局读锁被释放。从 MySQL Shell 8.0.29 开始,如果用户帐户没有权限BACKUP_ADMIN
并且LOCK INSTANCE FOR BACKUP
无法执行,实用程序会在转储期间进行额外的一致性检查。如果此检查失败,则实例转储将停止,但模式转储或表转储将继续,并返回错误消息以警告用户一致性检查失败。 -
skipConsistencyChecks: [ true | false ]
Enable(
true
)或disable(false
)时执行额外的一致性检查consistent: true
。默认为false
.如果 则忽略此选项consistent: false
。
转储输出选项
-
tzUtc: [ true | false ]
在转储开始处包含一条语句,将时区设置为 UTC。转储输出中的所有时间戳数据都会转换为该时区。默认为
true
,所以默认转换时间戳数据。将时区设置为 UTC 有助于在不同时区的服务器之间移动数据,或处理具有多个时区的一组数据。如果愿意,请将此选项设置为false
保留原始时间戳。 -
compression: "\*
string\*"
为转储写入数据文件时使用的压缩类型。默认使用 zstd 压缩 (
zstd
)。替代方案是使用 gzip 压缩 (gzip
) 或不压缩 (none
)。 -
chunking: [ true | false ]
对表数据启用 (
true
) 或禁用 (false
) 分块,这会将每个表的数据拆分为多个文件。默认值为true
,因此默认启用分块。用于bytesPerChunk
指定块大小。如果将分块选项设置为false
,则不会进行分块,并且实用程序会为每个表创建一个数据文件。在 MySQL Shell 8.0.32 之前,要将表数据分块到单独的文件中,必须为表定义主键或唯一索引,实用程序使用它来选择索引列来对数据进行排序和分块。如果表不包含其中任何一个,则会显示警告并将表数据写入单个文件。从 MySQL Shell 8.0.32 开始,如果表没有主键或唯一索引,则根据表中的行数、平均行长度和值来完成分块bytesPerChunk
。 -
bytesPerChunk: "\*
string\*"
设置启用分块时要写入每个数据文件的大致字节数。可以使用
k
千字节、M
兆字节和千兆字节的单位后缀 。 MySQL Shell 8.0.22 中的G
默认值为 64 MB (64M
)(MySQL Shell 8.0.21 中为 32 MB),最小值为 128 KB (128k
)。指定此选项设置chunking
为true
隐式。该实用程序的目标是在应用压缩之前将每个表的数据分块到每个包含此数据量的文件中。块大小是平均值,是根据表统计数据和解释计划估计值计算得出的。 -
dialect: [default|csv|csv-unix|tsv]
(在 MySQL Shell 8.0.32 中添加)为导出的数据文件的格式指定一组字段和行处理选项。您可以使用选定的方言作为进一步自定义的基础,还可以指定
linesTerminatedBy
、fieldsTerminatedBy
、fieldsEnclosedBy
、fieldsOptionallyEnclosed
和fieldsEscapedBy
选项中的一个或多个来更改设置。默认方言生成的数据文件SELECT...INTO OUTFILE
与使用具有该语句的默认设置的语句创建的内容相匹配。.txt
是分配给这些输出文件的适当文件扩展名。其他方言可用于导出 DOS 或 UNIX 系统的 CSV 文件 (.csv
) 和 TSV 文件 (.tsv
)。适用于每种方言的设置如下:表 11.3 表导出实用程序的方言设置dialect``linesTerminatedBy``fieldsTerminatedBy``fieldsEnclosedBy``fieldsOptionallyEnclosed``fieldsEscapedBy``default
[如果][标签][空的]false
`csv[CR][LF],”
true\
csv-unix[如果],”
false\
tsv[CR][LF][标签]”
true\ 笔记方言的回车和换行值与操作系统无关。如果您使用
linesTerminatedBy、
fieldsTerminatedBy、
fieldsEnclosedBy、
fieldsOptionallyEnclosed和
fieldsEscapedBy选项,根据命令解释器的转义约定,如果您在选项值中使用反斜杠字符 (\),则可能需要加倍反斜杠字符 (\)。与使用该语句的 MySQL 服务器一样 [
SELECT…INTO OUTFILE`](https://dev.mysql.com/doc/refman/8.0/en/select-into.html),MySQL Shell 不会验证您指定的字段和行处理选项。这些选项选择不准确可能会导致数据导出部分或不正确。请务必在开始导出之前验证您的设置,并在之后验证结果。 -
linesTerminatedBy: "\*
characters\*"
(在 MySQL Shell 8.0.32 中添加)实用程序用一个或多个字符(或空字符串)终止导出的数据文件中的每一行。默认值与指定的方言相同,
\n
如果省略方言选项,则默认为换行符 ( )。该选项相当于语句LINES TERMINATED BY
的选项SELECT...INTO OUTFILE
。请注意,该实用程序不提供LINES STARTING BY
该SELECT...INTO OUTFILE
语句的等效选项,该选项设置为空字符串。 -
fieldsTerminatedBy: "\*
characters\*"
(在 MySQL Shell 8.0.32 中添加)实用程序使用一个或多个字符(或空字符串)来终止导出的数据文件中的每个字段。默认值与指定的方言相同,
\t
如果省略方言选项,则默认为制表符 ( )。该选项相当于语句FIELDS TERMINATED BY
的选项SELECT...INTO OUTFILE
。 -
fieldsEnclosedBy: "\*
character\*"
(在 MySQL Shell 8.0.32 中添加)单个字符(或空字符串),实用程序用它括起导出的数据文件中的每个字段。默认值与指定的方言相同,如果省略方言选项,则默认值为空字符串。该选项相当于 语句
FIELDS ENCLOSED BY
的选项SELECT...INTO OUTFILE
。 -
fieldsOptionallyEnclosed: [ true | false ]
(MySQL Shell 8.0.32 新增) 给定的字符
fieldsEnclosedBy
是包围导出数据文件中的所有字段 (false
),还是仅包围具有字符串数据类型(如CHAR
、BINARY
、TEXT
或ENUM
(true
)的字段) 。默认值是指定的方言,或者false
省略方言选项。该选项使该fieldsEnclosedBy
选项等同于FIELDS OPTIONALLY ENCLOSED BY
该SELECT...INTO OUTFILE
语句的选项。 -
fieldsEscapedBy: "\*
character\*"
(在 MySQL Shell 8.0.32 中添加)在导出的数据文件中开始转义序列的字符。默认值与指定的方言相同,如果省略方言选项,则默认值为反斜杠 ()。该选项相当于语句
FIELDS ESCAPED BY
的选项SELECT...INTO OUTFILE
。如果将此选项设置为空字符串,则不会转义任何字符,但不建议这样做,因为SELECT...INTO OUTFILE
必须转义使用的特殊字符。
过滤选项
-
where:
一个键值对,由有效的表标识符(格式为 ) 和用于过滤导出数据的有效 SQL 条件表达式组成。
*
schemaName*.*
tableName*
笔记SQL 仅在执行时才有效。如果您要导出许多表,则任何与 SQL 语法相关的问题只会在过程后期才会出现。因此,建议您在长时间运行的导出过程中使用 SQL 条件之前对其进行测试。在以下示例中,where
仅将表中 的值 大于 150 的行导出到名为 的本地文件sakila.actor
夹 :sakila.actor_info``actor_id``out`` util.dumpTables("sakila", ["actor","actor_info"], "out", {"where" : {"sakila.actor": "actor_id > 150", "sakila.actor_info": "actor_id > 150"}})
-
partitions: ["\*
string\*","\*
string\*",..]
将导出限制为指定分区的有效分区名称列表。例如,仅导出名为
p1
和 的分区p2
:partitions: ["p1", "p2"]
以下示例从 table1 导出分区 p1 和 p2,从 table2 导出分区 p2:util.dumpTables("schema", ["table","table2"], "out", {"partitions" : { "schema.table1": ["p1", "p2"],"schema.table2": ["p1"]}})
-
ddlOnly: [ true | false ]
将此选项设置为
true
仅在转储中包含转储项的 DDL 文件,而不转储数据。默认为false
. -
dataOnly: [ true | false ]
设置此选项以
true
仅包括转储中转储项目的数据文件,而不包括 DDL 文件。默认为false
. -
users: [ true | false ]
****(仅限实例转储实用程序)****在转储中包含 (
true
) 或排除 (false
默认值为true
,因此默认情况下包含用户。架构转储实用程序和表转储实用程序不包括转储中的用户、角色和授权。从 MySQL Shell 8.0.22 开始,您可以使用excludeUsers
或includeUsers
选项指定要在转储文件中排除或包含的各个用户帐户。这些选项还可以与 MySQL Shell 的转储加载实用程序一起使用,util.loadDump()
以在导入时排除或包含单个用户帐户,具体取决于目标 MySQL 实例的要求。笔记不支持从 MySQL 5.6 实例转储用户帐户。如果您要从此版本转储,请设置users: false
.在 MySQL Shell 8.0.21 中,如果转储文件中存在用户帐户或其他受限用户帐户名称,则尝试将用户导入 MySQL 数据库系统会导致导入失败,root
因此无法将用户导入 MySQL 数据库系统。该版本支持。 -
excludeUsers: \*
array of strings\*
****(仅限实例转储实用程序)****从转储文件中排除指定的用户帐户。 MySQL Shell 8.0.22 提供此选项,您可以使用它来排除不接受导入到 MySQL 数据库系统的用户帐户,或者目标 MySQL 实例上已存在或不需要的用户帐户。 以使用用户名和主机名定义的帐户或 仅使用用户名定义的帐户格式指定每个用户帐户字符串 如果您不提供主机名,则具有该用户名的所有帐户都将被排除。
"'*
user_name*'@'*
host_name*'"``"'*
user_name*'"
-
includeUsers: \*
array of strings\*
****(仅限实例转储实用程序)****仅在转储文件中包含指定的用户帐户。指定每个用户帐户字符串作为选项
excludeUsers
。excludeUsers
如果转储中只需要少数用户帐户,您可以使用它作为替代方案您还可以指定两个选项以包含某些帐户并排除其他帐户。 -
excludeSchemas: \*
array of strings\*
****(仅限实例转储实用程序)****从转储中排除指定架构。请注意,
information_schema
、mysql
、ndbinfo
、performance_schema
和sys
架构始终从实例转储中排除。 -
includeSchemas: \*
array of strings\*
****(仅限实例转储实用程序)****仅在转储中包含命名模式。 MySQL Shell 8.0.28 中提供了此选项。您不能通过 在此选项中命名来
information_schema
、mysql
、ndbinfo
、performance_schema
或sys
如果您想要转储其中一个或多个架构,可以使用架构转储实用程序来执行此操作util.dumpSchemas()
。 -
excludeTables: \*
array of strings\*
****(仅限实例转储实用程序和架构转储实用程序)****从转储中排除指定的表。表名必须使用有效的模式名称进行限定,并在需要时用反引号字符引起来。由该选项命名的表
excludeTables
在转储中没有 DDL 文件或数据文件。,尽管包含了 DDL 语句,但 、 、 和 的数据始终从架构转储中排除,并且您不能通过在其他选项或实用程序中命名表来mysql.apply_status
包含mysql.general_log
该mysql.schema
数据 。mysql.slow_log tables
笔记包含多字节字符的架构和表名称必须用反引号括起来。 -
includeTables: \*
array of strings\*
****(仅限实例转储实用程序和架构转储实用程序)****仅在转储中包含指定的表。 MySQL Shell 8.0.28 中提供了此选项。表名必须使用有效的模式名称进行限定,并在需要时用反引号字符引起来。笔记包含多字节字符的架构和表名称必须用反引号括起来。
-
events: [ true | false ]
****(仅限实例转储实用程序和架构转储实用程序)****在转储中包含 (
true
) 或排除 (false
默认为true
. -
excludeEvents: \*
array of strings\*
****(仅限实例转储实用程序和架构转储实用程序)****从转储中排除指定事件。 MySQL Shell 8.0.28 中提供了此选项。事件名称必须使用有效的架构名称进行限定,并在需要时用反引号字符引起来。
-
includeEvents: \*
array of strings\*
****(仅限实例转储实用程序和架构转储实用程序)****仅在转储中包含指定事件。 MySQL Shell 8.0.28 中提供了此选项。事件名称必须使用有效的架构名称进行限定,并在需要时用反引号字符引起来。
-
routines: [ true | false ]
****(仅限实例转储实用程序和架构转储实用程序)****在转储中为每个架构包含 (
true
) 或排除 (false
默认为true
.routines
设置为,也不包括用户定义的函数true
。 -
excludeRoutines: \*
array of strings\*
****(仅限实例转储实用程序和架构转储实用程序)****从转储中排除指定函数和存储过程。 MySQL Shell 8.0.28 中提供了此选项。例程的名称必须使用有效的模式名称进行限定,并在需要时用反引号字符引起来。
-
includeRoutines: \*
array of strings\*
****(仅限实例转储实用程序和架构转储实用程序)****仅在转储中包含指定的函数和存储过程。 MySQL Shell 8.0.28 中提供了此选项。例程的名称必须使用有效的模式名称进行限定,并在需要时用反引号字符引起来。
-
all: [ true | false ]
****(仅限表转储实用程序)****设置此选项以将
true
指定架构中的所有视图和表包含在转储中。默认为false
.使用此选项时,请将tables
参数设置为空数组,例如:shell-js> util.dumpTables("hr", [], "emp", { "all": true })
-
triggers: [ true | false ]
****(所有转储实用程序)****为转储中的每个表 包含 (
true
) 或排除 (false
默认为true
. -
excludeTriggers: \*
array of strings\*
*(所有转储实用程序)* 从转储中排除指定的触发器。 MySQL Shell 8.0.28 中提供了此选项。触发器的名称必须使用有效的架构名称和表名称 (
schema.table.trigger
) 进行限定,并在需要时用反引号字符引起来。您可以通过使用此选项 ( ) 指定架构名称和表名称来排除特定表的所有触发器schema.table
。 -
includeTriggers: \*
array of strings\*
*(所有转储实用程序)* 仅在转储中包含指定的触发器。 MySQL Shell 8.0.28 中提供了此选项。触发器的名称必须使用有效的架构名称和表名称 (
schema.table.trigger
) 进行限定,并在需要时用反引号字符引起来。您可以通过使用此选项 ( ) 指定架构名称和表名称来包含特定表的所有触发器schema.table
。
MySQL HeatWave 服务和 Oracle 云基础设施选项
-
osBucketName: "\*
string\*"
要写入转储的 Oracle Cloud Infrastructure 对象存储存储桶的名称。默认情况下,
[DEFAULT]
位于的 Oracle Cloud Infrastructure CLI 配置文件中的配置文件~/.oci/config
用于建立与存储桶的连接。您可以使用ociConfigFile
和 选项替换用于连接的替代配置文件ociProfile
。有关设置 CLI 配置文件的说明,请参阅 SDK 和 CLI 配置文件。 -
osNamespace: "\*
string\*"
名为 by 的对象存储存储桶所在的 Oracle Cloud Infrastructure 命名空间
osBucketName
。对象存储存储桶的命名空间显示在 Oracle Cloud Infrastructure 控制台存储桶详细信息页面的存储桶信息选项卡中,或者可以使用 Oracle Cloud Infrastructure 命令行界面获取。 -
ociConfigFile: "\*
string\*"
一个 Oracle Cloud Infrastructure CLI 配置文件,其中包含用于连接的配置文件,而不是默认位置中的配置文件
~/.oci/config
。 -
ociProfile: "\*
string\*"
用于连接的 Oracle Cloud Infrastructure 配置文件的配置文件名称,而不是
[DEFAULT]
用于连接的 Oracle Cloud Infrastructure CLI 配置文件中的配置文件。 -
ocimds: [ true | false ]
设置此选项以
true
启用与 MySQL HeatWave 服务的兼容性检查和修改。默认为false
.从 MySQL Shell 8.0.23 开始,此选项可用于所有实用程序,在该版本之前,它仅适用于实例转储实用程序和架构转储实用程序。当该选项设置为true
、DATA DIRECTORY
、INDEX DIRECTORY
、 和语句ENCRYPTION
中的选项CREATE TABLE
会在 DDL 文件中被注释掉,以确保所有表都位于 MySQL 数据目录中并使用默认模式加密。对CREATE TABLE
除 之外的语句 中的任何存储引擎进行检查InnoDB
,检查是否向用户或角色授予不合适的权限,以及是否存在其他兼容性问题。如果发现任何不符合要求的 SQL 语句,则会引发异常并停止转储。在转储过程开始之前,使用该dryRun
选项列出转储中项目的所有问题。使用该compatibility
选项自动修复转储输出中的问题。从 MySQL Shell 8.0.22 到 MySQL Shell 8.0.26,当此选项设置为并使用该选项true
提供对象存储存储桶名称 时,该选项也默认为 ,这意味着生成的清单文件包含预先验证的请求( PAR)用于转储中的所有文件,并且只能使用这些 PAR 来访问转储文件。从 MySQL Shell 8.0.27 开始,引入了对存储桶中所有对象或存储桶中具有特定前缀的对象的 PAR 支持,该选项默认设置为 ,并且仅在显式设置时才启用。osBucketName``ociParManifest``true``ociParManifest``false``true
笔记从 MySQL Shell 8.0.30 开始,如果针对 MySQL 5.7 运行任何转储实用程序,则"ocimds": true
自动util.checkForServerUpgrade
运行 , 。根据转储中包含的对象类型运行升级前检查。 -
compatibility: \*
array of strings\*
对转储输出中的所有表应用与 MySQL HeatWave 服务兼容的指定要求,并根据需要更改转储文件。从 MySQL Shell 8.0.23 开始,此选项可用于所有实用程序,在该版本之前,它仅适用于实例转储实用程序和架构转储实用程序。可以将以下修改指定为字符串数组:**
force_innodb
更改CREATE TABLE
语句以将InnoDB
存储引擎用于任何尚未使用该存储引擎的表。skip_invalid_accounts
删除使用 MySQL HeatWave 服务不支持的外部身份验证插件创建的用户帐户。从 MySQL Shell 8.0.26 开始,此选项还会删除未设置密码的用户帐户,除非没有密码的帐户被标识为角色,在这种情况下,将使用该CREATE ROLE
语句转储该帐户。strip_definers
从视图、例程、事件和触发器中删除该DEFINER
子句,以便使用默认定义者(调用架构的用户)创建这些对象,并将SQL SECURITY
视图和例程的子句更改为指定INVOKER
而不是DEFINER
。 MySQL HeatWave 服务需要特殊权限才能使用定义者(而不是加载架构的用户)创建这些对象。如果您的安全模型要求视图和例程具有比查询或调用它们的帐户更多的权限,则必须在加载之前手动修改架构。strip_restricted_grants
从语句中删除 MySQL HeatWave 服务限制的特定权限GRANT
,这样用户及其角色就无法被授予这些权限(这将导致用户创建失败)。从 MySQL Shell 8.0.22 开始,如果 Oracle 云基础设施计算实例上的管理用户帐户本身没有相关权限,则 此选项还会删除REVOKE
系统模式 (mysql
和 ) 的语句,因此无法删除它们。sys
strip_tablespaces
从语句中删除该TABLESPACE
子句CREATE TABLE
,以便所有表都在其默认表空间中创建。 MySQL HeatWave 服务对表空间有一些限制。ignore_missing_pks
使实例、架构或表转储实用程序在执行转储时忽略任何丢失的主键,以便ocimds
仍然可以使用该选项,而不会因此检查而停止转储。通过此修改创建的转储无法加载到 MySQL HeatWave Service High Availability 实例中,因为使用组复制的 MySQL HeatWave Service High Availability 需要主键。要添加缺少的主键,请使用create_invisible_pks
修改,或考虑在源服务器上的表中创建主键。ignore_wildcard_grants
如果启用,则忽略带有通配符的模式授权中的错误,这些错误在partial_revokes
启用系统变量的系统中会有不同的解释。strip_invalid_grants
如果启用,则会删除加载用户时会失败的授予语句。例如引用不存在的特定例程的补助金。create_invisible_pks
**在转储元数据中添加一个标志,以通知 MySQL Shell 的转储加载实用程序为每个不包含主键的表在不可见列中添加主键。此修改允许将某些表缺少主键的转储加载到 MySQL HeatWave 服务高可用性实例中。 MySQL HeatWave 服务高可用性需要主键,该服务使用组复制。此修改不会更改转储数据,因为表在转储加载实用程序处理之前不包含不可见列。不可见列(名为“my_row_id
”)对使用上传表的应用程序没有影响。以这种方式添加主键尚无法将修改后的表入站复制到高可用性实例,因为该功能当前要求主键同时存在于源服务器和副本服务器中。如果可能,请考虑在再次转储之前在源服务器上的表中创建主键,而不是使用此修改。从 MySQL 8.0.23 开始,您可以通过使用不可见列来保存主键来执行此操作,而不会对应用程序产生影响。这是性能和可用性的最佳实践,有助于转储的数据库与 MySQL HeatWave 服务无缝协作。笔记create_invisible_pks
由于 MySQL 8.0.23 中隐藏列的限制, MySQL Shell 的转储加载实用程序只能用于将通过修改创建的转储加载 到 MySQL Server 8.0.24 或更高版本的目标 MySQL 实例上。 MySQL Shell 8.0.24 之前的 MySQL Shell 版本中的转储加载实用程序会默默地忽略转储元数据标志,并且不会添加主键,因此请确保使用该实用程序的最新版本。 -
ociParManifest: [ true | false ]
设置此选项可为
true
转储中的每个项目生成用于读取访问的 PAR(对象读取 PAR),以及列出所有 PAR URL 的清单文件。默认情况下,PAR 会在一周后过期,您可以使用该ociParExpireTime
选项进行更改。此选项可从 MySQL Shell 8.0.22 中用于实例转储实用程序和架构转储实用程序,并且只能在导出到对象存储存储桶时使用(因此osBucketName
设置了该选项)。从 MySQL Shell 8.0.23 开始,此选项可用于所有转储实用程序。从 MySQL Shell 8.0.22 到 MySQL Shell 8.0.26,当该ocimds
选项设置 为 且使用该 选项true
提供对象存储存储桶名称时,默认设置为 ,否则设置 为默认。从 MySQL Shell 8.0.27 开始,引入了对存储桶中所有对象或存储桶中具有特定前缀的对象的 PAR 支持,默认设置为 ,并且仅在显式设置时才启用。osBucketName``ociParManifest``true``false``ociParManifest``false``true
用于连接到对象存储存储桶的 Oracle Cloud Infrastructure 配置文件中指定的用户(该DEFAULT
用户或由选项指定的其他用户ociProfile
)是 PAR 的创建者。此用户必须拥有PAR_MANAGE
与存储桶中的对象交互的权限和适当的权限,如 使用预先验证的请求中所述。如果为任何对象创建 PAR 时出现问题,关联的文件将被删除并停止转储。要启用加载在启用该选项的情况下创建的转储文件 ,请按照使用预先验证的请求中的说明ociParManifest
为清单文件 ( ) 创建只读 PAR 。如果您想在转储完成之前开始加载转储,则可以在转储仍在进行时执行此操作。您可以使用具有所需权限的任何用户帐户创建此 PAR。然后,转储加载实用程序必须使用 PAR URL 通过清单文件访问转储文件。 URL 仅在创建时显示,因此请将其复制到持久存储。@.manifest.json
重要的在使用此访问方法之前,请评估对存储桶或对象进行预身份验证访问的业务需求和安全影响。 PAR 使任何拥有 PAR 访问权限的人都可以访问请求中标识的目标。仔细管理 PAR 的分配。 -
ociParExpireTime: "\*
string\*"
ociParManifest
该选项设置为 true 时生成的 PAR 的到期时间 。默认值为当前时间加一星期,采用 UTC 格式。MySQL Shell 8.0.22 中的实例转储实用程序和架构转储实用程序可使用此选项。从 MySQL Shell 8.0.23 开始,此选项可用于所有转储实用程序。到期时间必须采用 RFC 3339 时间戳格式,正如创建 PAR 时 Oracle Cloud Infrastructure 所要求的那样。该格式YYYY-MM-DDTHH-MM-SS
后紧跟字母 Z(代表 UTC 时间),或表示为 的本地时间 UTC 偏移量[+|-]hh:mm
,例如2020-10-01T00:09:51.000+02:00
。 MySQL Shell 不会验证到期时间,但任何格式错误都会导致转储中第一个文件的 PAR 创建失败,从而停止转储。
S3 兼容服务的选项
MySQL Shell 支持将 MySQL 数据转储到 S3 兼容的存储桶,例如 Amazon Web Services (AWS) S3。
笔记
MySQL Shell 支持命令行选项、环境变量和配置文件中的 AWS S3 配置。命令行选项覆盖环境变量、配置文件和默认选项。
有关配置要求的信息,请参阅 第 4.7 节 “云服务配置”。
-
s3BucketName: "\*
string\*"
要写入转储的 S3 存储桶的名称。默认情况下,位于 的
default
配置文件config
和 文件用于建立与 S3 存储桶的连接。您可以使用和 选项替换连接的替代配置和凭据。有关安装和配置 AWS CLI 的说明,请参阅 AWS CLI 入门。credentials``~/.aws/``s3ConfigFile``s3CredentialsFile
-
s3CredentialsFile:"\*
string\*"
一种凭据文件,其中包含用于连接的用户凭据,而不是默认位置中的凭据
~/.aws/credentials
。通常,凭据文件包含 用于连接的aws_access_key_id
和 。aws_secret_access_key
-
s3ConfigFile: "\*
string\*"
包含用于连接的配置文件的配置文件,而不是默认位置中的配置文件,例如
~/.aws/config
.通常,配置文件包含用于连接的区域和输出类型。 -
s3Profile: "\*
string\*"
用于连接的 s3 CLI 配置文件的配置文件名称,而不是配置文件
default
。 -
s3Region: "\*
string\*"
用于连接的区域的名称。
-
s3EndpointOverride: "\*
string\*"
要使用的端点 URL,而不是默认值。连接到 Oracle Cloud Infrastructure S3 兼容性 API 时,端点采用以下格式: .替换为对象存储命名空间和 您的区域标识符。例如,美国东部(阿什本)区域的区域标识符是。
https://*
namespace*.compat.objectstorage.*
region*.oraclecloud.com
namespace
**region
us-ashburn-1
对于美国东部(阿什本)区域中名为 axaxnpcrorw5 的命名空间:https://axaxnpcrorw5.compat.objectstorage.us-ashburn-1.oraclecloud.com
。
以下示例显示将 MySQL 实例转储到test
S3 存储桶 中的文件夹 , Bucket001
并具有一些兼容性选项:
util.dumpInstance("test",{s3bucketName: "Bucket001", threads: 4,
compatibility: ["strip_restricted_grants", "strip_definers", "ignore_missing_pks"]})
test
以下示例显示将 MySQL 实例转储到对象存储桶中 的前缀,Bucket001
使用配置文件 oci
, s3EndpointOverride
将连接定向到所需租户和区域的 OCI 端点,以及一些兼容性选项:
解释 util.dumpInstance("test",{s3BucketName: "Bucket001",
s3EndpointOverride: "https://axaxnpcrorw5.compat.objectstorage.us-ashburn-1.oraclecloud.com",
s3Profile: "oci", threads: 4,
compatibility: ["strip_restricted_grants", "strip_definers", "ignore_missing_pks"]})
Microsoft Azure Blob 存储选项
MySQL Shell 支持转储到 Microsoft Azure Blob 存储。
笔记
MySQL Shell 支持命令行选项、环境变量和配置文件中的 Microsoft Azure Blob 存储配置。命令行选项覆盖环境变量和配置文件。
有关配置要求和配置类型优先顺序的信息,请参阅 第 4.7 节 “云服务配置”。
-
azureContainerName: "\*
string\*"
强制的。要写入转储的 Azure 容器的名称。容器必须存在。
-
azureConfigFile: "\*
string\*"
选修的。包含存储连接参数的配置文件,而不是默认位置的配置文件,例如
~/.azure/config
.如果未定义,则使用默认配置文件。azureContainerName
必须已定义,且不能为空。 -
azureStorageAccount: "\*
string\*"
选修的。用于操作的 Azure 存储帐户的名称。
-
azureStorageSasToken: "\*
string\*"
选修的。用于验证操作的 Azure 共享访问签名 (SAS) 令牌,而不是密钥。
在以下示例中,配置使用配置字符串作为连接参数,这意味着 dump 命令仅需要azureContainerName
.
示例config
文件:
解释 [cloud]
name = AzureCloud
[storage]
connection_string=alphanumericConnectionString
示例dumpInstance
命令,将实例的内容导出到名为 的容器 prefix1
中名为 的 文件夹mysqlshellazure
:
util.dumpInstance("prefix1", {azureContainerName: "mysqlshellazure", threads: 4})
实用程序错误消息
52000-52999 范围内的错误号特定于 MySQL Shell 的实例转储实用程序 util.dumpInstance()
、架构转储实用程序 util.dumpSchemas()
和表转储实用程序 util.dumpTables()
。可能会返回以下错误:
-
错误编号:
52000
;象征:SHERR_DUMP_LOCK_TABLES_MISSING_PRIVILEGES
消息:用户 %s 缺少 %s 的以下权限:%s。
-
错误编号:
52001
;象征:SHERR_DUMP_GLOBAL_READ_LOCK_FAILED
消息:无法获取全局读锁
-
错误编号:
52002
;象征:SHERR_DUMP_LOCK_TABLES_FAILED
消息:无法锁定表:%s。
-
错误编号:
52003
;象征:SHERR_DUMP_CONSISTENCY_CHECK_FAILED
消息:一致性检查失败。
-
错误编号:
52004
;象征:SHERR_DUMP_COMPATIBILITY_ISSUES_FOUND
消息:发现兼容性问题
-
错误编号:
52005
;象征:SHERR_DUMP_COMPATIBILITY_OPTIONS_FAILED
消息:无法应用某些兼容性选项
-
错误编号:
52006
;象征:SHERR_DUMP_WORKER_THREAD_FATAL_ERROR
消息:转储期间出现致命错误
-
错误编号:
52007
;象征:SHERR_DUMP_MISSING_GLOBAL_PRIVILEGES
消息:用户 %s 缺少以下全局权限:%s。
-
错误编号:
52008
;象征:SHERR_DUMP_MISSING_SCHEMA_PRIVILEGES
消息:用户 %s 缺少架构 %s 的以下权限:%s。
-
错误编号:
52009
;象征:SHERR_DUMP_MISSING_TABLE_PRIVILEGES
消息:用户 %s 缺少表 %s 的以下权限:%s。
-
错误编号:
52010
;象征:SHERR_DUMP_NO_SCHEMAS_SELECTED
消息:模式过滤器导致空集。
-
错误编号:
52011
;象征:SHERR_DUMP_MANIFEST_PAR_CREATION_FAILED
消息:无法为对象“%s”创建 PAR:%s
-
错误编号:
52012
;象征:SHERR_DUMP_DW_WRITE_FAILED
消息:无法将 %s 写入文件 %s
-
错误编号:
52013
;象征:SHERR_DUMP_IC_FAILED_TO_FETCH_VERSION
消息:无法获取服务器版本。
-
错误编号:
52014
;象征:SHERR_DUMP_SD_CHARSET_NOT_FOUND
消息:无法找到字符集:%s
-
错误编号:
52015
;象征:SHERR_DUMP_SD_WRITE_FAILED
消息:写入时出现错误号 %d
-
错误编号:
52016
;符号:SHERR_DUMP_SD_QUERY_FAILED消息:无法执行“%s”:%s
-
错误编号:
52017
;象征:SHERR_DUMP_SD_COLLATION_DATABASE_ERROR
消息:处理选择@@collation_database时出错;结果
-
错误编号:
52018
;象征:SHERR_DUMP_SD_CHARACTER_SET_RESULTS_ERROR
消息:无法将 character_set_results 设置为:%s
-
错误编号:
52019
;象征:SHERR_DUMP_SD_CANNOT_CREATE_DELIMITER
消息:无法为事件创建分隔符:%s
-
错误编号:
52020
;象征:SHERR_DUMP_SD_INSUFFICIENT_PRIVILEGE
消息:%s 对 %s 没有足够的权限!
-
错误编号:
52021
;象征:SHERR_DUMP_SD_MISSING_TABLE
消息:%s 不存在于 information_schema 中
-
错误编号:
52022
;象征:SHERR_DUMP_SD_SHOW_CREATE_TABLE_FAILED
消息:运行失败:显示创建表 %s,错误:%s
-
错误编号:
52023
;象征:SHERR_DUMP_SD_SHOW_CREATE_TABLE_EMPTY
消息:为表:%s 创建空表
-
错误编号:
52024
;象征:SHERR_DUMP_SD_SHOW_FIELDS_FAILED
消息:显示字段来自视图失败:%s
-
错误编号:
52025
;象征:SHERR_DUMP_SD_SHOW_KEYS_FAILED
消息:无法获取表 %s 的键:%s
-
错误编号:
52026
;象征:SHERR_DUMP_SD_SHOW_CREATE_VIEW_FAILED
消息:失败:显示创建表%s
-
错误编号:
52027
;象征:SHERR_DUMP_SD_SHOW_CREATE_VIEW_EMPTY
消息:没有有关视图的信息:%s
-
错误编号:
52028
;象征:SHERR_DUMP_SD_SCHEMA_DDL_ERROR
消息:转储架构“%s”的 DDL 时出错:%s
-
错误编号:
52029
;象征:SHERR_DUMP_SD_TABLE_DDL_ERROR
消息:转储表“%s”的 DDL 时出错。“%s”:%s
-
错误编号:
52030
;象征:SHERR_DUMP_SD_VIEW_TEMPORARY_DDL_ERROR
消息:转储视图“%s”的临时 DDL 时出错。“%s”:%s
-
错误编号:
52031
;象征:SHERR_DUMP_SD_VIEW_DDL_ERROR
消息:转储视图“%s”的 DDL 时出错。“%s”:%s
-
错误编号:
52032
;象征:SHERR_DUMP_SD_TRIGGER_COUNT_ERROR
消息:无法检查表“%s”的触发器计数。“%s”
-
错误编号:
52033
;象征:SHERR_DUMP_SD_TRIGGER_DDL_ERROR
消息:转储表“%s”的触发器时出错。“%s”:%s
-
错误编号:
52034
;象征:SHERR_DUMP_SD_EVENT_DDL_ERROR
消息:转储架构“%s”的事件时出错:%s
-
错误编号:
52035
;象征:SHERR_DUMP_SD_ROUTINE_DDL_ERROR
消息:转储架构“%s”的例程时出错:%s
-
错误编号:
52036
;象征:SHERR_DUMP_ACCOUNT_WITH_APOSTROPHE
消息:帐户 %s 包含不支持的 ’ 字符
54000-54999 范围内的错误号表示 MySQL Shell 的转储加载实用程序util.loadDump()
或 MySQL Shell 的实例转储实用程序util.dumpInstance()
、架构转储实用程序util.dumpSchemas()
和表转储实用程序遇到的连接和网络错误util.dumpTables()
。在大多数情况下,错误代码与所涉及的 HTTP 错误相匹配 - 例如,当未找到 URL 的目标时(HTTP 404 Not Found),会发生错误 54404。可能会返回以下错误:
-
错误编号:
54000
;象征:SHERR_DL_COMMON_CONNECTION_ERROR
消息:%s连接错误:%s。
-
错误编号:
54100
至54511
;象征:SHERR_NETWORK_[*
HTTP error name*]
消息:特定于上下文的消息