MySQL Shell 的实例转储工具 util.dumpInstance()
和模式转储工具 util.dumpSchemas()
,支持将所有模式或选定模式从本地 MySQL 实例导出到 Oracle Cloud Infrastructure 对象存储桶或一组本地文件。表转储工具 util.dumpTables()
支持对模式中选定的表或视图执行相同的操作。然后可以使用 util.loadDump()
工具(参见 第 11.6 节,“转储加载工具”)将导出的项目导入 HeatWave Service DB 系统或 MySQL 服务器实例。为了获得最佳功能,请始终使用最新版本的 MySQL Shell 转储工具和转储加载工具。
MySQL Shell 的实例转储工具、模式转储工具和表转储工具提供 Oracle Cloud Infrastructure 对象存储流式传输、HeatWave Service 兼容性检查和修改、使用多个线程的并行转储以及文件压缩,这些功能是 mysqldump 没有提供的。转储期间会显示进度信息。您可以使用您选择的转储选项集执行一次试运行,以显示将执行哪些操作、将转储哪些项目以及(对于实例转储工具和模式转储工具)运行实用程序时需要修复哪些 HeatWave Service 兼容性问题,当您实际使用这些选项运行实用程序时。
在选择转储文件的目标时,请注意,要导入到 HeatWave Service DB 系统,您运行转储加载工具的 MySQL Shell 实例必须安装在具有对 HeatWave Service DB 系统的访问权限的 Oracle Cloud Infrastructure 计算实例上。如果您将实例、模式或表转储到对象存储桶,则可以从计算实例访问对象存储桶。如果您在本地系统上创建转储文件,则需要使用您选择的复制工具(取决于您为计算实例选择的操作系统)将它们传输到 Oracle Cloud Infrastructure 计算实例。
MySQL Shell 的实例转储工具、模式转储工具和表转储工具创建的转储包含指定模式结构的 DDL 文件,以及包含数据的制表符分隔的 .tsv
文件。如果您希望将导出的模式作为与使用导出的数据填充它分离的步骤进行设置,您也可以选择仅生成 DDL 文件或仅生成数据文件。您可以选择是否在转储期间锁定实例以进行备份,以确保数据一致性。默认情况下,转储工具会将表数据分成多个数据文件,并压缩文件。
您可以使用实用程序的选项来包含或排除指定的模式和表、用户及其角色和授权、事件、例程和触发器。如果您指定了冲突的包含和排除选项,或者命名了未包含在转储中的对象,则会报告错误,并且转储停止,以便您可以更正选项。如果您需要转储 MySQL 实例中的大多数模式,作为另一种策略,您可以使用实例转储工具而不是模式转储工具,并指定 excludeSchemas
选项来列出不应转储的那些模式。类似地,如果您需要转储模式中的大多数表,您可以使用带有 excludeTables
选项的模式转储工具,而不是表转储工具。
对于 mysql.apply_status
、mysql.general_log
、mysql.schema
和 mysql.slow_log
表的数据始终从 MySQL Shell 的模式转储工具创建的转储中排除,尽管它们的 DDL 语句已包含在内。始终从实例转储中排除 information_schema
、mysql
、ndbinfo
、performance_schema
和 sys
模式。
默认情况下,时区在转储输出中所有时间戳数据中都标准化为 UTC,这有助于在具有不同时区的服务器之间移动数据以及处理具有多个时区的数据。如果您愿意,可以使用 tzUtc: false
选项保留原始时间戳。
MySQL Shell 转储加载工具 util.loadDump()
支持使用预先验证的请求 (PAR) 从对象存储桶加载导出的实例和模式。有关使用 PAR 加载转储的信息,请参见 第 11.6 节,“转储加载工具”。
MySQL Shell 的实例转储工具、模式转储工具和表转储工具是分区感知的(参见 分区,在 MySQL 手册 中)。当转储的表被分区时,每个分区都被视为一个独立的表;如果表有子分区,则每个子分区都被视为一个独立的表。这也意味着,当启用分块时,分区的或子分区的表的每个分区或子分区都会独立分块。为分区的表创建的转储文件的基名使用格式
,其中 schema
@table
@partition
schema
和 table
分别是父模式和表的名称,而 partition
是分区或子分区的 URL 编码名称。
为了管理对早期版本的 MySQL Shell 工具不支持的功能的添加,util.dumpInstance()
、util.dumpSchemas()
、util.dumpTables()
和 util.loadDump()
将创建转储时使用的功能列表写入转储元数据文件;对于每个这样的功能,都会在列表中添加一个元素。当转储加载工具读取元数据文件并发现列出的不受支持的功能时,它会报告错误;错误消息包含支持该功能的 MySQL Shell 版本。
实例转储工具、模式转储工具和表转储工具仅支持 MySQL 服务器版本的通用可用性 (GA) 版本。
将要加载转储的目标 MySQL 实例需要 MySQL 5.7 或更高版本。
对于源 MySQL 实例,在所有提供实用程序的 MySQL Shell 版本中,都完全支持从 MySQL 5.7 或更高版本转储。
实例或模式中的对象名称必须使用
latin1
或utf8
字符集。仅保证使用
InnoDB
存储引擎的表的数据一致性。-
用于运行实用程序的用户帐户在所有涉及的模式上必须具有的最低特权集如下:
EVENT
、RELOAD
、SELECT
、SHOW VIEW
和TRIGGER
.如果
consistent
选项设置为true
(默认值),则所有转储表的LOCK TABLES
特权可以代替RELOAD
特权(如果后者不可用)。如果用户帐户没有
BACKUP_ADMIN
特权,并且无法执行LOCK INSTANCE FOR BACKUP
,则实用程序在转储期间会进行额外的一致性检查。如果此检查失败,则实例转储会停止,但模式转储或表转储会继续并返回错误消息,以提醒用户一致性检查失败。如果
consistent
选项设置为false
,则不需要BACKUP_ADMIN
和RELOAD
特权。如果转储来自 MySQL 5.6 实例,并且包含用户帐户(这只有实例转储工具才能实现),则还需要
SUPER
特权。
用于运行实用程序的用户帐户需要
REPLICATION CLIENT
特权,以便实用程序能够在转储元数据中包含二进制日志文件名和位置。如果用户 ID 没有该特权,则转储会继续,但不包含二进制日志信息。在将转储的数据加载到副本服务器后,可以使用二进制日志信息来设置与非 GTID 源服务器的复制,使用ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS
选项的CHANGE REPLICATION SOURCE TO
语句。用于将文件传输到 Oracle 云基础设施对象存储桶的上传方法的单个文件大小限制为 1.2 TiB。
实用程序会将数据类型不安全以文本形式存储的列(例如
BLOB
)转换为 Base64。因此,这些列的大小不得超过目标 MySQL 实例上配置的max_allowed_packet
系统变量值(以字节为单位)的约 0.74 倍。对于表转储实用程序,导出的视图和触发器不得使用限定名称引用其他视图或表。
表转储实用程序不转储例程,因此转储对象引用的任何例程(例如,使用函数的视图)在加载转储时必须已存在。
-
为了导入 HeatWave Service DB 系统,将
ocimds
选项设置为true
,以确保与 HeatWave Service 兼容。重要迁移到 HeatWave Service 时,建议始终使用最新的可用 MySQL Shell 版本。
为了与 HeatWave Service 兼容,所有表都必须使用
InnoDB
存储引擎。ocimds
选项会检查转储中发现的任何异常,并且compatibility
选项会修改转储文件以将其他存储引擎替换为InnoDB
。对于实例转储实用程序和模式转储实用程序,为了与 HeatWave Service 兼容,实例或模式中的所有表都必须位于 MySQL 数据目录中,并且必须使用默认模式加密。
ocimds
选项会修改转储文件以应用这些要求。-
HeatWave Service 使用
partial_revokes=ON
,这意味着包含通配符(例如_
或%
)的模式上的数据库级用户授权将被报告为错误。您还可以使用兼容性选项
ignore_wildcard_grants
和strip_invalid_grants
有关更多信息,请参阅 HeatWave Service 和 Oracle 云基础设施的选项。
为了与 HeatWave Service 兼容,表空间和权限等项目的其他安全限制和要求适用于。
ocimds
选项会检查转储过程中发现的任何异常,并且compatibility
选项会自动修改转储文件以解决一些兼容性问题。您可能需要(或希望)手动进行一些更改。有关更多详细信息,请参阅compatibility
选项的描述。对于使用组复制的 HeatWave Service 高可用性,每个表都需要主键。
ocimds
选项会检查转储中缺少主键的任何表,并报告错误。如果您不需要主键,可以将compatibility
选项设置为忽略缺少的主键,或者通知 MySQL Shell 的转储加载实用程序在不存在主键的位置添加不可见列中的主键。有关详细信息,请参阅compatibility
选项的描述。如果可能,请考虑在再次转储之前在源服务器上的表中创建主键,而不是在实用程序中管理它。如果任何转储实用程序都针对 MySQL 5.7 运行,并且
"ocimds": true
,则util.checkForServerUpgrade
会自动运行,除非这些检查被skipUpgradeChecks
禁用。升级前检查根据转储中包含的对象类型运行。
实例转储实用程序、模式转储实用程序和表转储实用程序使用 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 实例中设置指定模式所需的信息,尽管它可以使用转储加载实用程序的 schema
选项加载到备用目标模式中。
表转储实用程序可用于从模式中选择单个表,例如,如果您要将表在模式之间传输。在此示例中,在 MySQL Shell 的 JavaScript 模式下,hr
模式中的 employees
和 salaries
表被导出到本地目录 emp
,该目录由实用程序在当前工作目录中创建
shell-js> util.dumpTables("hr", [ "employees", "salaries" ], "emp")
要转储指定模式中的所有视图和表,请使用 all
选项并将 tables
参数设置为一个空数组,如以下示例所示
shell-js> util.dumpTables("hr", [], "emp", { "all": true })
如果转储到本地文件系统,outputUrl
是一个字符串,指定要放置转储文件的本地目录的路径。您可以指定一个绝对路径或一个相对于当前工作目录的路径。您可以在本地目录路径之前加上 file://
模式。在此示例中,连接的 MySQL 实例被转储到本地目录,并且在转储文件中进行了一些修改以确保与 HeatWave Service 兼容。用户首先执行一个干运行以检查模式并查看兼容性问题,然后运行转储并将相应的兼容性选项应用于解决问题
shell-js> util.dumpInstance("C:/Users/hanna/worlddump", {dryRun: true, ocimds: true})
Checking for compatibility with HeatWave Service 8.0.33
...
Compatibility issues with HeatWave Service 8.0.33 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 云基础设施对象存储桶,outputUrl
是一个路径,将用于在存储桶中为转储文件添加前缀,以模拟目录结构。使用 osBucketName
选项提供对象存储桶的名称,使用 osNamespace
选项标识存储桶的命名空间。在此示例中,用户将连接的 MySQL 实例中的 world
模式转储到对象存储桶,并进行与上一个示例相同的兼容性修改
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/[email protected]
worlddump/[email protected]
worlddump/world@city@@0.tsv.zst
worlddump/world@city@@0.tsv.zst.idx
...
对象存储桶的命名空间显示在 Oracle 云基础设施控制台中存储桶详细信息页面的“存储桶信息”选项卡中,或者可以使用 Oracle 云基础设施命令行界面获取。使用默认配置文件中的默认 Oracle 云基础设施 CLI 配置文件建立与对象存储桶的连接,或者使用您使用 ociConfigFile
和 ociProfile
选项指定的备用详细信息。有关设置 CLI 配置文件的说明,请参阅 SDK 和 CLI 配置文件。
-
dryRun: [ true | false ]
显示有关使用指定选项集将要转储的内容以及 HeatWave Service 兼容性检查结果的信息(如果指定了
ocimds
选项),但不进行转储。设置此选项可以使您在开始转储之前列出所有兼容性问题。默认值为false
。-
showProgress: [ true | false ]
显示 (
true
) 或隐藏 (false
) 转储的进度信息。如果stdout
是一个终端 (tty
)(例如,当 MySQL Shell 处于交互模式时),默认值为true
,否则为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 语句 中所述),并且全局读锁定将被释放。如果用户帐户没有
BACKUP_ADMIN
特权,并且无法执行LOCK INSTANCE FOR BACKUP
,则实用程序在转储期间会进行额外的一致性检查。如果此检查失败,则实例转储会停止,但模式转储或表转储会继续并返回错误消息,以提醒用户一致性检查失败。 -
skipConsistencyChecks: [ true | false ]
-
启用 (
true
) 或禁用 (false
) 在consistent: true
时执行的额外一致性检查。默认值为false
。如果
consistent: false
,则忽略此选项。 -
skipUpgradeChecks: [true | false]
默认值为
false
。启用该选项将禁用在ocimds: true
时默认情况下运行的升级检查。将不会检查与 MySQL 版本升级相关的兼容性问题。仅在单独执行升级检查器时使用此选项。
-
tzUtc: [ true | false ]
在转储的开头包含一个语句,将时区设置为 UTC。转储输出中的所有时间戳数据都将转换为此时区。默认值为
true
,因此时间戳数据默认情况下会被转换。将时区设置为 UTC 有助于在具有不同时区的服务器之间移动数据,或处理具有多个时区的数据集。如果需要保留原始时间戳,请将此选项设置为false
。-
compression: "
string
;level=n
" -
创建转储文件时使用的压缩类型和压缩级别。以下压缩选项可用
none
:不应用压缩。-
gzip
:使用 gzip 压缩库。压缩级别可以设置为 0 到 9。默认压缩级别为 1。例如"compression": "gzip;level=4"
-
zstd
:默认。使用 zstd 压缩库。压缩级别可以设置为 1 到 22。默认压缩级别为 1。例如"compression": "zstd;level=15"
-
checksum: [ true | false ]
-
如果启用,将使用转储生成一个元数据文件,
@.checksums.json
。此文件包含转储的校验和数据,允许在加载转储时进行数据验证。请参阅 加载控制选项。如果
checksum: true
,则适用以下条件如果
ddlOnly:false
且chunking:true
,则为每个转储的表和分区块生成校验和。如果
ddlOnly:false
且chunking:false
,则为每个转储的表和表分区生成校验和。如果
ddlOnly:true
,则为每个转储的表和表分区生成校验和。
-
chunking: [ true | false ]
-
启用 (
true
) 或禁用 (false
) 表数据的块化,将每个表的 data 分割成多个文件。默认值为true
,因此默认情况下启用块化。使用bytesPerChunk
指定块大小。如果将块化选项设置为false
,则不会进行块化,工具将为每个表创建一个 data 文件。如果表没有主键或唯一索引,则根据表中的行数、平均行长度和
bytesPerChunk
值进行块化。 -
bytesPerChunk: "
string
" 设置块化启用时写入每个 data 文件的大致字节数。可以使用单位后缀
k
表示千字节、M
表示兆字节和G
表示吉字节。默认值为 64 MB。指定此选项会隐式地将chunking
设置为true
。工具的目标是将每个表的 data 块化成文件,每个文件在应用压缩之前都包含此数量的数据。块大小是平均值,它是根据表统计信息和解释计划估计计算得出的。-
dialect: [default|csv|csv-unix|tsv]
-
为导出 data 文件的格式指定一组字段和行处理选项。您可以使用所选方言作为基础进行进一步自定义,方法是还指定一个或多个
linesTerminatedBy
、fieldsTerminatedBy
、fieldsEnclosedBy
、fieldsOptionallyEnclosed
和fieldsEscapedBy
选项来更改设置。默认方言会生成一个 data 文件,其内容与使用具有该语句默认设置的
SELECT...INTO OUTFILE
语句创建的文件相同。.txt
是为这些输出文件分配的适当文件扩展名。其他方言可用于导出适用于 DOS 或 UNIX 系统的 CSV 文件 (.csv
) 和 TSV 文件 (.tsv
)。为每个方言应用的设置如下
表 11.3 表导出工具的方言设置
dialect
linesTerminatedBy
fieldsTerminatedBy
fieldsEnclosedBy
fieldsOptionallyEnclosed
fieldsEscapedBy
default
[LF]
[TAB]
[empty]
false
\
csv
[CR][LF]
,
''
true
\
csv-unix
[LF]
,
''
false
\
tsv
[CR][LF]
[TAB]
''
true
\
注意方言的回车和换行符值与操作系统无关。
如果使用
linesTerminatedBy
、fieldsTerminatedBy
、fieldsEnclosedBy
、fieldsOptionallyEnclosed
和fieldsEscapedBy
选项,则根据命令解释器的转义约定,如果在选项值中使用反斜杠字符 (\),则可能需要将其加倍。与具有
SELECT...INTO OUTFILE
语句的 MySQL 服务器类似,MySQL Shell 不会验证您指定的字段和行处理选项。对这些选项的不正确选择会导致数据部分或错误地导出。在开始导出之前始终验证您的设置,并在之后验证结果。
-
linesTerminatedBy: "
characters
" 工具用于终止导出 data 文件中每一行的一个或多个字符(或空字符串)。默认值为指定方言的默认值,或者如果省略方言选项,则为换行符 (
\n
)。此选项等效于SELECT...INTO OUTFILE
语句的LINES TERMINATED BY
选项。请注意,工具没有提供SELECT...INTO OUTFILE
语句的LINES STARTING BY
选项的等效项,该选项设置为空字符串。-
fieldsTerminatedBy: "
characters
" 工具用于终止导出 data 文件中每个字段的一个或多个字符(或空字符串)。默认值为指定方言的默认值,或者如果省略方言选项,则为制表符 (
\t
)。此选项等效于SELECT...INTO OUTFILE
语句的FIELDS TERMINATED BY
选项。-
fieldsEnclosedBy: "
character
" 工具用于包围导出 data 文件中每个字段的单个字符(或空字符串)。默认值为指定方言的默认值,或者如果省略方言选项,则为空字符串。此选项等效于
SELECT...INTO OUTFILE
语句的FIELDS ENCLOSED BY
选项。-
fieldsOptionallyEnclosed: [ true | false ]
是否将为
fieldsEnclosedBy
指定的字符用于包围导出 data 文件中的所有字段 (false
),还是仅在字段具有字符串 data 类型(如CHAR
、BINARY
、TEXT
或ENUM
)时才包围 (true
)。默认值为指定方言的默认值,或者如果省略方言选项,则为false
。此选项使fieldsEnclosedBy
选项等效于SELECT...INTO OUTFILE
语句的FIELDS OPTIONALLY ENCLOSED BY
选项。-
fieldsEscapedBy: "
character
" 用于在导出 data 文件中开始转义序列的字符。默认值为指定方言的默认值,或者如果省略方言选项,则为反斜杠 (\)。此选项等效于
SELECT...INTO OUTFILE
语句的FIELDS ESCAPED BY
选项。如果将此选项设置为空字符串,则不会转义任何字符,这是不推荐的,因为SELECT...INTO OUTFILE
使用的特殊字符必须进行转义。
-
where
-
一个键值对,包含一个有效的表标识符(格式为
)和一个有效的 SQL 条件表达式,用于过滤要导出的数据。schemaName
.tableName
注意仅在执行 SQL 时才对其进行验证。如果您要导出多个表,则任何与 SQL 语法相关的错误都只能在流程后期才能看到。因此,建议您在长运行的导出流程中使用 SQL 条件之前对其进行测试。
在以下示例中,
where
仅导出sakila.actor
和sakila.actor_info
表中actor_id
值大于 150 的行,并将它们导出到名为out
的本地文件夹util.dumpTables("sakila", ["actor","actor_info"], "out", {"where" : {"sakila.actor": "actor_id > 150", "sakila.actor_info": "actor_id > 150"}})
-
partitions: {
schemaName.tableName
: ["string
","string
",..]} -
一个有效的分区名称列表,将导出限制为指定的分区。
例如,要仅导出
schema.table
表中名为p1
和p2
的分区:partitions: {schema.table:["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 文件,而不会转储 data。默认值为false
。-
dataOnly: [ true | false ]
将此选项设置为
true
将仅在转储中包含转储项的 data 文件,而不会包含 DDL 文件。默认值为false
。-
users: [ true | false ]
-
(仅实例转储工具) 在转储中包含 (
true
) 或排除 (false
) 用户及其角色和授权。默认值为true
,因此默认情况下包含用户。schema 转储工具和表转储工具不会在转储中包含用户、角色和授权。您可以使用
excludeUsers
或includeUsers
选项指定要从转储文件中排除或包含的单个用户帐户。这些选项也可与 MySQL Shell 的转储加载工具util.loadDump()
一起使用,以根据目标 MySQL 实例的要求,在导入时排除或包含单个用户帐户。注意如果从 MySQL 5.6 实例转储用户,执行复制的用户必须具有 SUPER 权限。
-
excludeUsers:
array of strings
(仅实例转储工具) 从转储文件中排除名为的用户帐户。您可以使用它来排除无法导入到 HeatWave 服务 DB 系统的用户帐户,或者已经存在或在目标 MySQL 实例上不需要的用户帐户。为定义了用户名和主机名的帐户以
"'
的格式指定每个用户帐户字符串,或者为仅定义了用户名的帐户以user_name
'@'host_name
'""'
的格式指定每个用户帐户字符串。如果您没有提供主机名,则将排除所有具有该用户名的帐户。user_name
'"-
includeUsers:
array of strings
(仅实例转储实用程序) 仅在转储文件中包含命名用户帐户。指定每个用户帐户字符串,如
excludeUsers
选项。如果转储中只需要少数用户帐户,此选项是excludeUsers
的替代方案。您还可以指定这两个选项来包含某些帐户并排除其他帐户。-
excludeSchemas:
字符串数组
(仅实例转储实用程序) 从转储中排除命名架构。请注意,
information_schema
、mysql
、ndbinfo
、performance_schema
和sys
架构始终从实例转储中排除。-
includeSchemas:
字符串数组
(仅实例转储实用程序) 仅包含转储中的命名架构。您不能通过在此选项中命名来包含
information_schema
、mysql
、ndbinfo
、performance_schema
或sys
架构。如果您想转储一个或多个这些架构,可以使用架构转储实用程序util.dumpSchemas()
来执行此操作。-
excludeTables:
字符串数组
-
(实例转储实用程序和架构转储实用程序) 从转储中排除命名表。表名必须使用有效的架构名称限定,并在需要时用反引号引起来。通过
excludeTables
选项命名的表在转储中没有 DDL 文件或数据文件。请注意,mysql.apply_status
、mysql.general_log
、mysql.schema
和mysql.slow_log 表
的数据始终从架构转储中排除,尽管它们的 DDL 语句包含在内,您也不能通过在另一个选项或实用程序中命名表来包含该数据。注意包含多字节字符的架构和表名必须用反引号括起来。
-
includeTables:
字符串数组
-
(实例转储实用程序和架构转储实用程序) 仅包含转储中的命名表。表名必须使用有效的架构名称限定,并在需要时用反引号引起来。
注意包含多字节字符的架构和表名必须用反引号括起来。
-
events: [ true | false ]
(实例转储实用程序和架构转储实用程序) 包含 (
true
) 或排除 (false
) 转储中每个架构的事件。默认值为true
。-
excludeEvents:
字符串数组
(实例转储实用程序和架构转储实用程序) 从转储中排除命名事件。事件名称必须使用有效的架构名称限定,并在需要时用反引号引起来。
-
includeEvents:
字符串数组
(实例转储实用程序和架构转储实用程序) 仅包含转储中的命名事件。事件名称必须使用有效的架构名称限定,并在需要时用反引号引起来。
-
routines: [ true | false ]
(实例转储实用程序和架构转储实用程序) 包含 (
true
) 或排除 (false
) 转储中每个架构的函数和存储过程。默认值为true
。请注意,即使routines
设置为true
,也不会包含用户定义的函数。-
excludeRoutines:
字符串数组
(实例转储实用程序和架构转储实用程序) 从转储中排除命名函数和存储过程。例程名称必须使用有效的架构名称限定,并在需要时用反引号引起来。
-
includeRoutines:
字符串数组
(实例转储实用程序和架构转储实用程序) 仅包含转储中的命名函数和存储过程。例程名称必须使用有效的架构名称限定,并在需要时用反引号引起来。
-
all: [ true | false ]
-
(表转储实用程序) 将此选项设置为
true
会在转储中包含指定架构的所有视图和表。默认值为false
。当您使用此选项时,将tables
参数设置为一个空数组,例如shell-js> util.dumpTables("hr", [], "emp", { "all": true })
-
triggers: [ true | false ]
(所有转储实用程序) 包含 (
true
) 或排除 (false
) 转储中每个表的触发器。默认值为true
。-
excludeTriggers:
字符串数组
(所有转储实用程序) 从转储中排除命名触发器。触发器名称必须使用有效的架构名称和表名 (
schema.table.trigger
) 限定,并在需要时用反引号引起来。您可以通过使用此选项 (schema.table
) 指定架构名称和表名来排除特定表的全部触发器。-
includeTriggers:
字符串数组
(所有转储实用程序) 仅包含转储中的命名触发器。触发器名称必须使用有效的架构名称和表名 (
schema.table.trigger
) 限定,并在需要时用反引号引起来。您可以通过使用此选项 (schema.table
) 指定架构名称和表名来包含特定表的全部触发器。
-
osBucketName: "
字符串
" 要写入转储的 Oracle Cloud Infrastructure 对象存储桶的名称。默认情况下,将使用位于
~/.oci/config
的 Oracle Cloud Infrastructure CLI 配置文件中的[DEFAULT]
配置文件建立与存储桶的连接。您可以使用ociConfigFile
和ociProfile
选项替换用于连接的替代配置文件。有关设置 CLI 配置文件的说明,请参阅 SDK 和 CLI 配置文件。-
osNamespace: "
字符串
" 位于
osBucketName
命名的对象存储桶的 Oracle Cloud Infrastructure 命名空间。对象存储桶的命名空间在 Oracle Cloud Infrastructure 控制台中存储桶详细信息页面上的“存储桶信息”选项卡中显示,或者可以使用 Oracle Cloud Infrastructure 命令行界面获取。-
ociConfigFile: "
字符串
" 包含用于连接的配置文件的 Oracle Cloud Infrastructure CLI 配置文件,而不是位于默认位置
~/.oci/config
的配置文件。-
ociProfile: "
字符串
" 用于连接的 Oracle Cloud Infrastructure 配置文件的配置文件名,而不是用于连接的 Oracle Cloud Infrastructure CLI 配置文件中
[DEFAULT]
配置文件。-
ociAuth
: "字符串
" -
连接到 Oracle Cloud Infrastructure 时要使用的身份验证方法。此选项要求
osBucketName
使用有效的值进行配置。以下选项可用
-
api_key
: OCI 连接使用 OCI 配置文件。请参阅 第 4.7.1 节,“Oracle Cloud Infrastructure 对象存储”。如果
osBucketName
使用有效的值定义,但未定义ociAuth
,则api_key
是使用的默认值。 -
instance_principal
: OCI 连接使用实例主体身份验证。请参阅 实例主体身份验证。如果定义了
ociConfigFile
或ociProfile
,则不能使用此选项。 -
resource_principal
: OCI 连接使用资源主体身份验证。请参阅 资源主体身份验证。如果定义了
ociConfigFile
或ociProfile
,则不能使用此选项。 security_token
: OCI 连接使用临时生成的会话令牌。请参阅 基于会话令牌的身份验证。
-
-
ocimds: [ true | false ]
-
将此选项设置为
true
会启用与 HeatWave 服务兼容性的检查和修改。默认值为false
。重要迁移到 HeatWave Service 时,建议始终使用最新的可用 MySQL Shell 版本。
当此选项设置为
true
时,CREATE TABLE
语句中的DATA DIRECTORY
、INDEX DIRECTORY
和ENCRYPTION
选项会在 DDL 文件中被注释掉,以确保所有表都位于 MySQL 数据目录中并使用默认架构加密。会对CREATE TABLE
语句中除InnoDB
之外的任何存储引擎进行检查,以及对授予用户或角色的不适合权限进行检查,以及对其他兼容性问题进行检查。如果发现任何不符合的 SQL 语句,则会引发异常并停止转储。使用dryRun
选项在转储过程开始之前列出转储中项目的所有问题。使用compatibility
选项自动修复转储输出中的问题。此选项默认情况下设置为
false
,只有在显式设置为true
时才会启用。注意如果任何转储实用程序在 MySQL 5.7 上运行,并且
"ocimds": true
,则会自动运行util.checkForServerUpgrade
。根据转储中包含的对象类型运行升级前检查。 -
targetVersion
:n.n.n
-
定义目标 MySQL 实例的版本,格式为 n.n.n。例如,8.1.0。如果未设置该值,则使用 MySQL Shell 版本。
兼容性检查会根据
targetVersion
的值进行调整。 -
compatibility:
字符串数组
-
对转储输出中的所有表应用与 HeatWave 服务兼容性的指定要求,根据需要更改转储文件。
以下修改可以指定为字符串数组
-
force_innodb
将
CREATE TABLE
语句更改为对任何尚未使用它的表使用InnoDB
存储引擎。-
skip_invalid_accounts
删除使用 HeatWave 服务不支持的外部身份验证插件创建的用户帐户。此选项还会删除未设置密码的用户帐户,但会识别为角色的无密码帐户除外,在这种情况下,它将使用
CREATE ROLE
语句进行转储。-
strip_definers
-
注意
如果目标 HeatWave 服务实例的版本为 8.2.0 或更高版本,则不需要此选项。
从 MySQL Server 8.2.0 开始,
SET_USER_ID
已被弃用,将在未来的版本中被移除。SET_USER_ID
被SET_ANY_DEFINER
和ALLOW_NONEXISTENT_DEFINER
替代。此更改会影响 MySQL Shell 处理用于 HeatWave Service (ocimds: true
) 的转储的方式,因为管理员用户具有SET_ANY_DEFINER
权限,并且能够使用DEFINER
子句执行语句。这在以前的版本中是不可能的。从视图、例程、事件和触发器中删除
DEFINER
子句,以便使用默认定义者(调用架构的用户)创建这些对象,并将视图和例程的SQL SECURITY
子句更改为指定INVOKER
而不是DEFINER
。HeatWave Service 需要特殊权限才能使用与加载架构的用户不同的定义者创建这些对象。如果您的安全模型要求视图和例程比查询或调用它们的帐户具有更多权限,则必须在加载架构之前手动修改架构。 -
strip_restricted_grants
从
GRANT
语句中删除 HeatWave Service 限制的特定权限,因此用户及其角色无法获得这些权限(这会导致用户创建失败)。如果 Oracle Cloud Infrastructure 计算实例上的管理用户帐户本身没有相关权限,此选项还会删除系统架构 (mysql
和sys
) 的REVOKE
语句,因此无法删除它们。-
strip_tablespaces
从
CREATE TABLE
语句中删除TABLESPACE
子句,以便所有表都在其默认表空间中创建。HeatWave Service 对表空间有一些限制。-
ignore_missing_pks
使实例、架构或表转储实用程序在执行转储时忽略任何缺失的主键,以便即使转储因此检查而停止,也可以继续使用
ocimds
选项。使用此修改创建的转储无法加载到 HeatWave Service 高可用性实例中,因为 HeatWave Service 高可用性使用组复制,需要主键。要添加缺失的主键,请使用create_invisible_pks
修改,或考虑在源服务器上创建表中的主键。-
ignore_wildcard_grants
如果启用,将忽略对使用通配符的架构的授予的错误,这些通配符在启用了
partial_revokes
系统变量的系统中解释不同。-
strip_invalid_grants
如果启用,将剥离在加载用户时会失败的授予语句。例如,引用特定例程(不存在)的授予。
-
create_invisible_pks
-
在转储元数据中添加一个标志,以通知 MySQL Shell 的转储加载实用程序在每个不包含主键的表中添加不可见列中的主键。此修改允许将某些表缺少主键的转储加载到 HeatWave Service 高可用性实例中。HeatWave Service 高可用性使用组复制,需要主键。
此修改不会更改转储数据,因为表在被转储加载实用程序处理之前不会包含不可见列。不可见列(命名为 "
my_row_id
")对使用上传表的应用程序没有影响。以这种方式添加主键目前还不能启用修改后的表向高可用性实例的入站复制,因为该功能目前要求主键同时存在于源服务器和副本服务器中。如果可能,建议您在将表再次转储之前,在源服务器上创建表中的主键,而不是使用此修改。您可以使用不可见列保存主键,而不会对应用程序产生任何影响。这是性能和可用性的最佳实践,有助于转储的数据库与 HeatWave Service 无缝协作。
注意由于 MySQL 8.0.23 中对隐藏列的限制,MySQL Shell 的转储加载实用程序只能用于将使用
create_invisible_pks
选项在目标 MySQL 实例版本 8.0.24 或更高版本上创建的转储加载。
-
-
force_non_standard_fks
在 MySQL 8.4.0 中,添加了
restrict_fk_on_non_standard_key
,禁止在启用时创建非标准外键。也就是说,引用非唯一键或复合键的局部字段的键。HeatWave Service 数据库系统默认情况下启用了此变量,这会导致具有此类表的转储无法加载。此选项禁用对非标准外键的检查,并配置转储加载器将restrict_fk_on_non_standard_key
变量的会话值设置为 OFF。使用非标准键创建外键可能会导致复制失败。
MySQL Shell 支持将 MySQL 数据转储到与 S3 兼容的存储桶,例如 Amazon Web Services (AWS) S3。
MySQL Shell 支持在命令行选项、环境变量和配置文件中使用 AWS S3 配置。命令行选项会覆盖环境变量、配置文件和默认选项。
有关配置要求的信息,请参见 第 4.7 节,“云服务配置”.
-
s3BucketName: "
string
" 要写入转储的 S3 存储桶的名称。默认情况下,使用位于
~/.aws/
的config
和credentials
文件的default
配置文件建立与 S3 存储桶的连接。您可以使用s3ConfigFile
和s3CredentialsFile
选项替换连接的替代配置和凭据。有关安装和配置 AWS CLI 的说明,请参见 AWS CLI 入门.-
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.comnamespace
替换为对象存储命名空间,将region
替换为您的区域标识符。例如,美国东部(阿什本)区域的区域标识符为us-ashburn-1
。对于美国东部(阿什本)区域中名为 axaxnpcrorw5 的命名空间
https://axaxnpcrorw5.compat.objectstorage.us-ashburn-1.oraclecloud.com
.
以下示例显示将 MySQL 实例转储到 S3 存储桶 Bucket001
中的文件夹 test
中,并使用一些兼容性选项
util.dumpInstance("test",{s3bucketName: "Bucket001", threads: 4,
compatibility: ["strip_restricted_grants", "strip_definers", "ignore_missing_pks"]})
以下示例显示将 MySQL 实例转储到对象存储存储桶 Bucket001
中的前缀 test
中,使用配置文件 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"]})
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) 令牌,而不是密钥。
在以下示例中,配置使用连接参数的配置字符串,这意味着转储命令只需要 azureContainerName
。
示例 config
文件
[cloud]
name = AzureCloud
[storage]
connection_string=alphanumericConnectionString
示例 dumpInstance
命令,它将实例的内容导出到名为 prefix1
的文件夹中,该文件夹位于名为 mysqlshellazure
的容器中
util.dumpInstance("prefix1", {azureContainerName: "mysqlshellazure", threads: 4})
outputURL
也可以是存储桶或前缀预授权请求 (PAR)。这使您能够将数据直接转储到 OCI 对象存储存储桶。
PAR 必须定义为启用以下权限
允许对象读取和写入
启用对象列出
如果将 PAR 定义为 outputURL
,则不支持以下选项,如果使用,会导致错误
osBucketName
s3BucketName
azureContainerName
仅存储桶和前缀 PAR 支持作为 outputURL
。无法使用对象 PAR。
如果 PAR 不受支持或未定义正确的权限,则返回 OCI 错误。
如果目标存储桶不为空,则操作失败并返回错误。如果存在具有定义前缀的对象,则操作失败并返回错误。
定义前缀 PAR 时,生成的 PAR URL 不包含定义的前缀。您必须手动将其添加到 URL 中。
存储桶 PAR 示例
以下示例将实例转储到定义的存储桶 PAR
util.dumpInstance("https://objectstorage.region.oraclecloud.com/p/secret/n/myTenancy/b/myBucket/o/")
以下示例将架构 sakila
转储到定义的存储桶 PAR
util.dumpSchemas(["sakila"], "https://objectstorage.region.oraclecloud.com/p/secret/n/myTenancy/b/myBucket/o/")
以下示例将表 sakila.actor
转储到定义的存储桶 PAR
util.dumpTables("sakila", ["actor"], "https://objectstorage.region.oraclecloud.com/p/secret/n/myTenancy/b/myBucket/o/")
前缀 PAR 示例
定义前缀 PAR 时,生成的 PAR URL 不包含定义的前缀。您必须手动将其添加到 URL 中。
以下示例将实例转储到定义的存储桶 PAR 中的前缀 MyPrefix
util.dumpInstance("https://objectstorage.region.oraclecloud.com/p/secret/n/myTenancy/b/myBucket/o/MyPrefix/")
以下示例将架构 sakila
转储到定义的存储桶 PAR 中的前缀 MyPrefix
util.dumpSchemas(["sakila"], "https://objectstorage.region.oraclecloud.com/p/secret/n/myTenancy/b/myBucket/o/MyPrefix/")
以下示例将表 sakila.actor
转储到定义的存储桶 PAR 中的前缀 MyPrefix
util.dumpTables("sakila", ["actor"], "https://objectstorage.region.oraclecloud.com/p/secret/n/myTenancy/b/myBucket/o/MyPrefix/")
错误号范围在 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
消息: 写入时出现 errno %d
-
错误号:
52016
;符号: SHERR_DUMP_SD_QUERY_FAILED消息: 无法执行 '%s': %s
-
错误号:
52017
;符号:SHERR_DUMP_SD_COLLATION_DATABASE_ERROR
消息: 处理 select @@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
消息: 运行失败: show create table %s,错误: %s
-
错误号:
52023
;符号:SHERR_DUMP_SD_SHOW_CREATE_TABLE_EMPTY
消息: 表的空创建表: %s
-
错误号:
52024
;符号:SHERR_DUMP_SD_SHOW_FIELDS_FAILED
消息: SHOW FIELDS FROM 在视图上失败: %s
-
错误号:
52025
;符号:SHERR_DUMP_SD_SHOW_KEYS_FAILED
消息: 无法获取表 %s 的键: %s
-
错误号:
52026
;符号:SHERR_DUMP_SD_SHOW_CREATE_VIEW_FAILED
消息: 失败: SHOW CREATE TABLE %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'.'%s' 的 DDL 时出错: %s
-
错误号:
52030
;符号:SHERR_DUMP_SD_VIEW_TEMPORARY_DDL_ERROR
消息: 转储视图 '%s'.'%s' 的临时 DDL 时出错: %s
-
错误号:
52031
;符号:SHERR_DUMP_SD_VIEW_DDL_ERROR
消息: 转储视图 '%s'.'%s' 的 DDL 时出错: %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 目标时,将发生错误 54404(HTTP 404 未找到)。可能会返回以下错误。