Documentation Home
MySQL Shell 8.0 发行说明  /  MySQL Shell 8.0.12 的变化(2018-07-27,全面上市)

MySQL Shell 8.0.12 的变化(2018-07-27,全面上市)

AdminAPI 添加或更改的功能

  • Cluster.removeInstance() 命令已得到改进,具有以下更改:

    • 添加了一个新的交互选项以启用或禁用命令的交互模式。以交互模式显示的输出已得到改进,显示更多有用的信息。在交互模式下,系统会提示您继续删除(或不删除)实例以防无法访问。

    • 该操作现在确保从所有集群成员及其自身的元数据中删除该实例。这仅适用于ONLINE会员。

    • 一个新的全局选项dba.gtidWaitTimeout 可用于定义等待事务 (GTID) 在 AdminAPI 命令需要时应用的超时。dba.gtidWaitTimeout如果在等待集群事务被申请 cluster.removeInstance() 和(或未定义)时达到定义的超时值, force: false则会发出错误并取消操作。然后操作继续并且 force: true不会产生错误。

    参考资料:另请参阅:Bug #27817894。

  • 使用ipWhitelist定义哪些服务器可以访问集群时,内部用户帐户与白名单不匹配。现在 AdminAPIipWhitelist对内部管理帐户应用相同的过滤逻辑。

    参考资料:另请参阅:Bug #26140094、Bug #28165891。

修复了 AdminAPI 错误

  • cluster.forceQuorumUsingPartitionOf() 操作 group_replication_force_members 在目标实例上设置变量以强制新的组成员资格并恢复仲裁,但它没有在过程结束时重置变量的值。因此,如果稍后需要在目标实例上重新启动 Group Replication,它会失败,因为 group_replication_force_members 仍然设置了变量。现在,该 group_replication_force_members 变量在操作结束时重置为空字符串 cluster.forceQuorumUsingPartitionOf() 。(缺陷号 28064621)

  • MySQL Shell 显示的一些消息显示不存在的 MySQL 服务器版本。(漏洞#27924694)

  • 可以在运行不兼容版本的 MySQL 的服务器实例上使用 AdminAPI 操作。(漏洞#27765769)

  • 变量的设置bind_address 不再是必需的。(漏洞#27765484)

  • 创建集群或添加实例时,如果 localAddress不指定该选项,则使用的端口 group_replication_local_address 自动分配值: port* 10 + 1。但是,如果先前规则确定的结果端口已被使用,则会随机分配一个端口已生成并使用。现在 MySQL Shell 检查 group_replication_local_address 端口是否可用,如果不可用则失败。(漏洞 #27758041)

  • dbPassword选项在所有 AdminAPI 命令的选项字典中不再有效。(漏洞#27745106)

  • dba.forceQuorumUsingPartition()可以在没有丢失法定人数的集群上 使用该 操作。(漏洞#27508698)

  • 操作的帮助消息 dba.rebootClusterFromCompleteOutage() 错误地建议使用 dba.forceQuorumUsingPartition()。(漏洞 #27508627)

  • dba.rebootClusterFromCompleteOutage() 操作是在目标实例上创建新用户,这可能导致存在越来越多的用户。此修复可确保这些用户不是由 dba.rebootClusterFromCompleteOutage() 操作创建的。(缺陷号 27344040)

  • 现在,当您发布dba.getCluster()和检索没有仲裁的集群时,除了日志消息之外还会发出警告。(漏洞#27148943)

  • memberSslMode选项可以与 cluster.addInstance() 操作 一起使用,cluster.rejoinInstance() 但如果您指定的值与创建集群时使用的值不同,则会引发错误。现在仅在集群级别设置 SSL 模式,换句话说,在发布 dba.createCluster(). 该 memberSslMode选项已从 cluster.addInstance() and 中删除cluster.rejoinInstance(). (缺陷 #27062122)

  • 当您dba.configureLocalInsance() 在实例上发布时,它 使用、 、 、 和 存储引擎配置disabled_storage_engines 变量,以确保存储引擎设置为 ,如组复制所要求的。AdminAPI 未正确报告对此选项的更改,因此更改 变量后所需的重启不明确。此更改被视为建议,而不是要求,因此 不再配置 。(缺陷号 26754410)MyISAMBLACKHOLEFEDERATEDCSVARCHIVEInnoDBdisabled_storage_enginesdba.configureLocalInsance()disabled_storage_engines

  • 使用缺少全局授权选项的帐户创建集群失败并出现模糊的错误消息,即使 dba.checkInstanceConfiguration()没有返回任何错误。现在,当您创建集群时,将检查用于管理集群的帐户以确保它具有全局授权选项。(缺陷号 25966235)

  • MySQL Shell 在交互模式下运行时可以自动重新连接全局会话,但 AdminAPI 方法缺少此功能。这导致您必须手动重新连接。现在,改进了利用全局会话对象的 AdminAPI 方法,以便检测中断的会话并触发重新连接机制。Cluster 对象使用自己的内部会话实例,不支持自动重连。如果与集群的连接丢失,您需要手动重新创建集群对象。(漏洞 #24702489)

  • 如果整个集群意外停止,则在重新启动memberSslMode时不会保留。在已禁用 SSL 的集群中,发出 dba.rebootClusterFromCompleteOutage()此命令可能会阻止实例重新加入集群。(缺陷 #90793,缺陷 #27986413)

添加或更改的功能

  • 重要变化: 用于在 Oracle Linux 7 上安装 MySQL Shell 的 ARM 64 位 (aarch64) 二进制文件的 RPM 包现在可以在 MySQL Yum 存储库中获得并可以直接下载。

    此 ARM 版本的已知限制:您必须启用 Oracle Linux 7 软件集合存储库 (ol7_software_collections) 才能安装此程序包,并且还必须调整 libstdc++7 路径。有关更多详细信息,请参阅 Yum 的平台特定说明

  • X DevAPI: 为了符合 X DevAPI 规范,进行了以下更改:

    • Collection.modify(condition).arrayDelete()Collection.modify(condition).merge() 已被弃用。

    • Collection.find().limit(x).skip(y)已重命名为 Collection.find().limit(x).offset(y).

    • Collection.find().limit(x).skip(y)已被弃用。

    • Collection.find().limit(x).offset(y)已实施。

    • BaseResult.getAffectedItemsCount()已实施。

    • BaseResult.getWarningCount()已被弃用。

    • BaseResult.getWarningsCount()已实施。

    • Result.getAffectedItemCount()已被弃用。

    • SqlResult.getAffectedRowCount()已被弃用。

    • SqlResult.nextDataSet()已重命名为SqlResult.nextResult().

    • SqlResult.nextDataSet()已被弃用。

    • SqlResult.nextResult()已实施。

  • MySQL Shell 现在使您能够将用户凭据存储在操作系统特定的秘密存储中。然后您可以在连接期间输入 MySQL 用户的密码并存储它以供将来连接使用。目前支持以下秘密商店:

    • MySQL登录路径

    • MacOS 钥匙串

    • 窗口应用程序接口

    (漏洞 #23304789,漏洞 #81484)

  • 您访问联机 Shell 帮助的方式已经标准化。使用命令搜索帮助。该命令的范围已增加,以支持检索以下类别的帮助: \help pattern

    • Admin API、X DevAPI 和 Shell API 的类和函数帮助。以前,要检索 API 对象的帮助,您必须创建该对象的实例并使用该 object.help() 方法。

    • SQL 语法帮助,前提是存在全局会话对象。

    通配符现在可用于搜索帮助。还修复了一些与不完整帮助信息相关的其他错误。(错误#23255291,错误#81277,错误#24963435,错误#25732663,错误#85481,错误#25739522,错误#85511,错误#25739664,错误#85514,错误#26393155,错误#86950,错误#74,943 #26429399,错误#87037,错误#27870491,错误#90455,错误#27870503,错误#90456,错误#27875150,错误#90474,错误#24948933,错误#83527)

  • util.checkForServerUpgrade()操作有一个附加outputFormat参数,您可以在运行实用程序时指定该参数。该实用程序现在可以生成两种格式的输出:

    • TEXT 格式,这是默认格式。此选项提供适合人类的输出,如该实用程序先前返回的那样。

    • JSON 格式。此选项提供适合机器的输出,可以针对各种进一步的用例进行解析和处理。

修正错误

  • MySQL Shell 的示例提示主题文件被部署到 Windows 平台上的错误位置,在根安装文件夹中。这些文件现在已正确部署在 \share\mysqlsh\prompt子文件夹中。(缺陷号 28188761)

  • MySQL Shell( util.checkForServerUpgrade()操作)提供的升级检查器实用程序已得到增强,包括该工具发现的错误、警告和信息级别问题的汇总计数,以及指向包含更多信息的文档的链接(如果可用)。(漏洞#28171814)

  • Linux MySQL Shell从1.0.11版本升级到8.0.11版本时,如果原包为社区版,新包为商业版,则升级失败,反之亦然。现在可以从一个版本升级到另一个版本。(缺陷号 28037407)

  • util.checkForServerUpgrade()操作现在可以使用 X 协议连接或经典 MySQL 协议连接。(缺陷号 28027707)

  • checkForServerUpgrade()验证升级先决条件 的操作包括与ZEROFILL列中的长度属性相关并显示长度属性的不必要检查。该支票现已被取消。(缺陷 #27927641,缺陷 #90634)

  • 对于使用经典 MySQL 协议的会话,如果在 session_track_gtids服务器上设置系统变量以捕获 GTID 并将其返回给客户端,MySQL Shell 现在会显示成功提交事务的 GTID。返回的 GTID 值现在也记录在跟踪信息中。(漏洞#27871148)

  • defaultMode使用该选项设置 MySQL Shell 配置选项时 --persist,始终尝试使用指定的默认语言从文件执行批处理代码,即使文件扩展名指示不同的受支持语言也是如此。--file现在,当使用或选项加载文件进行批处理-f时,扩展名为.js.py和的文件将以.sql适当的语言模式进行处理,而不管设置的默认语言如何。(漏洞#27861407)

  • 配置界面中提供的shell.options 用于设置和保存持久选项值的方法在 JavaScript 和 Python 模式中使用下划线。这些方法现在已更改为 shell.options.setPersist()shell.options.unsetPersist()在 JavaScript 中以遵循适当的命名约定。(漏洞#27861141)

  • 使用 MySQL Shell 执行 SQL 脚本时,多行注释中存在分隔符(例如默认的分号字符)导致执行失败。现在在多行注释中忽略定界符。(漏洞 #27841719)

  • MySQL Shell 在查询为零的时间戳值时返回错误,因为不接受日期中月份或日期的零值。现在可以使用零时间戳值而不会产生错误。(缺陷 #27833822,缺陷 #90355)

  • shell.getSession()函数返回对session代表 MySQL Shell 和 MySQL 服务器之间已经建立的连接的全局对象的引用,称为全局会话。MySQL Shell 现在可以优雅地处理在尚未建立全局会话时调用该函数的情况。(缺陷号 27809310)

  • Microsoft Windows 上的 MySQL Shell 应用程序图标未在 MySQL Shell 8.0 GA 版本中显示,这是由于在代码重构期间为该图标引入了不正确的关联。该图标现在可以正确显示。(缺陷号 27746532)

  • MySQL Shell 中的\status( \s) 命令现在显示有关连接的 MySQL 服务器的版本和构建的完整信息。(缺陷号 27740420)

  • 操作执行的保留关键字检查 util.checkForServerUpgrade()已更新,以匹配 MySQL 8.0 GA 版本的保留关键字列表。(漏洞#27724201)

  • 在处理转义序列时,MySQL Shell 现在可以识别并跳过引号内的 SQL 注释和字符串文字。(漏洞#27665229)

  • MySQL Shell中加入了Python的映射类型,可以使用字典语法以Python方式与数据进行交互。(漏洞#27614110)

  • 当文件被重定向到标准输入以在 MySQL Shell 中执行时,在 Unix 上,文件的第一部分被视为密码。密码提示现在先查找用户输入,然后再求助于标准输入。(漏洞#27572380)

  • 如果在 MySQL Shell 中输入Ctrl+C或在密码提示时出现意外错误,则之后无法正确恢复终端状态。(缺陷号 27379834)