MySQL壳API8.0.28
MySQL产品的统一开发接口
功能
跑龙套

全局对象,它将各种工具(如升级检查器和JSON导入)分组。更多…

功能

未定义的 checkForServerUpgrade(ConnectionData,字典选项)
在指定的MySQL服务器上执行一系列测试,以检查升级过程是否成功。更多…
未定义的 importJson(字符串文件,字典选项)
使用X协议会话将JSON文档从文件导入到MySQL服务器的集合或表中。更多…
未定义的 importTable(列表文件,字典选项)
在并行连接中使用LOAD DATA LOCAL INFILE调用将存储在文件中的表转储导入到目标表。更多…
未定义的 loadDump(字符串url,字典选项)
加载MySQL创建的数据库转储壳牌更多…
未定义的 exportTable(字符串表,字符串输出,字典选项)
将指定的表导出到数据转储文件。更多…
未定义的 dumpTables(字符串模式,列表表,字符串输出,字典选项)
将指定的表或视图从给定模式转储到目标目录中的文件。更多…
未定义的 dumpSchemas(列表模式,字符串输出,字典选项)
将指定的模式转储到输出目录中的文件。更多…
未定义的 dumpInstance(字符串outputUrl,字典选项)
将整个数据库转储到输出目录中的文件中。更多…

详细描述

全局对象,它将各种工具(如升级检查器和JSON导入)分组。

函数的文档10bet官方网站

checkForServerUpgrade ()

未定义checkForServerUpgrade ConnectionData connectionData,
字典 选项

在指定的MySQL服务器上执行一系列测试,以检查升级过程是否成功。

参数
connectionData 可选连接到要检查的服务器的数据
选项 用于修改工具行为的可选选项字典。

如果没有指定connectionData,工具将尝试使用当前会话中的数据建立连接。

工具行为可以通过以下选项进行修改:

  • configPath—MySQL服务器配置文件的完整路径。
  • outputFormat - value可以是TEXT(默认)或JSON。
  • targetVersion -将检查升级到的版本(default=" MYSH_VERSION ")
  • 密码—连接密码。

连接数据可以用以下格式指定:

  • 一个URI字符串
  • 一个带有连接选项的字典

一个基本URI字符串有以下格式:

[方案:/ /][用户(密码):@]<主机(港口):|套接字>[/模式][?选项=价值选择=值…]

连接选项

以下选项在URI或字典中使用都是有效的:

  • SSL -mode:连接中使用的SSL模式。
  • ssl-ca: PEM格式的X509证书颁发机构文件路径。
  • ssl-capath: X509证书颁发机构PEM格式文件所在目录的路径。
  • SSL -cert: PEM格式的SSL公钥证书文件路径。
  • SSL -key: PEM格式的SSL私钥文件路径。
  • ssl-crl:包含证书吊销列表的文件路径。
  • ssl-crlpath:证书吊销列表文件所在目录的路径。
  • ssl-cipher:使用TLSv1.2以下TLS协议的连接所允许的加密密码列表。
  • tls-version:允许安全连接的协议列表。
  • TLS -ciphers:要使用的TLS v1.3密码列表。
  • auth方法:身份验证方法。
  • get-server-public-key:向服务器请求基于RSA密钥对的密码交换所需的公钥。当使用禁用SSL模式的经典MySQL会话连接MySQL 8.0服务器时使用。
  • server-public-key-path:一个文件的路径名,该文件包含服务器用于基于RSA密钥对的密码交换所需的公钥的客户端副本。当使用禁用SSL模式的经典MySQL会话连接MySQL 8.0服务器时使用。
  • connect-timeout:连接超时时间,以毫秒为单位。如果没有提供,将使用默认的10秒超时。指定值为0将禁用连接超时。
  • compression:在客户/服务器协议中启用压缩。
  • compression-algorithms:在服务器/客户端协议中使用压缩算法。
  • compression-level:在客户端/服务器协议中使用此压缩级别。
  • connection-attributes:要在PERFORMANCE_SCHEMA连接属性表中注册的连接属性列表。
  • LOCAL - INFILE:启用/禁用LOAD DATA LOCAL INFILE。
  • net-buffer-length:用于TCP/IP和套接字通信的缓冲区大小。

当在URI中定义这些选项时,它们的值必须是URL编码的。

当使用字典时,以下选项也有效:

基础连接选项

  • uri: uri字符串。
  • 方案:连接时使用的协议。
  • user:连接时使用的MySQL用户名。
  • dbUser:用户别名。
  • Password:连接时使用的密码。
  • dbPassword:与password相同。
  • host:连接中要使用的主机名或IP地址。
  • port: TCP连接使用的端口号。
  • Socket:通过Unix套接字连接时使用的套接字文件名。
  • Schema:连接完成后要选择的模式。

SSH隧道连接选项

  • ssh:需要ssh隧道时使用的SSHURI字符串。
  • SSH -password: SSH连接时使用的密码。
  • SSH -identity-file: SSH连接时使用的密钥文件。
  • SSH -identity-file-password: SSH私钥文件密码。
  • SSH -config-file: SSH配置文件,默认值为shell.options[' SSH . configfile ']
注意
dbUser和dbPassword选项将在未来的版本中删除。
连接选项优先于连接选项uri中指定的选项

连接选项不区分大小写,只能定义一次。

如果一个选项被定义了不止一次,就会产生一个错误。

有关连接数据格式的详细说明,请参阅连接数据

importJson ()

未定义importJson 字符串 文件,
字典 选项

使用X协议会话将JSON文档从文件导入到MySQL服务器的集合或表中。

参数
文件 路径JSON文档文件
选项 带有导入选项的可选字典

这个函数从文件中读取标准JSON文档,但是,它也支持将使用MongoDB扩展JSON(严格模式)表示的BSON数据类型转换为MySQL值。

选项字典支持以下选项:

  • Schema:字符串-目标模式名称。
  • 集合:字符串-数据将被导入的集合的名称。
  • Table: string -将导入数据的表的名称。
  • tableColumn: string(默认值:"doc") -目标表中存放导入JSON文档的列的名称。
  • convertBsonTypes: bool(默认值:false) -启用BSON数据类型转换。
  • convertBsonOid: bool(默认值:convertBsonTypes的值)——启用BSON ObjectId值的转换。
  • extractOidTime: string(默认值:空)——基于ObjectID时间戳创建一个新字段。只有当convertBsonOid被启用时才有效。

以下选项仅在启用convertBsonTypes时有效。它们都是布尔值标志。ignoreegexoptions默认启用,其余默认禁用。

  • ignoreDate:禁用BSON日期值的转换
  • ignoreTimestamp:禁用BSON Timestamp值的转换
  • ignoregex:禁用BSON正则表达式值的转换。
  • ignoreBinary:禁用BSON BinData值转换。
  • decimalAsDouble:将BSON Decimal值作为双值导入。
  • ignoreRegexOptions:在处理regex BSON值时忽略正则表达式选项。此选项仅在禁用ignoregex时有效。

如果没有提供模式,将使用全局会话上的活动模式(如果设置了)。

集合选项和表选项不能组合。如果没有提供,则使用不带扩展名的文件的基名作为目标集合名。

如果目标集合或表不存在,则创建它们,否则将数据插入到现有集合或表中。

tableColumn意味着使用表选项,不能与集合选项组合。

数据类型处理。

如果只启用convertBsonOid,则不会对BSON数据类型的其余部分进行转换。

要使用extractOidTime,应该将其设置为将用于向主文档插入额外字段的名称。新字段的值将是从ObjectID值获得的时间戳。注意,这只会对与主文档的'_id'字段相关联的ObjectID值进行处理。

NumberLong和NumberInt值将被转换为整数值。

除非启用decimalAsDouble,否则NumberDecimal值将作为字符串导入。

正则表达式值将被转换为包含正则表达式的字符串。正则表达式选项将被忽略,除非禁用ignoreRegexOptions。当ignoreRegexOptions被禁用时,正则表达式将被转换为://

抛出ArgumentError时:

  • 选项名称无效
  • 必需的选项没有设置,不能推导
  • 壳牌是否使用X协议连接到MySQL服务器
  • 模式未提供,全局会话上没有活动模式
  • 集合和表都被指定了

抛出LogicError时:

  • 路径to JSON文档不存在或不是一个文件

抛出RuntimeError时:

  • 模式不存在
  • MySQL服务器返回错误

抛出InvalidJson时:

  • JSON文档格式不正确

importTable ()

未定义importTable 列表 文件,
字典 选项

在并行连接中使用LOAD DATA LOCAL INFILE调用将存储在文件中的表转储导入到目标表。

参数
文件 路径或包含用户数据的文件路径列表。路径Name可以包含通配符'*'和/或'?'的glob模式。所有选中的文件必须是同一目标表的块。
选项 带有导入选项的可选字典

文件名的方案部分包含有关传输后端的信息。受支持的传输后端是:文件:/ /,http://,https://.如果省略了文件名的方案部分,则文件:/ /将选择传输后端。

支持文件名格式:

  • / /文件/路径-路径到本地或远程(例如在OCI对象存储)可访问的文件或目录
  • file:///path/to/file-路径到本地可访问的文件或目录
  • http [s]: / / host.domain[:港口]/道路/ /文件-通过HTTP访问的远程文件的位置(仅importTable())

如果osBucketName选项,path参数必须指定OCI (Oracle Cloud Infrastructure)对象存储桶中的普通路径。

OCI配置文件通过OCI。概要文件和“公盟”。configFile全局shell选项,可以分别用ociProfile和ociConfigFile重写。

选项字典:

  • 模式: string(默认:当前shell活动模式)-目标模式名称
  • 表格: string(默认:没有扩展名的文件名)-目标表的名称
  • :字符串和/或整数数组(默认:空数组)-该选项接受列名数组作为其值。列名的顺序指示如何将数据文件列与表列匹配。使用非负整数“i”将列值捕获到用户变量@i中。使用用户变量,decodeColumns选项使您能够在将结果分配给列之前对其值执行预处理转换。
  • fieldsTerminatedBy: string(默认:"\t") -该选项与LOAD DATA INFILE对应的子句具有相同的含义。
  • fieldsEnclosedBy: char(默认:")-该选项与LOAD DATA INFILE对应的子句具有相同的含义。
  • fieldsEscapedBy: char(默认:'\')-该选项与LOAD DATA INFILE对应的子句具有相同的含义。
  • fieldsOptionallyEnclosed: bool(默认值:false) -如果输入值不一定包含在由fieldsEnclosedBy选择。如果所有字段都由指定的字符引用,则设置为falsefieldsEnclosedBy选择。
  • linesTerminatedBy: string(默认值:"\n") -该选项与LOAD DATA INFILE对应的子句具有相同的含义。例如,要导入行以回车/换行对结束的Windows文件,使用——lines-terminated-by="\r\n"。(根据命令解释器的转义约定,可能需要双反斜杠。)参见第13.2.7节“LOAD DATA INFILE语法”。
  • replaceDuplicates: bool(默认值:false) -如果为true,与现有行具有相同主键或唯一索引值的输入行将被替换,否则将跳过输入行。
  • 线程: int(默认值:8)-使用N个线程向服务器发送文件块。
  • bytesPerChunk: string(最小值:"131072",默认:"50M") -在单个LOAD DATA调用中发送bytesPerChunk(+字节到行末尾)。单位后缀,k -代表千字节(n * 1'000字节),M -代表兆字节(n * 1'000'000字节),G -代表千兆字节(n * 1'000'000字节),bytesPerChunk="2k" - ~2千字节的数据块将发送到MySQL服务器。不能用于多个文件导入。
  • maxBytesPerTransaction: string(默认值:empty) -指定每个LOAD data语句可以从转储数据文件加载的最大字节数。如果数据文件的内容大小大于此选项值,则每个文件将执行多个LOAD data语句。如果未显式指定此选项,则将禁用转储数据文件分块。使用这个选项的值小于或等于全局变量“max_binlog_cache_size”来缓解“MySQL Error 1197 (HY000): Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage”。单位后缀:k(千字节),M(兆字节),G(千兆字节)。最小值:4096。
  • maxRate: string(默认值:"0")-将每个线程的数据发送吞吐量限制为maxRate,单位为字节/秒。maxRate="0" -无限制。单位后缀,k -表示千字节(n * 1'000字节),M -表示兆字节(n * 1'000'000字节),G -表示千兆字节(n * 1'000'000字节),maxRate="2k" -限制为每秒2千字节。
  • showProgress: bool(默认值:如果stdout是tty则为true,否则为false) -启用或禁用导入进度信息。
  • skipRows: int(默认值:0)-跳过文件中数据的前n行。可以使用此选项跳过包含列名的初始标题行。
  • 方言: enum(默认值:"default") -设置字段和行选项,匹配特定的数据文件格式。可以用作基本方言,并自定义fieldsTerminatedBy, fieldsEnclosedBy, fieldsoptionallyenclose, fieldsEscapedBy和linesTerminatedBy选项。必须为以下值之一:default、csv、tsv、json或csv-unix。
  • decodeColumns: map(默认值:未设置)—列名和要应用于加载数据的SQL表达式之间的映射。通过整数在“列”中捕获的值可作为用户变量“@i”,其中“i”是该整数。需要设置“列”。
  • characterSet: string(默认:未设置)-使用此字符集编码解释输入文件中的信息。字符集设置为"binary"表示“不转换”。如果没有设置,服务器将使用character_set_database系统变量指示的字符集来解释文件中的信息。

OCI对象存储选项

  • osBucketName: string(默认:未设置)-要使用的OCI对象存储桶的名称。该桶必须已经存在。
  • osNamespace: string(默认:未设置)-指定桶所在的命名空间,如果未指定,将使用OCI配置中的租户id获取。
  • ociConfigFile: string(默认:未设置)-覆盖oci。configFile shell选项,指定OCI配置文件的路径。
  • ociProfile: string(默认:未设置)-覆盖oci。配置文件外壳选项,以指定要使用的OCI配置文件的名称。

方言预先定义以下选项集合fieldsTerminatedBy (FT), fieldsEnclosedBy (FE), fieldsoptionallyenclose (FOE), fieldsEscapedBy (FESC)和linesTerminatedBy (LT),以以下方式:

  • 默认值:没有引号、制表符分隔、lf行结束符。(LT = <低频>,FESC = ' \ '英尺= <选项卡>,FE = <空>,敌人= false)
  • Csv:可选引号,逗号分隔,CRLF行结束符。(LT=, FESC='\', FT=",", FE='"', FOE=true)
  • Tsv:可选引号,制表符分隔,CRLF行结束符。(LT = < CR > <如果>,FESC = ' \ '英尺= <选项卡>,FE = '“',敌人= true)
  • json:每行一个json文档。(LT = <低频>,FESC = <空>,《金融时报》= <低频>,FE = <空>,敌人= false)
  • Csv-unix:全引号,逗号分隔,lf行结尾。(LT=, FESC='\', FT=",", FE='"', FOE=false)

如果模式如果未提供,则将使用全局会话上的活动模式(如果设置了)。

如果输入值不一定包含在fieldsEnclosedBy,设置fieldsOptionallyEnclosed为true。

如果指定的分隔符与另一个分隔符相同或其前缀相同,则LOAD DATA INFILE无法正确解释输入。

在全局会话中设置的连接选项,如压缩、ssl-mode等在并行连接中使用。

每个并行连接设置以下会话变量:

  • 设置sql_mode = ";清除SQL模式
  • 设置名字吗?;如果用户提供,则设置为characterSet选项。
  • SET unique_checks = 0
  • 设置foreign_key_checks = 0
  • 设置会话事务隔离级别读未提交

方言输入数据示例:

  • 默认值:
    120.1000foo说:“Where is my bar?”<如果>
    2-12.5000baz说:“Where is my char?”<如果>
  • csv:
    1,20.1000,”foo说:“我的酒吧在哪里?\ " < CR > <如果>
    2,-12.5000,”baz说:“我的 char在哪里?\ " < CR > <如果>
  • tsv:
    120.1000"foo说:"Where is my bar?\ " < CR > <如果>
    2-12.5000"baz说:"Where is my char?\ " < CR > <如果>
  • json:
    {"id_int": 1, "value_float": 20.1000, "text_text": "foo说:\"Where is my
    酒吧?\ "} <低频>
    {"id_int": 2, "value_float": -12.5000, "text_text": "baz said: \"Where is my
    \ u000b字符?\ "} <低频>
  • csv-unix:
    “1”,“20.1000”,”foo说:“我的酒吧在哪里?”\ " <低频>
    "2","-12.5000","baz说:"我的 char在哪里?\ " <低频>

的例子decodeColumns用法:

  • 预处理column2:
    util.importTable (“file.txt”, {
    表:“t1”,
    列:[“column1”1),
    decodeColumns: {“column2”“@1 / 100”
    });
    等价于:
    加载数据本地文件“file.txt”
    INTO TABLE ' t1 ' (column1, @var1)
    SET ' column2 ' = @var/100;
  • 跳过列:
    util.importTable (“file.txt”, {
    表:“t1”,
    列:[“column1”,1“column2”2,“column3”
    });
    等价于:
    加载数据本地文件“file.txt”
    INTO TABLE ' t1 ' (columnn1, @1, column2, @2, column3);
  • 为列生成值:
    util.importTable (“file.txt”, {
    表:“t1”,
    列:[1,2],
    decodeColumns: {
    “一个”“@1”,
    “b”“@2”,
    “和”“@1 + @2”,
    “mul”“@1 * @2”,
    “战俘”“战俘(@1 @2)”
    });
    等价于:
    加载数据本地文件“file.txt”
    INTO TABLE ' t1 ' (@1, @2)
    a = @1,
    b = @2,
    ' sum ' = @1 + @2,
    ' mul ' = @1 * @2,
    ' pow ' = pow (@1, @2);

loadDump ()

未定义loadDump 字符串 url,
字典 选项

加载MySQL创建的数据库转储壳牌

参数
url 定义要加载的转储的位置
选项 带有加载选项的可选字典

根据转储的创建方式,url标识转储的位置,在某些情况下标识转储的访问方法,即使用预认证请求(PAR)加载转储。允许的值:

  • / /文件夹/路径-从本地存储加载转储文件
  • / oci /桶/路径—使用OCI配置文件从OCI Object Storage加载转储文件
  • PAR到转储清单-从OCI对象存储中使用occiparmanifest选项创建的转储文件
  • PAR到转储位置—使用单个PAR从OCI对象存储加载转储

loadDump()将从指定的路径加载转储文件。它透明地处理压缩文件,并在从远程存储(目前是HTTP和OCI对象存储)加载时直接流数据。如果设置了'waitDumpTimeout'选项,它将动态加载转储,在转储器产生数据块时加载表数据块。

表数据将使用配置的线程数(默认为4)并行加载。如果转储是在启用表块的情况下创建的,那么每个表可以使用多个线程。数据加载是跨线程调度的,其方式是尽量最大化并行性,同时最小化从并发加载到同一个表的锁争用。如果表比线程多,则每个线程将加载不同的表,首先加载较大的表。如果线程比表多,那么来自较大表的块将按比例分配更多的线程。

LOAD DATA LOCAL INFILE用于加载表数据,因此,MySQL全局设置'local_infile'必须启用。

恢复

load命令将加载过程的每个步骤的进度信息存储到一个文件中,包括成功完成和中断/失败的步骤。如果该文件已经存在,它的内容将被用来跳过已经完成的步骤,并重试那些失败或尚未开始的步骤。

恢复时,已经开始加载但没有完成的表块将再次加载。重复的行将被服务器丢弃。没有惟一键的表在恢复加载之前会被截断。

重要提示:恢复操作假定在失败和重试之间未对部分加载的数据进行任何更改。在外部更改之后恢复具有未定义的行为,并可能导致数据丢失。

进度状态文件的默认名称是load-progress.。Json,并被写入与转储相同的位置。如果指定了'progressFile',进度将被写入给定路径的本地文件。将其设置为“将禁用进度跟踪和恢复”。

如果启用了'resetProgress'选项,则转储到目标服务器的以前加载尝试的进度信息将被丢弃,加载将重新启动。您可以使用此选项从头重试加载整个转储。但是,对数据库所做的更改不会被还原,因此应该先手动删除以前加载的对象。

选项字典:

  • analyzeTables: "off", "on", "histogram"(默认:off) -如果'on',一旦加载,对所有表执行ANALYZE TABLE。如果设置为“histogram”,则只分析转储中存储有直方图信息的表。即使所有的'load'选项都被禁用了,这个选项也可以被使用。
  • backgroundThreads: int(默认不设置)-用于获取元数据和DDL文件内容的额外线程数。如果未设置,加载器将使用线程选项(在本地转储时),或者在非本地转储时(在非本地转储时)使用该值的四倍。
  • characterSet: string(默认从dump获取)—覆盖用于加载转储数据的字符集。默认情况下,将使用转储时使用的相同字符集(如果转储时未设置utf8mb4)。
  • createInvisiblePKs: bool(默认从dump获取)-自动为没有主键的表创建一个不可见的主键。默认情况下,如果使用create_invisible_pks兼容性选项,否则为false。要求服务器8.0.24或更新版本。
  • deferTableIndexes: "off", "fulltext", "all"(默认值:fulltext) -如果是"all",则除PRIMARY外的"所有"索引的创建将推迟到表数据加载后,这在许多情况下可以减少加载时间。如果为"fulltext",则只有全文索引将被延迟。
  • dryRun: bool(默认值:false) -扫描转储并打印将要执行的所有内容,而不是实际执行。
  • excludeEvents:字符串数组(默认不设置)-跳过从转储加载指定的事件。字符串的格式模式事件,在需要时使用反勾字符引用。
  • excludeRoutines:字符串数组(默认不设置)-跳过从转储加载指定的例程。字符串的格式模式例程,在需要时使用反勾字符引用。
  • excludeSchemas:字符串数组(默认不设置)-跳过从转储加载指定的模式。
  • excludeTables:字符串数组(默认不设置)-跳过从转储加载指定的表。字符串的格式模式表格,在需要时使用反勾字符引用。
  • excludeTriggers:字符串数组(默认不设置)-跳过从转储加载指定的触发器。字符串的格式模式表格(来自指定表的所有触发器)或模式表格触发(单个触发器),在需要时使用反勾字符引用。
  • excludeUsers: array of strings(默认不设置)-跳过从转储加载指定用户。每个用户的格式为'user_name'[@'host']。如果未指定主机,则排除所有具有给定用户名的帐户。
  • ignoreExistingObjects: bool(默认为false) -加载转储,即使它包含已经存在于目标数据库中的对象。
  • ignoreVersion: bool(默认为false) -加载转储,即使创建它的服务器的主版本号与将要加载它的版本号不同。
  • includeEvents:字符串数组(默认不设置)-只从转储中加载指定的事件。字符串的格式模式事件,在需要时使用反勾字符引用。默认情况下,包含所有事件。
  • includeRoutines:字符串数组(默认不设置)-只从转储中加载指定的例程。字符串的格式模式例程,在需要时使用反勾字符引用。默认情况下,包含所有例程。
  • includeSchemas:字符串数组(默认不设置)-只从转储中加载指定的模式。默认情况下,包含所有模式。
  • includeTables:字符串数组(默认不设置)-只从转储中加载指定的表。字符串的格式模式表格,在需要时使用反勾字符引用。默认情况下,包括所有模式中的所有表。
  • includeTriggers:字符串数组(默认不设置)-只从转储中加载指定的触发器。字符串的格式模式表格(来自指定表的所有触发器)或模式表格触发(单个触发器),在需要时使用反勾字符引用。默认情况下,包括所有触发器。
  • includeUsers:字符串数组(默认不设置)-只从转储中加载指定的用户。每个用户的格式为'user_name'[@'host']。如果未指定主机,则包含所有具有给定用户名的帐户。默认情况下,包含所有用户。
  • loadData: bool(默认值:true) -从转储中加载表数据。
  • loadDdl: bool(默认值:true) -执行转储中的DDL/SQL脚本。
  • loadIndexes: bool(默认值:true) -与' deferTableIndexes '一起使用来控制是否应该在加载结束时重新创建二级索引。在分别加载DDL和数据时非常有用。
  • loadUsers: bool(默认值:false) -为转储中包含的用户帐户、角色和授权执行SQL脚本。注意:针对当前用户的语句将被跳过。
  • maxBytesPerTransaction: string(默认从dump获取)-指定每个LOAD data语句可以从转储数据文件加载的最大字节数。支持单位后缀:k(千字节),M(兆字节),G(千兆字节)。最小值:4096。如果未显式指定此选项,则bytesPerChunk使用Dump选项,但仅在数据大小大于1.5 * bytesPerChunk
  • progressFile: path(默认值:load-progress..progress)
    • 在给定的本地文件路径中存储加载进度信息。
  • resetProgress: bool(默认值:false) -丢弃之前加载到目标服务器的进度信息,并重新加载整个转储。
  • 模式: string(默认不设置)-将转储加载到给定的模式。此选项只能在加载util.dumpTables()函数创建的转储时使用。
  • showMetadata: bool(默认值:false)—显示转储文件中的元数据信息,即二进制日志文件名和位置。
  • showProgress: bool(默认值:如果stdout是tty则为true,否则为false) -启用或禁用导入进度信息。
  • skipBinlog: bool(默认值:false)—禁用加载器使用的MySQL会话的二进制日志(设置sql_log_bin=0)。
  • 线程: int(默认值:4)-用于导入表数据的线程数。
  • updateGtidSet: "off", "replace", "append"(默认:off) -如果设置为'off'以外的值,则更新GTID_PURGED,方法是替换其内容或将转储中存在的gtid设置附加到它。
  • waitDumpTimeout: float(默认值:0)-在转储仍在创建时加载它。一旦处理了所有上传的表,该命令将等待更多的数据、转储被标记为完成或经过给定的超时(以秒为单位)。<= 0禁用等待。
  • osBucketName: string(默认:未设置)-使用指定的OCI桶作为转储的位置。
  • osNamespace: string(默认:未设置)-指定桶所在的命名空间,如果未指定,将使用OCI配置中的租户id获取。
  • ociConfigFile: string(默认:未设置)—使用指定的OCI配置文件,而不是默认位置的配置文件。
  • ociProfile: string(默认:未设置)—使用指定的OCI配置文件代替默认的OCI配置文件。

全局会话中设置的连接选项,如压缩、ssl-mode等由加载会话继承。

例子:

util.loadDump (“sakila_dump”
util.loadDump (“mysql /销售”, {
“osBucketName”“mybucket”,// OCI对象存储桶
“waitDumpTimeout”: 1800//等待新数据长达30分钟
})

使用预验证请求(PAR)加载转储

当在OCI Object Storage中创建转储时,可以使用单个预认证请求加载它,该请求可以访问转储的位置。该标准的要求包括:

  • 允许对象读取
  • 使对象清单

给定位于桶根的转储和为桶创建的PAR,可以通过提供PAR作为url参数来加载转储:

例子:

转储位置:根目录“测试”
util.loadDump (
“https://objectstorage。* .oraclecloud.com/p/ * / n /主/ b /测试/ o / ', {
“progressFile”“load_progress.txt”

给定转储文件位于bucket中的某个文件夹中,并为给定文件夹创建了PAR,通过提供PAR和作为url参数的前缀,可以加载转储文件:

例子:

倾倒地点:文件夹“转储”“测试”
PAR创建使用“转储/”前缀。
util.loadDump (
“https://objectstorage。* .oraclecloud.com/p/ * / n /主/ b /测试/ o /转储/ ', {
“progressFile”“load_progress.txt”

在上述两种情况下,加载都是使用纯HTTP GET请求完成的,因此progressFile选项是强制性的,应该是到本地文件的路径。

仍然支持通过PAR创建可加载转储的遗留方法,这是通过在创建转储时使用ociParManifest选项来完成的。当启用此功能时,清单文件“@.manifest.”将被用作使用PAR将转储加载到该文件的入口点。

当使用Manifest PAR加载转储时,progressFile选项是强制性的,并且可以将加载进度存储在本地文件系统或转储位置上。

要将进度存储在转储位置上,创建一个ObjectReadWrite PAR到所需的进度文件(它不需要存在),它应该位于“@.manifest.”文件的相同位置上。json文件。最后,在progressFile选项上指定PAR URL。

例子:

转储位置:根目录“测试”桶:
util.loadDump (
“https://objectstorage。* .oraclecloud.com/p/ * / n /主/ b /测试/ o / @.manifest.json ',
“progressFile”“load_progress.txt”

exportTable ()

未定义exportTable 字符串 表格,
字符串 outputUrl,
字典 选项

将指定的表导出到数据转储文件。

参数
表格 要导出的表的名称。
outputUrl 存储数据的目标文件。
选项 带有导出选项的可选字典。

的价值表格参数的形式应为表格模式表格,在需要时使用反勾字符引用。如果省略schema,则全局上的活动模式壳牌使用会话。如果没有,则引发异常。

outputUrl指定转储的存储位置。

默认情况下,使用本地文件,在本例中outputUrl可以加前缀文件:/ /计划。如果给出了相对路径,则根据相对于当前工作目录计算绝对路径。输出文件的父目录必须存在。如果输出文件存在,它将被覆盖。输出文件创建时具有以下访问权限(在支持这些权限的操作系统上):rw-r——

支持以下选项:

  • fieldsTerminatedBy: string(默认值:"\t"),fieldsEnclosedBy: char(默认值:"),fieldsEscapedBy: char(默认值:'\'),linesTerminatedBy: string(默认值:"\n") -这些选项与相应的SELECT子句具有相同的含义…到输出文件。如需更多信息,请使用\ ?SQL语法/选择,(需要一个会话)。
  • fieldsOptionallyEnclosed: bool(默认值:false) -如果输入值不一定包含在由fieldsEnclosedBy选择。如果所有字段都由指定的字符引用,则设置为falsefieldsEnclosedBy选择。
  • 方言: enum(默认值:"default") -设置字段和行选项,匹配特定的数据文件格式。可以作为基础方言和自定义用fieldsTerminatedBy,fieldsEnclosedBy,fieldsOptionallyEnclosed,fieldsEscapedBy而且linesTerminatedBy选项。必须为“default”、“csv”、“tsv”或“csv-unix”。
  • maxRate: string(默认值:"0")-将数据读取吞吐量限制为最大速率,以每个线程每秒字节数衡量。使用maxRate="0"设置不限制。
  • showProgress: bool(如果stdout是TTY设备,默认为true,否则为false) -启用或禁用转储进度信息。
  • defaultCharacterSet: string(默认:"utf8mb4") -用于转储的字符集。
  • 压缩: string(默认:"none") -写入数据转储文件时使用的压缩,"none", "gzip", "zstd"之一。
  • osBucketName: string(默认:未设置)-使用指定的OCI桶作为转储的位置。
  • osNamespace: string(默认:未设置)-指定桶所在的命名空间,如果未指定,将使用OCI配置中的租户id获取。
  • ociConfigFile: string(默认:未设置)—使用指定的OCI配置文件,而不是默认位置的配置文件。
  • ociProfile: string(默认:未设置)—使用指定的OCI配置文件代替默认的OCI配置文件。

需求

  • MySQL Server 5.7或更新版本。
  • 上传到OCI桶的文件大小限制为1.2 TiB。
  • 具有不安全的以文本形式存储的数据类型的列(即BLOB)被转换为Base64,因此这类列的大小不能超过大约0.74 *max_allowed_packet字节,如在目标服务器上通过该系统变量配置的。

细节

该操作将表数据转储写入指定的用户文件中。

需要一个开放的、全局的壳牌会话,并使用其连接选项(如压缩、ssl模式等)来建立其他连接。

选项

方言option预先定义了选项集合fieldsTerminatedBy (FT), fieldsEnclosedBy (FE), fieldsoptionallyenclose (FOE), fieldsEscapedBy (FESC)和linesTerminatedBy (LT),方式如下:

  • 默认:没有引号、制表符分隔、LF行结束符。(LT = <低频>,FESC = ' \ '英尺= <选项卡>,FE = <空>,敌人= false)
  • csv:可选引号,逗号分隔,CRLF行结束符。(LT=, FESC='\', FT=",", FE='"', FOE=true)
  • tsv:可选引号,制表符分隔,CRLF行结束符。(LT = < CR > <如果>,FESC = ' \ '英尺= <选项卡>,FE = '“',敌人= true)
  • 全引号,逗号分隔,LF行结束。(LT=, FESC='\', FT=",", FE='"', FOE=false)

maxRate选项支持单位后缀:

  • K -表示千字节,
  • M -表示兆字节,
  • G -代表千兆字节,

即maxRate="2k" -限制吞吐量为每秒2000字节。

转储到OCI对象存储的桶中

如果osBucketName选项时,转储文件存储在指定的OCI桶中,使用本地OCI配置文件建立连接。目录结构在对象名称中模拟。

osNamespace,ociConfigFile而且ociProfile选项不能使用osBucketName选项设置为空字符串。

osNamespace选项将覆盖基于从本地OCI配置文件获得的租户ID的OCI名称空间。

异常
ArgumentError 以下场景:
  • 如果任何输入参数包含无效值。
RuntimeError 以下场景:
  • 如果没有开放的全局会话。
  • 如果创建或写入输出文件失败。

dumpTables ()

未定义dumpTables 字符串 模式,
列表 ,
字符串 outputUrl,
字典 选项

将指定的表或视图从给定模式转储到目标目录中的文件。

参数
模式 包含要转储的表/视图的模式的名称。
要转储的表/视图的列表。
outputUrl 存储转储文件的目标目录。
选项 带有转储选项的可选字典。

参数不能为空列表。

outputUrl指定转储的存储位置。

默认情况下,使用本地目录,在本例中outputUrl可以加前缀文件:/ /计划。如果给出了相对路径,则根据相对于当前工作目录计算绝对路径。如果输出目录不存在,但其父目录存在,则创建输出目录。如果输出目录存在,它必须为空。所有目录创建时具有以下访问权限(在支持这些权限的操作系统上):rwxr-x——.所有文件创建时具有以下访问权限(在支持它们的操作系统上):rw-r——

支持以下选项:

  • 所有: bool(默认值:false) -转储指定模式中的所有视图和表。
  • ocimds: bool(默认值:false) -启用检查MySQL数据库服务(MDS)的兼容性
  • 兼容性:字符串列表(默认:空)-在写入转储文件时应用MySQL数据库服务兼容性修改。支持值:create_invisible_pks、force_innodb、ignore_missing_pks、skip_invalid_accounts、strip_definers、strip_restricted_grants、strip_tablespaces。
  • 触发器: bool(默认值:true) -为每个转储表包含触发器。
  • excludeTriggers:字符串列表(默认值:空)-从转储中排除的触发器列表,格式为模式表格(来自指定表的所有触发器)或模式表格触发(个人触发)。
  • includeTriggers:字符串列表(默认:空)-转储中包含的触发器列表,格式为模式表格(来自指定表的所有触发器)或模式表格触发(个人触发)。
  • tzUtc: bool(默认值:true) -将TIMESTAMP数据转换为UTC。
  • 一致的: bool(默认值:true)—启用或禁用一致性数据转储。
  • ddlOnly: bool(默认值:false)—只从数据库中转储DDL。
  • dataOnly: bool(默认值:false)—只转储数据库中的数据。
  • dryRun: bool(默认值:false) -打印将要转储的内容的信息,但不转储任何内容。
  • 组块: bool(默认值:true) -启用表的分块。
  • bytesPerChunk: string(默认值:"64M") -设置写入每个块文件的平均估计字节数,启用组块
  • 线程: int(默认:4)-使用N个线程从服务器转储数据块。
  • maxRate: string(默认值:"0")-将数据读取吞吐量限制为最大速率,以每个线程每秒字节数衡量。使用maxRate="0"设置不限制。
  • showProgress: bool(如果stdout是TTY设备,默认为true,否则为false) -启用或禁用转储进度信息。
  • defaultCharacterSet: string(默认:"utf8mb4") -用于转储的字符集。
  • 压缩: string(默认:"zstd") -写入数据转储文件时使用的压缩,"none", "gzip", "zstd"之一。
  • osBucketName: string(默认:未设置)-使用指定的OCI桶作为转储的位置。
  • osNamespace: string(默认:未设置)-指定桶所在的命名空间,如果未指定,将使用OCI配置中的租户id获取。
  • ociConfigFile: string(默认:未设置)—使用指定的OCI配置文件,而不是默认位置的配置文件。
  • ociProfile: string(默认:未设置)—使用指定的OCI配置文件代替默认的OCI配置文件。
  • ociParManifest: bool(默认:未设置)—启用在执行转储操作时生成PAR清单。
  • ociParExpireTime: string(默认:未设置)—允许定义在启用ociParManifest时生成的par的过期时间。

需求

  • MySQL Server 5.7或更新版本。
  • 上传到OCI桶的文件大小限制为1.2 TiB。
  • 具有不安全的以文本形式存储的数据类型的列(即BLOB)被转换为Base64,因此这类列的大小不能超过大约0.74 *max_allowed_packet字节,如在目标服务器上通过该系统变量配置的。
  • 架构对象名称必须使用latin1或utf8字符集。
  • 只有使用InnoDB存储引擎的表才能保证转储时数据一致。
  • 要转储的视图和触发器不能使用限定名引用其他视图或表。
  • 由于util.dumpTables()函数不转储例程,因此被转储对象引用的任何例程在加载转储时都应该已经存在。

细节

该操作为转储的每个表和视图写入SQL文件,以及一些全局SQL文件。关于源模式的信息也会被保存,这意味着当使用util.loadDump()函数加载转储时,它会自动重新创建。方法将转储加载到另一个现有模式中模式选择。

表数据转储被写入TSV文件,可选地将它们分割为多个块文件。

需要一个开放的、全局的壳牌会话,并使用其连接选项(如压缩、ssl模式等)来建立其他连接。

选项

如果所有选项设置为true参数设置为空数组时,将转储指定模式中的所有视图和表。如果参数未设置为空数组,则抛出异常。

所给出的名字排除{对象}包括{对象}选项应该是有效的MySQL标识符,在需要时使用反勾字符。

如果排除{对象}包括{对象}选项包含不存在的对象,或属于不存在的模式的对象,则忽略该选项。

tzUtc选项允许转储TIMESTAMP数据时,服务器有数据在不同的时区或数据正在不同的时区服务器之间移动。

如果一致的选项设置为true时,全局读锁使用用读锁刷新表语句后,所有线程与服务器建立连接并使用以下方法启动事务:

  • 设置会话事务隔离级别可重复读取
  • 使用一致的快照启动事务

一旦所有线程启动事务,实例将被锁定以进行备份,并释放全局读锁。

如果用于转储的帐户没有足够的特权来执行FLUSH TABLES,则将使用LOCK TABLES作为备用。除了mysql模式中的DDL和GRANT相关表外,所有被转储的表都将被临时锁定。

ddlOnly而且dataOnly选项不能同时设置为true。

组块选项使每个表的数据被分割并写入多个块文件。如果将此选项设置为false,则将表数据写入单个文件。

如果组块选项设置为真正的,如果转储表中没有主键或唯一索引,则无法进行分块处理,此时将显示警告并关闭该表的分块处理。

的值线程选项必须是正数。

这两个bytesPerChunk而且maxRate选项支持单位后缀:

  • K -表示千字节,
  • M -表示兆字节,
  • G -代表千兆字节,

即maxRate="2k" -限制吞吐量为每秒2000字节。

的值bytesPerChunkOption不能小于“128k”。

MySQL数据库服务兼容性

MySQL数据库服务有一些与安全相关的限制,这些限制在常规的MySQL实例中是不存在的。为了更容易地将现有的数据库加载到服务中,MySQL中的dump命令壳牌具有检测潜在问题的选项,并且在某些情况下,可以自动调整模式定义以使其符合。

ocimds选项,当设置为true时,将对大多数这些问题执行模式检查,并在发现任何问题时中止转储。loadDump()命令也只允许加载启用了“ocimds”选项创建的转储文件。

发现的一些问题ocimds选项可能需要您手动更改数据库模式,然后才能将其加载到MySQL数据库服务中。然而,兼容性选项可用于自动修改转储的模式SQL脚本,从而解决其中一些兼容性问题。您可以将以下一个或多个值传递给“compatibility”选项。

create_invisible_pks-每个没有主键的表在加载转储时都会创建一个主键。以下主键被添加到表中:

' my_row_id ' BIGINT UNSIGNED AUTO_INCREMENT不可见主键

在MySQL发布的时候壳牌8.0.24,使用此值创建的转储不能与高可用性MySQL数据库服务实例的入站复制一起使用。与ignore_missing_pks价值。

force_innodb—MySQL数据库服务要求使用InnoDB存储引擎。该选项将修改使用不兼容存储引擎的CREATE TABLE语句的ENGINE=子句,并将其替换为InnoDB。它还会删除ROW_FORMAT=FIXED选项,因为InnoDB存储引擎不支持它。

ignore_missing_pks—忽略由没有主键的表引起的错误。用此值创建的转储不能在高可用性MySQL数据库服务实例中使用。与create_invisible_pks价值。

skip_invalid_accounts—跳过没有密码或使用MySQL数据库服务不支持的认证方法(插件)的帐户。

strip_definers-从视图、例程、事件和触发器中剥离"DEFINER=account"子句。MySQL数据库服务需要特殊的权限来使用定义器(而不是加载模式的用户)创建这些对象。通过剥离DEFINER子句,这些对象将用默认定义器创建。另外,视图和例程的SQL SECURITY子句将从DEFINER更改为INVOKER。如果缺少该特性,将添加SQL SECURITY INVOKER子句。这确保应用的是查询或调用这些权限的帐户的访问权限,而不是创建它们的用户。对于大多数用户来说,这应该足够了,但是如果数据库安全模型要求视图和例程比它们的调用程序拥有更多的特权,那么您将需要在加载模式之前手动修改它。

有关DEFINER和SQL SECURITY的详细信息,请参阅MySQL手册。

strip_restricted_grants—MySQL数据库服务中限制了某些权限。尝试创建授予这些特权的用户将会失败,因此该选项允许删除转储GRANT语句的这些特权。

strip_tablespaces—MySQL数据库服务中表空间有一些限制。如果您希望在默认表空间中创建表,该选项将从CREATE TABLE语句中删除TABLESPACE=选项。

此外,当DDL脚本发生ocimds选项启用:

  • 数据目录,索引目录而且加密选项创建表语句将被注释掉。

在MySQL发布的时候壳牌为了在高可用性的MySQL数据库服务实例中使用入站复制,源服务器上的所有表都需要有主键。这需要在运行转储之前手动修复。从MySQL 8.0.23开始,不可见列可以用来添加主键,而不改变模式兼容性,更多信息请参见:https://dev.10bet靠谱mysql.com/doc/refman/en/invisible-columns.html

为了使用高可用性MySQL数据库服务实例,MDS服务器上的所有表都需要有主键。方法可以自动修复此问题create_invisible_pks兼容的价值。

有关限制和兼容性的更多信息,请参阅MySQL数据库服务文档。10bet官方网站

转储到OCI对象存储的桶中

如果osBucketName选项时,转储文件存储在指定的OCI桶中,使用本地OCI配置文件建立连接。目录结构在对象名称中模拟。

osNamespace,ociConfigFile而且ociProfile选项不能使用osBucketName选项设置为空字符串。

osNamespace选项将覆盖基于从本地OCI配置文件获得的租户ID的OCI名称空间。

启用使用预身份验证请求的转储加载

loadDump实用程序支持使用预验证请求(PAR)加载转储。最简单的方法是通过提供一个PAR到转储在桶中的位置,这个PAR必须用以下权限创建:

  • 允许对象读取
  • 使对象清单

生成的URL可用于加载转储,参见\?loadDump了解更多细节。

另一种不需要OCI配置文件就可以加载转储的方法是执行启用ociParManifest选项的转储操作,这将导致转储操作自动为转储中的每个文件生成PAR,并将它们作为转储的一部分存储在名为“@.manifest.json”的文件中。清单会随着转储操作的进行而更新。

使用具有读取清单权限的PAR是使用PAR加载转储的另一个选项。

ociParManifest选项不能使用,如果osBucketName没有设置。

在创建par时,需要一个过期时间,它可以通过ociParExpireTime选择。如果不使用该选项,将使用预定义的过期时间,相当于转储操作开始后的一个星期。分配给这个选项的值应该符合RFC3339。

ociParExpireTime选项不能使用ociParManifest选项未启用。

异常
ArgumentError 以下场景:
  • 如果任何输入参数包含无效值。
RuntimeError 以下场景:
  • 如果没有开放的全局会话。
  • 如果创建输出目录失败。
  • 如果创建或写入输出文件失败。

dumpSchemas ()

未定义dumpSchemas 列表 模式,
字符串 outputUrl,
字典 选项

将指定的模式转储到输出目录中的文件。

参数
模式 要转储的模式列表。
outputUrl 存储转储文件的目标目录。
选项 带有转储选项的可选字典。

模式参数不能为空列表。

outputUrl指定转储的存储位置。

默认情况下,使用本地目录,在本例中outputUrl可以加前缀文件:/ /计划。如果给出了相对路径,则根据相对于当前工作目录计算绝对路径。如果输出目录不存在,但其父目录存在,则创建输出目录。如果输出目录存在,它必须为空。所有目录创建时具有以下访问权限(在支持这些权限的操作系统上):rwxr-x——.所有文件创建时具有以下访问权限(在支持它们的操作系统上):rw-r——

支持以下选项:

  • excludeTables:字符串列表(默认为空)-从转储中排除的表或视图的列表,格式为模式表格
  • includeTables:字符串列表(默认为空)-转储中包含的表或视图的列表,格式为模式表格
  • ocimds: bool(默认值:false) -启用检查MySQL数据库服务(MDS)的兼容性
  • 兼容性:字符串列表(默认:空)-在写入转储文件时应用MySQL数据库服务兼容性修改。支持值:create_invisible_pks、force_innodb、ignore_missing_pks、skip_invalid_accounts、strip_definers、strip_restricted_grants、strip_tablespaces。
  • 事件: bool(默认值:true) -包括来自每个转储模式的事件。
  • excludeEvents:字符串列表(默认为空)-从转储中排除的事件列表,格式为模式事件
  • includeEvents:字符串列表(默认:空)-转储中包含的事件列表,格式为模式事件
  • 例程: bool(默认值:true) -包含每个转储模式的函数和存储过程。
  • excludeRoutines:字符串列表(默认:空)-从转储中排除的例程列表,格式为模式例程
  • includeRoutines:字符串列表(默认:空)-转储中包含的例程列表,格式为模式例程
  • 触发器: bool(默认值:true) -为每个转储表包含触发器。
  • excludeTriggers:字符串列表(默认值:空)-从转储中排除的触发器列表,格式为模式表格(来自指定表的所有触发器)或模式表格触发(个人触发)。
  • includeTriggers:字符串列表(默认:空)-转储中包含的触发器列表,格式为模式表格(来自指定表的所有触发器)或模式表格触发(个人触发)。
  • tzUtc: bool(默认值:true) -将TIMESTAMP数据转换为UTC。
  • 一致的: bool(默认值:true)—启用或禁用一致性数据转储。
  • ddlOnly: bool(默认值:false)—只从数据库中转储DDL。
  • dataOnly: bool(默认值:false)—只转储数据库中的数据。
  • dryRun: bool(默认值:false) -打印将要转储的内容的信息,但不转储任何内容。
  • 组块: bool(默认值:true) -启用表的分块。
  • bytesPerChunk: string(默认值:"64M") -设置写入每个块文件的平均估计字节数,启用组块
  • 线程: int(默认:4)-使用N个线程从服务器转储数据块。
  • maxRate: string(默认值:"0")-将数据读取吞吐量限制为最大速率,以每个线程每秒字节数衡量。使用maxRate="0"设置不限制。
  • showProgress: bool(如果stdout是TTY设备,默认为true,否则为false) -启用或禁用转储进度信息。
  • defaultCharacterSet: string(默认:"utf8mb4") -用于转储的字符集。
  • 压缩: string(默认:"zstd") -写入数据转储文件时使用的压缩,"none", "gzip", "zstd"之一。
  • osBucketName: string(默认:未设置)-使用指定的OCI桶作为转储的位置。
  • osNamespace: string(默认:未设置)-指定桶所在的命名空间,如果未指定,将使用OCI配置中的租户id获取。
  • ociConfigFile: string(默认:未设置)—使用指定的OCI配置文件,而不是默认位置的配置文件。
  • ociProfile: string(默认:未设置)—使用指定的OCI配置文件代替默认的OCI配置文件。
  • ociParManifest: bool(默认:未设置)—启用在执行转储操作时生成PAR清单。
  • ociParExpireTime: string(默认:未设置)—允许定义在启用ociParManifest时生成的par的过期时间。

需求

  • MySQL Server 5.7或更新版本。
  • 上传到OCI桶的文件大小限制为1.2 TiB。
  • 具有不安全的以文本形式存储的数据类型的列(即BLOB)被转换为Base64,因此这类列的大小不能超过大约0.74 *max_allowed_packet字节,如在目标服务器上通过该系统变量配置的。
  • 架构对象名称必须使用latin1或utf8字符集。
  • 只有使用InnoDB存储引擎的表才能保证转储时数据一致。

细节

该操作为转储的每个模式、表和视图写入SQL文件,以及一些全局SQL文件。

表数据转储被写入TSV文件,可选地将它们分割为多个块文件。

需要一个开放的、全局的壳牌会话,并使用其连接选项(如压缩、ssl模式等)来建立其他连接。

无法为以下表创建数据转储:

  • mysql.apply_status
  • mysql.general_log
  • mysql.schema
  • mysql.slow_log

选项

所给出的名字排除{对象}包括{对象}选项应该是有效的MySQL标识符,在需要时使用反勾字符。

如果排除{对象}包括{对象}选项包含不存在的对象,或属于不存在的模式的对象,则忽略该选项。

tzUtc选项允许转储TIMESTAMP数据时,服务器有数据在不同的时区或数据正在不同的时区服务器之间移动。

如果一致的选项设置为true时,全局读锁使用用读锁刷新表语句后,所有线程与服务器建立连接并使用以下方法启动事务:

  • 设置会话事务隔离级别可重复读取
  • 使用一致的快照启动事务

一旦所有线程启动事务,实例将被锁定以进行备份,并释放全局读锁。

如果用于转储的帐户没有足够的特权来执行FLUSH TABLES,则将使用LOCK TABLES作为备用。除了mysql模式中的DDL和GRANT相关表外,所有被转储的表都将被临时锁定。

ddlOnly而且dataOnly选项不能同时设置为true。

组块选项使每个表的数据被分割并写入多个块文件。如果将此选项设置为false,则将表数据写入单个文件。

如果组块选项设置为真正的,如果转储表中没有主键或唯一索引,则无法进行分块处理,此时将显示警告并关闭该表的分块处理。

的值线程选项必须是正数。

这两个bytesPerChunk而且maxRate选项支持单位后缀:

  • K -表示千字节,
  • M -表示兆字节,
  • G -代表千兆字节,

即maxRate="2k" -限制吞吐量为每秒2000字节。

的值bytesPerChunkOption不能小于“128k”。

MySQL数据库服务兼容性

MySQL数据库服务有一些与安全相关的限制,这些限制在常规的MySQL实例中是不存在的。为了更容易地将现有的数据库加载到服务中,MySQL中的dump命令壳牌具有检测潜在问题的选项,并且在某些情况下,可以自动调整模式定义以使其符合。

ocimds选项,当设置为true时,将对大多数这些问题执行模式检查,并在发现任何问题时中止转储。loadDump()命令也只允许加载启用了“ocimds”选项创建的转储文件。

发现的一些问题ocimds选项可能需要您手动更改数据库模式,然后才能将其加载到MySQL数据库服务中。然而,兼容性选项可用于自动修改转储的模式SQL脚本,从而解决其中一些兼容性问题。您可以将以下一个或多个值传递给“compatibility”选项。

create_invisible_pks-每个没有主键的表在加载转储时都会创建一个主键。以下主键被添加到表中:

' my_row_id ' BIGINT UNSIGNED AUTO_INCREMENT不可见主键

在MySQL发布的时候壳牌8.0.24,使用此值创建的转储不能与高可用性MySQL数据库服务实例的入站复制一起使用。与ignore_missing_pks价值。

force_innodb—MySQL数据库服务要求使用InnoDB存储引擎。该选项将修改使用不兼容存储引擎的CREATE TABLE语句的ENGINE=子句,并将其替换为InnoDB。它还会删除ROW_FORMAT=FIXED选项,因为InnoDB存储引擎不支持它。

ignore_missing_pks—忽略由没有主键的表引起的错误。用此值创建的转储不能在高可用性MySQL数据库服务实例中使用。与create_invisible_pks价值。

skip_invalid_accounts—跳过没有密码或使用MySQL数据库服务不支持的认证方法(插件)的帐户。

strip_definers-从视图、例程、事件和触发器中剥离"DEFINER=account"子句。MySQL数据库服务需要特殊的权限来使用定义器(而不是加载模式的用户)创建这些对象。通过剥离DEFINER子句,这些对象将用默认定义器创建。另外,视图和例程的SQL SECURITY子句将从DEFINER更改为INVOKER。如果缺少该特性,将添加SQL SECURITY INVOKER子句。这确保应用的是查询或调用这些权限的帐户的访问权限,而不是创建它们的用户。对于大多数用户来说,这应该足够了,但是如果数据库安全模型要求视图和例程比它们的调用程序拥有更多的特权,那么您将需要在加载模式之前手动修改它。

有关DEFINER和SQL SECURITY的详细信息,请参阅MySQL手册。

strip_restricted_grants—MySQL数据库服务中限制了某些权限。尝试创建授予这些特权的用户将会失败,因此该选项允许删除转储GRANT语句的这些特权。

strip_tablespaces—MySQL数据库服务中表空间有一些限制。如果您希望在默认表空间中创建表,该选项将从CREATE TABLE语句中删除TABLESPACE=选项。

此外,当DDL脚本发生ocimds选项启用:

  • 数据目录,索引目录而且加密选项创建表语句将被注释掉。

在MySQL发布的时候壳牌为了在高可用性的MySQL数据库服务实例中使用入站复制,源服务器上的所有表都需要有主键。这需要在运行转储之前手动修复。从MySQL 8.0.23开始,不可见列可以用来添加主键,而不改变模式兼容性,更多信息请参见:https://dev.10bet靠谱mysql.com/doc/refman/en/invisible-columns.html

为了使用高可用性MySQL数据库服务实例,MDS服务器上的所有表都需要有主键。方法可以自动修复此问题create_invisible_pks兼容的价值。

有关限制和兼容性的更多信息,请参阅MySQL数据库服务文档。10bet官方网站

转储到OCI对象存储的桶中

如果osBucketName选项时,转储文件存储在指定的OCI桶中,使用本地OCI配置文件建立连接。目录结构在对象名称中模拟。

osNamespace,ociConfigFile而且ociProfile选项不能使用osBucketName选项设置为空字符串。

osNamespace选项将覆盖基于从本地OCI配置文件获得的租户ID的OCI名称空间。

启用使用预身份验证请求的转储加载

loadDump实用程序支持使用预验证请求(PAR)加载转储。最简单的方法是通过提供一个PAR到转储在桶中的位置,这个PAR必须用以下权限创建:

  • 允许对象读取
  • 使对象清单

生成的URL可用于加载转储,参见\?loadDump了解更多细节。

另一种不需要OCI配置文件就可以加载转储的方法是执行启用ociParManifest选项的转储操作,这将导致转储操作自动为转储中的每个文件生成PAR,并将它们作为转储的一部分存储在名为“@.manifest.json”的文件中。清单会随着转储操作的进行而更新。

使用具有读取清单权限的PAR是使用PAR加载转储的另一个选项。

ociParManifest选项不能使用,如果osBucketName没有设置。

在创建par时,需要一个过期时间,它可以通过ociParExpireTime选择。如果不使用该选项,将使用预定义的过期时间,相当于转储操作开始后的一个星期。分配给这个选项的值应该符合RFC3339。

ociParExpireTime选项不能使用ociParManifest选项未启用。

异常
ArgumentError 以下场景:
  • 如果任何输入参数包含无效值。
RuntimeError 以下场景:
  • 如果没有开放的全局会话。
  • 如果创建输出目录失败。
  • 如果创建或写入输出文件失败。

dumpInstance ()

未定义dumpInstance 字符串 outputUrl,
字典 选项

将整个数据库转储到输出目录中的文件中。

参数
outputUrl 存储转储文件的目标目录。
选项 带有转储选项的可选字典。

outputUrl指定转储的存储位置。

默认情况下,使用本地目录,在本例中outputUrl可以加前缀文件:/ /计划。如果给出了相对路径,则根据相对于当前工作目录计算绝对路径。如果输出目录不存在,但其父目录存在,则创建输出目录。如果输出目录存在,它必须为空。所有目录创建时具有以下访问权限(在支持这些权限的操作系统上):rwxr-x——.所有文件创建时具有以下访问权限(在支持它们的操作系统上):rw-r——

支持以下选项:

  • excludeSchemas:字符串列表(默认:空)-从转储中排除的模式列表。
  • includeSchemas:字符串列表(默认:空)-转储中包含的模式列表。
  • excludeTables:字符串列表(默认为空)-从转储中排除的表或视图的列表,格式为模式表格
  • includeTables:字符串列表(默认为空)-转储中包含的表或视图的列表,格式为模式表格
  • ocimds: bool(默认值:false) -启用检查MySQL数据库服务(MDS)的兼容性
  • 兼容性:字符串列表(默认:空)-在写入转储文件时应用MySQL数据库服务兼容性修改。支持值:create_invisible_pks、force_innodb、ignore_missing_pks、skip_invalid_accounts、strip_definers、strip_restricted_grants、strip_tablespaces。
  • 事件: bool(默认值:true) -包括来自每个转储模式的事件。
  • excludeEvents:字符串列表(默认为空)-从转储中排除的事件列表,格式为模式事件
  • includeEvents:字符串列表(默认:空)-转储中包含的事件列表,格式为模式事件
  • 例程: bool(默认值:true) -包含每个转储模式的函数和存储过程。
  • excludeRoutines:字符串列表(默认:空)-从转储中排除的例程列表,格式为模式例程
  • includeRoutines:字符串列表(默认:空)-转储中包含的例程列表,格式为模式例程
  • 用户: bool(默认值:true) -在转储文件中包含用户、角色和授权。
  • excludeUsers: array of strings(默认不设置)—跳过转储指定用户。每个用户的格式为'user_name'[@'host']。如果未指定主机,则排除所有具有给定用户名的帐户。
  • includeUsers: array of strings(默认不设置)-只转储指定的用户。每个用户的格式为'user_name'[@'host']。如果未指定主机,则包含所有具有给定用户名的帐户。默认情况下,包含所有用户。
  • 触发器: bool(默认值:true) -为每个转储表包含触发器。
  • excludeTriggers:字符串列表(默认值:空)-从转储中排除的触发器列表,格式为模式表格(来自指定表的所有触发器)或模式表格触发(个人触发)。
  • includeTriggers:字符串列表(默认:空)-转储中包含的触发器列表,格式为模式表格(来自指定表的所有触发器)或模式表格触发(个人触发)。
  • tzUtc: bool(默认值:true) -将TIMESTAMP数据转换为UTC。
  • 一致的: bool(默认值:true)—启用或禁用一致性数据转储。
  • ddlOnly: bool(默认值:false)—只从数据库中转储DDL。
  • dataOnly: bool(默认值:false)—只转储数据库中的数据。
  • dryRun: bool(默认值:false) -打印将要转储的内容的信息,但不转储任何内容。
  • 组块: bool(默认值:true) -启用表的分块。
  • bytesPerChunk: string(默认值:"64M") -设置写入每个块文件的平均估计字节数,启用组块
  • 线程: int(默认:4)-使用N个线程从服务器转储数据块。
  • maxRate: string(默认值:"0")-将数据读取吞吐量限制为最大速率,以每个线程每秒字节数衡量。使用maxRate="0"设置不限制。
  • showProgress: bool(如果stdout是TTY设备,默认为true,否则为false) -启用或禁用转储进度信息。
  • defaultCharacterSet: string(默认:"utf8mb4") -用于转储的字符集。
  • 压缩: string(默认:"zstd") -写入数据转储文件时使用的压缩,"none", "gzip", "zstd"之一。
  • osBucketName: string(默认:未设置)-使用指定的OCI桶作为转储的位置。
  • osNamespace: string(默认:未设置)-指定桶所在的命名空间,如果未指定,将使用OCI配置中的租户id获取。
  • ociConfigFile: string(默认:未设置)—使用指定的OCI配置文件,而不是默认位置的配置文件。
  • ociProfile: string(默认:未设置)—使用指定的OCI配置文件代替默认的OCI配置文件。
  • ociParManifest: bool(默认:未设置)—启用在执行转储操作时生成PAR清单。
  • ociParExpireTime: string(默认:未设置)—允许定义在启用ociParManifest时生成的par的过期时间。

需求

  • MySQL Server 5.7或更新版本。
  • 上传到OCI桶的文件大小限制为1.2 TiB。
  • 具有不安全的以文本形式存储的数据类型的列(即BLOB)被转换为Base64,因此这类列的大小不能超过大约0.74 *max_allowed_packet字节,如在目标服务器上通过该系统变量配置的。
  • 架构对象名称必须使用latin1或utf8字符集。
  • 只有使用InnoDB存储引擎的表才能保证转储时数据一致。

细节

该操作为转储的每个模式、表和视图写入SQL文件,以及一些全局SQL文件。

表数据转储被写入TSV文件,可选地将它们分割为多个块文件。

需要一个开放的、全局的壳牌会话,并使用其连接选项(如压缩、ssl模式等)来建立其他连接。

无法为以下表创建数据转储:

  • mysql.apply_status
  • mysql.general_log
  • mysql.schema
  • mysql.slow_log

不能为以下模式创建转储:

  • information_schema,
  • mysql,
  • ndbinfo,
  • performance_schema,
  • sys。

选项

如果excludeSchemasincludeSchemas选项包含转储中未包含或不存在的模式,则忽略该模式。

所给出的名字排除{对象}包括{对象}选项应该是有效的MySQL标识符,在需要时使用反勾字符。

如果排除{对象}包括{对象}选项包含不存在的对象,或属于不存在的模式的对象,则忽略该选项。

tzUtc选项允许转储TIMESTAMP数据时,服务器有数据在不同的时区或数据正在不同的时区服务器之间移动。

如果一致的选项设置为true时,全局读锁使用用读锁刷新表语句后,所有线程与服务器建立连接并使用以下方法启动事务:

  • 设置会话事务隔离级别可重复读取
  • 使用一致的快照启动事务

一旦所有线程启动事务,实例将被锁定以进行备份,并释放全局读锁。

如果用于转储的帐户没有足够的特权来执行FLUSH TABLES,则将使用LOCK TABLES作为备用。除了mysql模式中的DDL和GRANT相关表外,所有被转储的表都将被临时锁定。

ddlOnly而且dataOnly选项不能同时设置为true。

组块选项使每个表的数据被分割并写入多个块文件。如果将此选项设置为false,则将表数据写入单个文件。

如果组块选项设置为真正的,如果转储表中没有主键或唯一索引,则无法进行分块处理,此时将显示警告并关闭该表的分块处理。

的值线程选项必须是正数。

这两个bytesPerChunk而且maxRate选项支持单位后缀:

  • K -表示千字节,
  • M -表示兆字节,
  • G -代表千兆字节,

即maxRate="2k" -限制吞吐量为每秒2000字节。

的值bytesPerChunkOption不能小于“128k”。

MySQL数据库服务兼容性

MySQL数据库服务有一些与安全相关的限制,这些限制在常规的MySQL实例中是不存在的。为了更容易地将现有的数据库加载到服务中,MySQL中的dump命令壳牌具有检测潜在问题的选项,并且在某些情况下,可以自动调整模式定义以使其符合。

ocimds选项,当设置为true时,将对大多数这些问题执行模式检查,并在发现任何问题时中止转储。loadDump()命令也只允许加载启用了“ocimds”选项创建的转储文件。

发现的一些问题ocimds选项可能需要您手动更改数据库模式,然后才能将其加载到MySQL数据库服务中。然而,兼容性选项可用于自动修改转储的模式SQL脚本,从而解决其中一些兼容性问题。您可以将以下一个或多个值传递给“compatibility”选项。

create_invisible_pks-每个没有主键的表在加载转储时都会创建一个主键。以下主键被添加到表中:

' my_row_id ' BIGINT UNSIGNED AUTO_INCREMENT不可见主键

在MySQL发布的时候壳牌8.0.24,使用此值创建的转储不能与高可用性MySQL数据库服务实例的入站复制一起使用。与ignore_missing_pks价值。

force_innodb—MySQL数据库服务要求使用InnoDB存储引擎。该选项将修改使用不兼容存储引擎的CREATE TABLE语句的ENGINE=子句,并将其替换为InnoDB。它还会删除ROW_FORMAT=FIXED选项,因为InnoDB存储引擎不支持它。

ignore_missing_pks—忽略由没有主键的表引起的错误。用此值创建的转储不能在高可用性MySQL数据库服务实例中使用。与create_invisible_pks价值。

skip_invalid_accounts—跳过没有密码或使用MySQL数据库服务不支持的认证方法(插件)的帐户。

strip_definers-从视图、例程、事件和触发器中剥离"DEFINER=account"子句。MySQL数据库服务需要特殊的权限来使用定义器(而不是加载模式的用户)创建这些对象。通过剥离DEFINER子句,这些对象将用默认定义器创建。另外,视图和例程的SQL SECURITY子句将从DEFINER更改为INVOKER。如果缺少该特性,将添加SQL SECURITY INVOKER子句。这确保应用的是查询或调用这些权限的帐户的访问权限,而不是创建它们的用户。对于大多数用户来说,这应该足够了,但是如果数据库安全模型要求视图和例程比它们的调用程序拥有更多的特权,那么您将需要在加载模式之前手动修改它。

有关DEFINER和SQL SECURITY的详细信息,请参阅MySQL手册。

strip_restricted_grants—MySQL数据库服务中限制了某些权限。尝试创建授予这些特权的用户将会失败,因此该选项允许删除转储GRANT语句的这些特权。

strip_tablespaces—MySQL数据库服务中表空间有一些限制。如果您希望在默认表空间中创建表,该选项将从CREATE TABLE语句中删除TABLESPACE=选项。

此外,当DDL脚本发生ocimds选项启用:

  • 数据目录,索引目录而且加密选项创建表语句将被注释掉。

在MySQL发布的时候壳牌为了在高可用性的MySQL数据库服务实例中使用入站复制,源服务器上的所有表都需要有主键。这需要在运行转储之前手动修复。从MySQL 8.0.23开始,不可见列可以用来添加主键,而不改变模式兼容性,更多信息请参见:https://dev.10bet靠谱mysql.com/doc/refman/en/invisible-columns.html

为了使用高可用性MySQL数据库服务实例,MDS服务器上的所有表都需要有主键。方法可以自动修复此问题create_invisible_pks兼容的价值。

有关限制和兼容性的更多信息,请参阅MySQL数据库服务文档。10bet官方网站

转储到OCI对象存储的桶中

如果osBucketName选项时,转储文件存储在指定的OCI桶中,使用本地OCI配置文件建立连接。目录结构在对象名称中模拟。

osNamespace,ociConfigFile而且ociProfile选项不能使用osBucketName选项设置为空字符串。

osNamespace选项将覆盖基于从本地OCI配置文件获得的租户ID的OCI名称空间。

启用使用预身份验证请求的转储加载

loadDump实用程序支持使用预验证请求(PAR)加载转储。最简单的方法是通过提供一个PAR到转储在桶中的位置,这个PAR必须用以下权限创建:

  • 允许对象读取
  • 使对象清单

生成的URL可用于加载转储,参见\?loadDump了解更多细节。

另一种不需要OCI配置文件就可以加载转储的方法是执行启用ociParManifest选项的转储操作,这将导致转储操作自动为转储中的每个文件生成PAR,并将它们作为转储的一部分存储在名为“@.manifest.json”的文件中。清单会随着转储操作的进行而更新。

使用具有读取清单权限的PAR是使用PAR加载转储的另一个选项。

ociParManifest选项不能使用,如果osBucketName没有设置。

在创建par时,需要一个过期时间,它可以通过ociParExpireTime选择。如果不使用该选项,将使用预定义的过期时间,相当于转储操作开始后的一个星期。分配给这个选项的值应该符合RFC3339。

ociParExpireTime选项不能使用ociParManifest选项未启用。

异常
ArgumentError 以下场景:
  • 如果任何输入参数包含无效值。
RuntimeError 以下场景:
  • 如果没有开放的全局会话。
  • 如果创建输出目录失败。
  • 如果创建或写入输出文件失败。