MySQL Shell发布说明/ MySQL Shell 8.0.3的变化(2017-09-29,发展里程碑)

MySQL Shell 8.0.3的变化(2017-09-29,开发里程碑)

MySQL Shell现在将其版本号的第一位数字与它所支持的(最高的)MySQL服务器版本同步。这一更改使得决定对哪个服务器版本使用哪个客户端版本变得简单而直观。MySQL Shell现在使用与MySQL Server相同的版本号。

MySQL Shell 8.0.3是第一个使用新编号的版本。它是MySQL Shell 8.0.0的继承者。

AdminAPI添加或更改功能

  • 加上王# 10611而且王# 10960,无法添加或重新加入属于集群(或复制组)的实例,因为super_read_only =对正在被组复制设置时停止。为了确保AdminAPI支持MySQL 8.0.2及以上版本的实例,修改了以下函数:

    • dba.configureLocalInstance ()

    • dba.createCluster ()

    • dba.rebootClusterFromCompleteOutage ()

    • dba.dropMetadataSchema ()

    现在,如果这些函数中的任何一个是针对一个实例发出的super_read_only =对,在交互模式下,您可以选择设置super_read_only =了.强制函数设置super_read_only =了在脚本中,传递clearReadOnly选项设置为真正的.例如dba。configureLocalInstance ({clearReadOnly:真})。有关更多信息,请参阅超级只读模式实例配置.(错误# 26422638)

修复AdminAPI错误

  • 当使用clusterAdmin选项时,创建的帐户没有所有正确的特权。(错误# 26523629)

  • 当使用multiMaster选项dba.createCluster ()时,交互模式下显示的警告未被记录。(错误# 26385634)

  • 的值进行集群拓扑或成员更改时,AdminAPI没有考虑group_replication_group_name,这可能会在大脑分裂等情况下导致不正确、不确定的结果。现在,下面的命令验证InnoDB集群元数据和相应实例的元数据group_replication_group_name值:

    • dba.getCluster ()

    • Cluster.rejoinInstance ()

    • Cluster.forceQuorumUsingPartitionOf ()

    如果的值group_replication_group_name如果不匹配,命令将终止并报错。

    dba.rebootClusterFromCompleteOutage ()还进行了更新,以确保group_replication_group_name变量在重新加入实例之前没有被更改。(错误# 26159339)

  • AdminAPI现在总是使用当前的活动用户值mysqlsh会话,无论该值是由用户显式指定的,还是使用的隐式默认值的结果mysqlsh.(错误# 26132527)

  • AdminAPI在发出时执行的检查dba.rebootClusterFromCompleteOutage ()比组复制的要求更严格。现在,AdminAPI认为具有等效主键(例如非空唯一键)的表是兼容的,与组复制的当前需求相匹配。(错误# 25974689)

  • 内部用户使用的随机生成的密码与运行密码验证插件的实例不兼容。(错误# 25714751)

  • 不能再使用adoptFromGr选项中的multiMaster选择。当采用一个现有的组到InnoDB集群时,该组是基于它是多主还是单主运行。因此,没有使用multiMaster调整组时的选项。(错误# 25664700)

  • 发行configureLocalInstance ()使用包含没有正确权限的用户的URI时,会导致创建不正确的新用户。现在,如果用户在configureLocalInstance ()URI没有足够的特权,无法为在交互向导配置期间选择的新用户授予所有必要的特权。(错误# 25614855)

  • 发行Cluster.rescan ()导致非确定性行为,可能会产生不正确的JSON输出,显示一个已经属于集群的实例属于newlyDiscoveredInstances []列表和到unavailableInstances[]列表。这也导致MySQL Shell提示从集群中添加或删除实例。(错误# 25534693)

  • AdminAPI函数现在接受标准连接参数shell.connect.为时间添加了新的验证require_secure_transport,现在不可能创建集群memberSslMode:禁用或添加实例require_secure_transport =对到一个集群memberSslMode:禁用.(错误# 25532298)

  • 帐户名的解析,例如在传递clusterAdmin选项dba.configureLocalInstance ()已得到改进。(错误# 25528695)

  • AdminAPI创建的选项文件的权限与MySQL安装创建的选项文件的权限不匹配。处理步骤(错误# 25526248)

  • 发行configureLocalInstance ()两次都可能失败。(错误# 25519190)

  • 当通过rejoinInstances []选项dba.rebootClusterFromCompleteOutage (),如果没有rejoinInstances []选项,则在重新构建期间将不正确地处理成员。对象中有资格添加的实例rejoinInstances []属性中指定的removeInstances []列表将被交互式向导跳过,该向导试图自动构建rejoinInstances []如果没有提供,请列出。此修复还确保交互式和非交互式使用MySQL Shell正确地验证rejoinInstances []列表中不包含不可达实例。(错误# 25516390)

  • 当集群使用的SSL模式和发出时指定的SSL模式时发出的错误消息addInstance ()命令不匹配得到了改进。(错误# 25495056)

  • 方法创建沙箱实例时dba.deploySandboxInstance ()函数在MySQL Shell,按Ctrl + C提示输入实例的MySQL根密码时没有取消部署。(错误# 25316811)

  • 发行removeInstance()在集群的最后一个成员,特别是种子成员上,导致集群不能被解散。现在,发行removeInstance ()将导致错误,并且必须使用溶解()以确保正确地解散集群。(错误# 25226130)

  • 的输出cluster.status ()现在包括ssl参数,该参数显示集群是否需要安全连接或禁用安全连接。(错误# 25226117)

  • 属性,否则尝试在交互模式下创建多主集群失败{力:真正的}选择。现在,当您确认了解了使用多主模式的影响后,该命令将正确地创建一个多主集群。(错误# 25034951)

  • removeInstance ()未在已停止的实例上工作,并且无法从集群中删除不可用实例。修复程序增加了一个新选项到removeInstance()命令,使您能够从元数据中删除永久不可用的实例,避免在集群的元数据中保留过时的数据。此外,改进了未使用force选项时提供的错误消息,并改进了removeInstance ()也作了相应的更新。(错误# 24916064)

  • 由发出生成的错误消息dba.deployLocalInstance ()针对不合适或不兼容的实例进行了改进。(错误# 24598272)

  • dba.createCluster ()dba.getCluster (),dba.rebootClusterFromCompleteOutage ()函数已经更新以验证集群名称,使用以下规则:

    • 名称必须以字母或_字符

    • 名称只能包含字母数字字符和_字符

    • 长度不能超过40个字符

    • 不能为空

    Cluster.addInstance ()函数已更新为验证集群中实例上使用的标签,使用以下规则:

    • 标签只能包含字母、数字或_字符

    • 长度不能超过256个字符

    • 不能为空

    (错误# 24565242)

添加或更改的功能

  • X DevAPI:可用的会话类型已经简化。XSession而且NodeSession已合并为会话.这导致了以下变化:

    • 以下命令选项已弃用:——节点——sqln——经典

    • 引入以下命令选项来替换已弃用的命令选项:——mysqlxmx),——mysqlmc),——sqlx

    • \连接MySQL Shell命令不再支持参数- c,- n.现在,\连接命令支持参数——mysqlxmx)用于创建X协议连接,以及——mysqlmc)用于创建经典的MySQL协议连接。

  • MySQL Shell现在可以正确地处理用户中断,比如SIGINT。例如,在Linux上,当MySQL Shell没有执行任何操作时,按下Control-C将退出应用程序。在SQL模式下,中断发送一个杀死查询语句从一个新的临时会话返回到活动的MySQL Shell会话,导致服务器中断查询并返回一个错误(或者在一些情况下,在早期返回没有错误,如睡眠()功能)。在JavaScript或Python脚本模式中,中断的行为取决于正在执行的特定函数。如果正在执行的是语言代码(例如while循环和其他常规脚本代码),则会在活动语言中生成异常,从而导致代码停止执行。异常可能会被脚本捕获,但如果没有,执行控制将返回MySQL Shell。(错误# 24757361)

  • MySQL Shell现在包含了一个历史函数来存储你发出的代码。支持历史记录的保存、搜索和过滤。添加了一种新的机制来定制MySQL Shell提示符。可以通过变量将当前模式(SQL、JavaScript或Python)、会话信息(主机、uri、端口等)、当前活动模式等信息包含在提示符中。定制信息包含在JSON主题文件中,可以在用户之间共享。MySQL Shell现在支持unicode,如果用于运行MySQL Shell的终端支持。类似地,如果终端支持颜色,MySQL Shell可以配置为在主题中使用颜色。

  • 传递给MySQL Shell的连接选项,例如sslMode等等,已更改为使用破折号,不再区分大小写。现在的选项是:

    • sslMode现在是ssl-mode

    • sslCa现在是ssl-ca

    • sslCaPath现在是ssl-capath

    • sslCert现在是ssl-cert

    • sslKey现在是ssl密钥

    • sslCrl现在是ssl-crl

    • sslCrlPath现在是ssl-crlpath

    • sslCiphers现在是ssl-ciphers

    • sslTlsVersion现在是tls版本

    • authMethod现在是auth方法

  • 解释document_path现场操作如修改()已经改变了。现在,当document_path未设置时,操作应用于整个文档。所有操作都会保留文档的_id字段。

错误修复

  • X DevAPI:可能会从数据库中错误地读取未签名的数据。(错误# 24912358)

  • 在MySQL Shell中Schema.getCollectionAsTable ()功能和select ()方法不能在同一条Python语句中使用。(错误# 26552804)

  • MySQL Shell错误地返回了DATE和DATETIME值的一些元素,包括月份值和分数秒。(错误# 26428636)

  • 使用MySQL Shell在表中插入时间戳时错误地增加了月份。(错误# 26423177)

  • 对于具有补零属性,返回时也填充了0。(错误# 26406214)

  • MySQL Shell的输出\状态附加信息增强了指挥能力。(错误# 26403909)

  • MySQL Shell帮助\连接命令指示可以使用连接名而不是URI字符串,这是不正确的。(错误# 26392676)

  • MySQL Shell命令使用\如果与全局会话的连接丢失,则未尝试重新连接。(Bug #25974014, Bug #86118)

  • 缩写形式-?现在可以用作——帮助命令行选项在MySQL Shell。(错误# 25813228)

  • MySQL Shell命令历史记录显示了MySQL Shell自动导入数据库的命令mysql而且mysqlxMySQL Shell启动时的API模块。(错误# 25739185)

  • MySQL Shell命令历史记录显示使用命令运行的脚本的内容\源MySQL Shell命令。(错误# 25676495)

  • mysqlx.getNodeSession ()如果提供了一个无法识别的连接选项,MySQL Shell中的函数将返回一个错误。(错误# 25552033)

  • ——ssl选项已弃用,请使用——ssl-mode选择。现在,如果你用——ssl选项时,将生成一个弃用警告——ssl-mode选项设置为任意一个禁用要求属性使用的值——ssl选择。(错误# 25403945)

  • 当用户没有有效且可访问的主目录时,MySQL Shell不会优雅地退出。(错误# 25298480)

  • MySQL Shell创建了一个日志记录器,但在退出Shell时没有释放它。(错误# 25238576)

  • MySQL Shell可以挂起Ctrl + C用于退出外壳。(Bug #25180850, Bug #84022)

  • 作为URI一部分提供的Unix套接字的解析得到了改进。(错误# 24905066)

  • MySQL Shell现在接受Unicode字符作为输入。(Bug #23151666, Bug #81176)