MySQL Shell版本说明/ MySQL Shell 8.0.21(2010-07-13,一般可用性)

MySQL Shell 8.0.21的更改(2010-07-13,一般可用性)

AdminAPI添加或更改功能

  • 在元数据中添加了一个新的用户可配置标记框架,以允许使用附加信息标记集群或replicset的特定实例。标记可以是任何ASCII字符并提供名称空间。方法为实例设置标记setInstanceOption ()操作。此外,AdminAPI和MySQL Router 8.0.21支持特定的标记,使您能够将实例标记为隐藏并从路由中删除它们。MySQL路由器然后从路由目的地候选列表中排除这样的标记实例。这使您能够安全地使服务器实例脱机,以便应用程序和MySQL路由器忽略它,例如当您执行维护任务时,如服务器升级或配置更改。要使实例重新联机,请使用setInstanceOption ()MySQL路由器将该实例添加回路由目的地候选列表,并使其对应用程序联机。有关更多信息,请参见元数据标签

AdminAPI bug修复

  • 重要的变化:在此之前,组复制不支持二进制日志校验和,因此InnoDB集群中的实例要求之一是禁用二进制日志校验和binlog_checksum系统变量设置为没有一个.AdminAPI验证的值binlog_checksumdba.checkInstanceConfiguration ()操作,并禁止在未禁用二进制日志校验和的集群中创建集群或向集群添加实例。在8.0.21版本中,组复制已经取消了这一限制,因此InnoDB集群现在允许实例使用二进制日志校验和binlog_checksum设置为CRC32.设置为binlog_checksum不必对所有实例都相同。此外,在8.0.21及更高版本中部署的沙箱不设置binlog_checksum变量,默认为CRC32.(错误# 31329024)

  • 当连接到组的任何成员时,无论该成员是主成员还是从成员,都可以采用Group Replication设置作为集群。然而,当使用辅助成员时,super_read_only在该实例上被错误地禁用。现在,在采用过程中执行的所有操作都是使用组的主要成员完成的。这确保了不会发生GTID不一致super_read_only没有在辅助成员上错误地禁用。(错误# 31238233)

  • 使用clusterAdmin选项创建具有网络掩码作为主机一部分的用户时,将导致在将该用户传递给dba.createCluster ()操作。现在,指定了网络掩码的帐户将被视为带有通配符的帐户,这意味着将跳过进一步检查帐户是否接受来自所有实例的远程连接。(错误# 31018091)

  • 实例只读兼容性检查使用了错误的MySQL版本作为基本版本。跨版本策略被添加到8.0.17版本的Group Replication中,但是检查正在考虑运行8.0.16的实例。这导致了一个误导性的警告消息,表明添加的实例是只读的,与集群兼容,但这不是真的(仅针对实例8.0.16)。该修复确保了只有在目标实例运行8.0.17或更高版本时才执行检查实例是否与集群读兼容。(错误# 30896344)

  • InnoDB集群中实例的最大数量是9,但是AdminAPI没有阻止你向集群中添加更多的实例,导致错误消息不清楚。如果一个集群有9个实例,集群.addInstance阻止您添加更多实例。(错误# 30885157)

  • 将GTID设置兼容的实例添加到需要发放的InnoDB集群或InnoDB复制集中,不应该需要任何交互,因为这被认为是一个安全的操作。以前,在这种情况下,当MySQL Clone被支持时,MySQL Shell仍然会提示选择克隆还是中止操作。现在,操作继续进行克隆,因为这是提供实例的唯一方法。

    请注意

    与InnoDB Cluster或InnoDB replicset相比,空GTID集的实例不会被认为拥有兼容的GTID集。这样的场景被认为是未知的,因此MySQL Shell提示确认应该采取哪些操作。

    (错误# 30884590)

  • 组复制系统变量(以group_replication)不存在,如果插件没有加载。即使系统变量被持久化到实例的选项文件中,它们也不会被加载,除非服务器启动时也加载Group Replication插件。如果在服务器启动后安装了Group Replication插件,则不会重新加载选项文件,因此所有系统变量都具有默认值。运行MySQL 8.0的实例不会有问题,因为设置保存使用。然而,在运行MySQL 5.7版本的实例上,dba.rebootCluster ()如果卸载了组复制插件,操作无法恢复一些系统变量。现在,dba.configureInstance ()方法将组复制系统变量持久化到配置文件loose_前缀。因此,一旦安装了Group Replication插件,在运行5.7的实例上将使用持久化值而不是默认值。(错误# 30768504)

  • updateTopologyMode选项已被弃用,行为集群.rescan ()已更改为在检测到变化时始终更新元数据中的拓扑模式。MySQL Shell现在在检测到此类更改时显示一条消息。(错误# 29330769)

  • cluster.addInstance ()而且cluster.rejoinInstance ()操作没有检查一个实例在添加到集群时有效所需的所有设置。这导致使用在不同操作系统上运行的实例的尝试失败。例如,运行在两个托管在基于Linux的操作系统上的实例上的集群将阻止添加运行Microsoft Windows的实例。现在,cluster.addInstance ()而且cluster.rejoinInstance ()的值将验证实例,并阻止向集群添加或重新加入实例lower_case_table_namesgroup_replication_gtid_assignment_block_sizedefault_table_encryption实例的值与集群上的值不同。(错误# 29255212)

增加或更改的功能

  • MySQL Shell现在有一个实例转储实用程序dumpInstance()和一个模式转储实用程序dumpSchemas()。新的实用程序支持将所有模式或从MySQL服务器实例中选定的模式导出到Oracle Cloud Infrastructure对象存储桶或一组本地文件中。然后,可以使用MySQL Shell的新转储加载实用程序将模式导入MySQL数据库服务DB系统。新的实用程序提供了Oracle云基础设施对象存储流、MySQL数据库服务兼容性检查和修改、多线程并行转储和文件压缩。看到实例转储实用程序、模式转储实用程序和表转储实用程序

  • MySQL Shell的新转储加载实用程序loadDump()支持使用MySQL Shell的新实例转储实用程序和模式转储实用程序将转储的模式导入到MySQL数据库服务DB系统。转储加载实用程序提供来自远程存储的数据流、表或表块的并行加载、进度状态跟踪、恢复和重置功能,以及在转储发生时并发加载的选项。看到转储加载实用程序

  • X DevAPI实现现在支持JSON模式验证,这使您能够确保文档在插入或更新到集合中之前具有一定的结构。要启用或修改JSON模式验证,传入一个JSON对象,比如:

    {验证:{level: "off|strict", schema: "json-schema}}

    在这里,验证是JSON对象,它包含可以用来配置JSON模式验证的键。第一个关键是水平,可以取该值严格的.第二个关键,模式,是一个JSON模式,定义在http://json-schema.org.如果水平键设置为严格的,文档根据json-schema当它们被添加到集合中时,或者当操作更新文档时。如果文档没有验证,服务器将生成一个错误,操作将失败。如果水平键设置为,文档不会根据json-schema

    你可以通过验证JSON对象添加到schema.createCollection ()操作,以启用JSON模式验证,以及schema.modifyCollection ()操作,以更改当前JSON模式验证,例如禁用验证。有关更多信息,请参见JSON模式验证

错误修复

  • MySQL Shell插件现在支持在Python定义的函数中使用**kwargs语法,这些函数是由插件提供的。在函数定义中使用**kwargs可以使用具有任意名称的关键字参数的可变长度列表来调用函数。如果从MySQL Shell的JavaScript模式调用函数,MySQL Shell将命名参数及其值传递到Python函数的字典对象中。MySQL Shell首先尝试将传递给函数的关键字参数与函数定义的任何相应的关键字参数相关联,如果没有,则关键字参数自动包含在**kwargs列表中。作为这种支持的一个副作用,在MySQL Shell中从Python调用的任何带有选项字典作为最后一个参数的API函数都支持使用命名参数定义这些选项。(错误# 31495448)

  • 当切换到SQL模式时,MySQL Shell会查询所连接的服务器的SQL模式,以确定是否存在SQL模式ANSI_QUOTES已启用模式。以前,如果MySQL Shell没有收到响应查询的结果集,它将无法继续。现在将正确处理缺少结果的情况。(Bug #31418783, Bug #99728)

  • 在SQL模式下,当一个查询的结果要以表的格式打印时,MySQL Shell在打印之前会缓冲结果集,以便识别表的正确列宽。对于非常大的结果集,这种做法可能会导致内存不足错误。MySQL Shell现在在格式化和打印表之前为结果集缓冲最多1000行。请注意,如果前1000行之后的一行中的字段包含的值比结果集中该列中先前看到的值长,则该表的格式将对该行进行不对齐。(错误# 31304711)

  • MySQL Shell的SQL模式中的上下文切换已经进行了重构和简化,以消除使用source命令运行脚本文件时可能返回的SQL语法错误。(Bug #31175790, Bug #31197312, Bug #99303)

  • 用于运行MySQL Shell的升级检查工具checkForServerUpgrade()的用户帐户所有特权。用户帐户现在只需要重新加载过程,选择特权。(错误# 31085098)

  • 在Python模式下,MySQL Shell不处理查询返回的字符串中的无效UTF-8序列。(错误# 31083617)

  • MySQL Shell的并行表导入工具importTable()有了一个新的选项characterSet,它指定在导入期间解释输入数据文件时使用的字符集编码。将选项设置为二进制表示在导入期间不进行转换。选项指定的字符集character_set_database解释输入数据文件的系统变量。(错误# 31057707)

  • 在Windows上,如果从名称包含多字节字符的目录中提取和使用MySQL Shell包,MySQL Shell将无法启动。MySQL Shell现在可以正确处理多字节字符的目录名,包括在设置Python、加载提示主题和访问凭据帮助时。(错误# 31056783)

  • MySQL Shell的JSON导入实用程序importJSON()现在处理UTF-8编码的文件,这些文件在开始时包含BOM(字节标记顺序),即序列0xEF 0xBB 0xBF.作为早期版本中的一个解决方案,请删除这个不需要的字节序列。(Bug #30993547, Bug #98836)

  • 当输出格式设置为JSON时,MySQL Shell的升级检查工具checkForServerUpgrade()包含用于检查的描述和文档链接,即使没有发现问题。10bet官方网站与文本输出格式一样,这些内容现在从输出中被省略了。(错误# 30950035)