-
该
命令已得到改进,具有以下更改:Cluster
.removeInstance()添加了一个新的交互选项以启用或禁用命令的交互模式。以交互模式显示的输出已得到改进,显示更多有用的信息。在交互模式下,系统会提示您继续删除(或不删除)实例以防无法访问。
该操作现在确保从所有集群成员及其自身的元数据中删除该实例。这仅适用于
ONLINE
会员。一个新的全局选项
dba.gtidWaitTimeout
可用于定义等待事务 (GTID) 在 AdminAPI 命令需要时应用的超时。dba.gtidWaitTimeout
如果在等待集群事务被申请
和(或未定义)时达到定义的超时值,cluster
.removeInstance()force: false
则会发出错误并取消操作。然后操作继续并且force: true
不会产生错误。
参考资料:另请参阅:Bug #27817894。
-
使用
ipWhitelist
定义哪些服务器可以访问集群时,内部用户帐户与白名单不匹配。现在 AdminAPIipWhitelist
对内部管理帐户应用相同的过滤逻辑。参考资料:另请参阅:Bug #26140094、Bug #28165891。
该
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()
但如果您指定的值与创建集群时使用的值不同,则会引发错误。现在仅在集群级别设置 SSL 模式,换句话说,在发布cluster
.rejoinInstance()dba.createCluster()
. 该memberSslMode
选项已从
and 中删除cluster
.addInstance()
(缺陷 #27062122)cluster
.rejoinInstance().当您
dba.configureLocalInsance()
在实例上发布时,它 使用、 、 、 和 存储引擎配置disabled_storage_engines
变量,以确保存储引擎设置为 ,如组复制所要求的。AdminAPI 未正确报告对此选项的更改,因此更改 变量后所需的重启不明确。此更改被视为建议,而不是要求,因此 不再配置 。(缺陷号 26754410)MyISAM
BLACKHOLE
FEDERATED
CSV
ARCHIVE
InnoDB
disabled_storage_engines
dba.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)