MySQL Shell发布说明/ MySQL Shell 8.0.12的变化(2018-07-27,通用可用性)

MySQL Shell 8.0.12(2018-07-27,通用版)

AdminAPI添加或更改功能

  • 集群.removeInstance ()Command得到了改进,改动如下:

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

    • 该操作现在确保从所有集群成员的元数据和实例本身中删除实例。这只适用于在线成员。

    • 一个新的全球选择dba.gtidWaitTimeout可用于定义AdminAPI命令需要时应用事务的超时等待时间(gtid)。定义的超时值dba.gtidWaitTimeout在等待申请集群事务时是否达到集群.removeInstance ()而且力量:假(或未定义),则发出错误并终止操作。当力:真然后继续操作,不生成错误。

    参考:参见Bug #27817894。

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

    参考:参见Bug #26140094, Bug #28165891。

修复AdminAPI错误

  • cluster.forceQuorumUsingPartitionOf ()操作设置group_replication_force_members变量在目标实例上强制建立新的组成员关系并恢复仲裁,但它没有在流程结束时重置变量的值。因此,如果稍后需要在目标实例上重新启动组复制,则会失败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自动分配值:港口* 10 + 1。但是,如果由前面的规则确定的结果端口已经在使用中,则会生成并使用一个随机端口。现在MySQL Shell检查group_replication_local_address端口可用,否则失败。(错误# 27758041)

  • dbPassword在所有AdminAPI命令的选项字典中,option不再有效。(错误# 27745106)

  • 可以使用dba.forceQuorumUsingPartition ()在未丢失quorum的集群上进行的操作。(错误# 27508698)

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

  • dba.rebootClusterFromCompleteOutage ()操作正在目标实例上创建一个新用户,这可能会导致存在越来越多的用户。方法创建这些用户dba.rebootClusterFromCompleteOutage ()操作。(错误# 27344040)

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

  • memberSslModeOption可用于集群.addInstance ()而且集群.rejoinInstance ()操作,但如果您指定的值与创建集群时使用的值不同,则会抛出错误。现在只在集群级别设置SSL模式,换句话说,在发出时dba.createCluster ().的memberSslMode选项已从集群.addInstance ()而且集群.rejoinInstance()。(错误# 27062122)

  • 当你发布dba.configureLocalInsance ()在实例上,它配置了disabled_storage_engines变量。MyISAM黑洞联邦CSV,存档以确保将存储引擎设置为InnoDB,按照“组复制”的要求。AdminAPI没有正确报告对此选项的更改,因此在更改后需要重新启动disabled_storage_engines变量不清楚。因此,此更改被视为建议,而不是要求dba.configureLocalInsance ()不再配置disabled_storage_engines.(错误# 26754410)

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

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

  • 在整个集群意外停止的情况下,重新启动memberSslMode没有保存下来。在已禁用SSL的集群中dba.rebootClusterFromCompleteOutage ()这可能会阻止实例重新加入集群。(Bug #90793, Bug #27986413)

添加或更改的功能

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

    此ARM发行版的已知限制:必须启用Oracle Linux 7 Software Collections Repository (ol7_software_collections)才能安装此包,并调整libstdc++7路径。看到好吃的平台特定注意事项更多细节。

  • X DevAPI:为了与X DevAPI规范兼容,做了以下更改:

    • Collection.modify(条件).arrayDelete ()而且Collection.modify(条件).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钥匙链

    • Windows API

    (Bug #23304789, Bug #81484)

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

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

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

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

  • util.checkForServerUpgrade ()操作具有额外的outputFormat在运行实用程序时可以指定的参数。该工具现在可以生成两种格式的输出:

    • TEXT格式,这是默认的。这个选项提供了适合人类的输出,就像之前由实用程序返回的那样。

    • JSON格式。这个选项提供了适合机器的输出,这些输出可以被解析和处理,以用于各种进一步的用例。

错误修复

  • MySQL Shell的示例提示主题文件被部署到Windows平台上的一个错误位置,在根安装文件夹中。文件现在已正确部署在\ \ mysqlsh \及时分享子文件夹。(错误# 28188761)

  • MySQL Shell提供的升级检查工具util.checkForServerUpgrade ()操作)已经通过该工具发现的错误、警告和信息级别问题的汇总计数得到了增强,并在可用的地方提供了包含进一步信息的文档链接。10bet官方网站(错误# 28171814)

  • 在Linux下从MySQL Shell 1.0.11版本升级到8.0.11版本时,如果原来的包是社区版,而新的包是商业版,升级失败,反之亦然。现在可以从一个版本升级到另一个版本。(错误# 28037407)

  • util.checkForServerUpgrade ()操作现在可以使用X协议连接或经典的MySQL协议连接。(错误# 28027707)

  • checkForServerUpgrade ()操作以验证升级先决条件包括不必要的检查补零并在列中显示长度属性。该检查现在已被删除。(Bug #27927641, Bug #90634)

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

  • defaultModeMySQL Shell配置选项已经设置——坚持选项,则始终尝试使用指定的默认语言从文件执行批处理代码,即使文件扩展名指示了不同的支持语言。方法加载文件以进行批处理时——文件- f选项,具有扩展名的文件. js. py,. sql以适当的语言模式进行处理,而不管设置的默认语言是什么。(错误# 27861407)

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

  • 当使用MySQL Shell执行SQL脚本时,多行注释中出现的分隔符(例如默认的分号字符)会导致执行失败。现在在多行注释中忽略分隔符。(错误# 27841719)

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

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

  • 在Microsoft Windows上MySQL Shell应用程序图标在MySQL Shell 8.0 GA发行版中没有显示,这是由于在代码重构过程中为图标引入了错误的关联。现在图标显示正确。(错误# 27746532)

  • \状态\ s)命令在MySQL Shell中现在显示有关连接的MySQL服务器的版本和构建的完整信息。(错误# 27740420)

  • 对保留的关键字进行的检查util.checkForServerUpgrade ()操作被更新为匹配MySQL 8.0 GA版本的保留关键字列表。(错误# 27724201)

  • 在处理转义序列时,MySQL Shell现在识别并跳过引号内的SQL注释和字符串字面量。(错误# 27665229)

  • Python的映射类型已添加到MySQL Shell中,因此可以使用字典语法在Python模式下与数据交互。(错误# 27614110)

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

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