Documentation Home
MySQL Shell 8.0 发行说明  /  MySQL Shell 8.0.26 的变化(2021-07-20,全面上市)

MySQL Shell 8.0.26 的变化(2021-07-20,全面上市)

弃用和移除说明

  • TLSv1 和 TLSv1.1 连接协议现已弃用,并且在未来的 MySQL Server 版本中将删除对它们的支持。(有关背景信息,请参阅 IETF 备忘录 弃用 TLSv1.0 和 TLSv1.1。)建议使用更安全的 TLSv1.2 和 TLSv1.3 协议建立连接。TLSv1.3 要求 MySQL 服务器和客户端应用程序都使用 OpenSSL 1.1.1 或更高版本进行编译。

    MySQL Shell 的--tls-version命令选项是可用于在 MySQL Shell 启动时配置加密连接的选项之一,如果您明确指定 TLSv1 或 TLSv1.1 作为选项值的一部分,现在会返回弃用警告。

修复了 AdminAPI 错误

  • ONLINE 无法使用该 cluster.removeInstance() 操作删除 InnoDB Cluster 中保持状态的最后一个实例。以前,当尝试这样做时,操作会因不相关的错误而失败,但现在可以正确处理。(缺陷号 32955287)

  • 在可能因组成员身份更改而增加版本的情况下,AdminAPI 操作不再自动更改组复制通信协议版本。自动化操作导致集群更改延迟。相反,在相关的情况下,操作会返回一条消息,通知用户应该执行版本升级。upgradeCommProtocol 操作中添加了一个新选项rescan(),以便管理员可以在选择时升级通信协议版本。(缺陷号 32769580)

修正错误

  • 当加载已经在进行中的转储时,MySQL Shell 的转储加载实用程序util.loadDump()在读取元数据之前将表标记为准备好处理,如果在处理开始之前元数据未完全下载和解析,这可能会导致问题在桌子上。(缺陷号 32934878)

  • 当 MySQL Shell 的转储加载实用程序 util.loadDump()用于加载在 AUTO_INCREMENT 列中包含零值的转储时,该实用程序没有设置 NO_AUTO_VALUE_ON_ZERO SQL 模式,这意味着生成并使用下一个序列号。该行为现已得到纠正。(缺陷号 32926856)

  • MySQL Shell 的实例转储实用程序 util.dumpInstance()、模式转储实用程序 util.dumpSchemas()和表转储实用程序 util.dumpTables()现在报告使用ROW_FORMAT=FIXED该选项时 使用的表的错误,并在指定兼容性修改时从语句 ocimds中删除该子句。(缺陷号 32925914)CREATE TABLEforce_innodb

  • MySQL Shell 现在为不包含 Python 3 或未达到最低支持版本的平台捆绑 Python 3.9.5。之前的捆绑版本是 Python 3.7.7。(缺陷号 32924896)

  • 从 MySQL Shell 8.0.26 开始,您可以使用 MySQL Shell 的实例转储实用程序util.dumpInstance()从 MySQL 5.6 实例转储用户帐户。当转储中包含用户帐户时,需要 SUPER 权限。(缺陷号 32883314)

  • MySQL Shell 的实例转储实用程序util.dumpInstance()、模式转储实用程序util.dumpSchemas()和表转储实用程序返回的错误消息util.dumpTables()已得到增强,可以为错误提供更多上下文,例如涉及的模式或表以及正在执行的步骤。这些实用程序现在还缓存经常使用的值,例如引用的表名。已进行其他增强以优化分块过程。(缺陷号 32850177)

  • MySQL AdminAPI 现在对目标 MySQL 实例使用术语“源”、“副本”和“mta”,这些术语用于系统变量和其他区域,并且用户消息已更新为使用新术语。(缺陷号 32774826)

  • 如果表的主键是有符号整数,MySQL Shell 的实例转储实用程序util.dumpInstance()、模式转储实用程序util.dumpSchemas()和表转储实用程序在分块期间数据范围溢出util.dumpTables()可能导致 MySQL Shell 消耗过多的内存和磁盘空间。(缺陷号 32773468)

  • 以前,当 MySQL Shell 的实例转储实用程序 util.dumpInstance()、模式转储实用程序 util.dumpSchemas()和表转储实用程序 util.dumpTables()dryRun选项设置为的情况下运行时true,因此实际上并没有转储数据,这些实用程序会尝试获取所需的表锁。为避免对数据库造成影响,实用程序现在仅检查用户 ID 是否具有获取锁的适当权限,并根据结果采取行动。报告任何缺少的权限。实用程序获取用户权限的方法也已重构为使用该SHOW GRANTS 语句并支持部分撤销。(缺陷号 32695301)

  • X DevAPI 的 ClassicSession 和 Session 对象有一个新的方法getSocketFd来获取会话的套接字描述符。Session 对象具有新方法 enableNoticesfetchNotice可以获取由 X 协议发布的用于组复制事件(例如视图更改)的异步通知。(缺陷号 32665405)

  • 在 UNIX 系统上,无法从 MySQL Shell 的插件存储库中检索插件列表,因为清单路径是以 Windows 格式指定的。该路径现已更改为 POSIX 模式。(缺陷号 32663889)

  • MySQL Shell 的命令行集成不支持弃用的选项并将它们视为无效。(漏洞#32651899)

  • MySQL Shell 的实例转储实用程序 util.dumpInstance()、模式转储实用程序 util.dumpSchemas()和表转储实用程序 util.dumpTables()使用一种算法将表数据分成块。如果算法使用整数列执行分块,则由删除的行引起的整数序列中的大间隙可能导致范围和块变得越来越大,直到失去分块的好处。该算法现已得到改进,可以使用更多的迭代次数,并在结果不符合预期时进行额外检查。(错误号 32602325)

  • 当 Oracle Cloud Infrastructure 操作出现问题时,MySQL Shell 的日志现在会记录更详细的信息,包括目标 URL、请求和响应标头以及响应数据。如果目标 URL 是预验证请求 (PAR),则敏感组件会在日志文件中被屏蔽。

    消息日志记录级别的更改未在正确级别激活消息日志记录的问题也已得到修复。(缺陷号 32593125)

  • MySQL Shell 检索使用引号作为一系列单独标记的 SQL 标识符。(缺陷号 32532347)

  • MySQL Shell 的实例转储实用程序 util.dumpInstance()、模式转储实用程序 util.dumpSchemas()和表转储实用程序 util.dumpTables()使用多个线程从 MySQL 实例转储数据,每个线程都使用自己的会话。如果其中一个线程启动缓慢,同时在主转储线程中抛出异常,则当该线程尝试访问主转储线程的会话时会发生分段错误。这些实用程序现在即使在抛出异常后也能保持主转储线程的会话可用,并且仅在实用程序结束时将其删除。(缺陷号 32528110)

  • 在 MySQL Shell 的 JavaScript 模式下,如果使用let关键字定义了一个变量但没有正确初始化,它就会处于无法访问和初始化的状态。MySQL Shell 现在允许使用let不同的值重新定义使用关键字定义的变量,这可用于更正问题。使用关键字定义的变量const不能以这种方式重新定义。(缺陷号 32470621)

  • 当 MySQL Shell 接收的整数值被转换为以 JavaScript 模式表示时,大于 2 ^ 31 – 1 的值发生舍入错误。用于转换的数据类型已更改,以便值达到 JavaScript 接受的限制语言可以正确转换。(缺陷号 32423886)

  • MySQL Shell 的 Python 模式实现了它自己的列表数组包装器。以前,该isinstance 函数不会将这些识别为list 对象类型。实现已更改为从 Python 继承,list以便 isinstance函数正确运行。MySQL Shell 将数据存储在数组包装器中而不是基类中。由于这个事实,以及数据在 MySQL Shell 的 Python 和 JavaScript 模式之间共享的事实,只有使用列表来存储基本数据类型和 MySQL Shell 全局对象才是安全的。(缺陷号 32220514)

  • MySQL Shell 的 Python 模式现在为使用多线程的程序提供全面支持。使用新函数 shell.createContext,可以隔离线程的输出、日志记录和用户输入,并且可以为每个线程指定一个单独的日志文件。(缺陷号 32101215)

  • 无法在 Mac OS X 上安装 MySQL Shell,因为软件包未签名。(缺陷 #103855,缺陷 #32943928)