MySQL Shell 1.0 发行说明  /  MySQL Shell 1.0.10 的变化(2017-07-28,全面上市)

MySQL Shell 1.0.10 的变化(2017-07-28,全面上市)

修复了 InnoDB 集群错误

  • 在更改集群拓扑或成员资格时,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)

  • addInstance()函数在使用 MySQL 8 的服务器上运行时失败。(缺陷 #26085799)

  • 在 Python 版本低于 2.7 的服务器上执行 AdminAPI 命令失败,没有正确的错误消息。(缺陷号 25975317)

  • AdminAPI 在发布时执行的检查 dba.rebootClusterFromCompleteOutage()比 Group Replication 要求的检查更严格。现在,AdminAPI 认为具有等效主键(例如非空唯一键)的表是兼容的,符合组复制的当前要求。(漏洞#25974689)

  • dba.createCluster()在实例上 执行sql_mode=ANSI_QUOTES 失败并出现错误。(缺陷号 25966057)

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

  • dba.createSandboxInstance()在 Windows 上使用 MySQL Shell 时,无法删除 任何创建或打开的文件,例如在 期间使用的 文件。(缺陷号 25789094)

  • 以前 auto_increment_increment根据用于server-id系统变量的随机 32 位无符号整数设置的限制已得到解决。现在,在单主模式下运行时 auto_increment_increment设置为 1 并auto_increment_offset 设置为 2。在多主模式下 auto_increment_increment设置为 7 并auto_increment_offset 设置为 1 加上server_id 模 7。(缺陷 #25724564)

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

  • 改进了帮助dba.configureLocalInstance(instance[, options])以描述返回的 JSON 对象。(缺陷号 25703028)

  • 使用包含没有正确权限的用户的 URI 时发出configureLocalInstance(),会导致创建不正确的新用户。现在,如果configureLocalInstance()URI 中的用户没有足够的权限来为在交互式向导配置期间选择的新用户授予所有必要的权限,则不会创建该用户。(漏洞 #25614855)

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

  • AdminAPI 函数现在接受shell.connect. 已为 when require_secure_transportis 添加了新验证ON,现在无法使用 where 创建集群memberSslMode:DISABLED或将实例添加 require_secure_transport=ON 到集群 where memberSslMode:DISABLED。(漏洞 #25532298)

  • 帐户名称的解析,例如在将 clusterAdmin选项传递给 时dba.configureLocalInstance()已得到改进。(漏洞 #25528695)

  • 发出configureLocalInstance()两次可能会失败。(漏洞 #25519190)

  • rejoinInstances[]选项传递给 时 dba.rebootClusterFromCompleteOutage(),如果未 rejoinInstances[]指定任何选项,则在重建期间会错误地处理成员。现在,有资格添加到 rejoinInstances[]列表但在列表中指定的实例将被交互式向导跳过,如果未提供removeInstances[],交互式向导会尝试自动构建 列表。rejoinInstances[]此修复还确保交互式和非交互式使用 MySQL Shell 正确验证 rejoinInstances[]列表不包含无法访问的实例。(漏洞 #25516390)

  • 使用dba.deploySandboxInstance()和传入时sandboxDir,指定的路径不得超过89个字符。(缺陷号 25485035)

  • 在集群的最后一个成员(尤其是种子成员)上发出removeInstance() 会导致集群无法解散。现在, removeInstance()在集群的最后一个成员上发布会导致错误,您必须 dissolve()在该实例上使用以确保正确解散集群。(缺陷号 25226130)

  • removeInstance()在某些情况下会导致意外行为,例如,当将空密码作为 URI 的一部分传递给实例时。(漏洞 #25111911)

  • 术语全局会话和活动会话的使用在用户界面中更加一致。(漏洞#24954546)

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

  • 创建使用 Unix 套接字连接的经典会话现在使用正确的默认值,例如主机名。这解决了以前使用 Unix 套接字连接到 InnoDB 集群实例的限制。 有关如何将默认设置应用于套接字连接的信息,请参阅MySQL Shell连接。(错误#24848763,错误#26036466)

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

  • dba.deployLocalInstance()针对不合适或不兼容的实例 发出的错误消息 已得到改进。(漏洞 #24598272)

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

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

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

    • 不能超过 40 个字符

    • 不能为空

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

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

    • 不能超过 256 个字符

    • 不能为空

    (漏洞 #24565242)

  • 当使用cluster.rejoinInstance()传入的连接字符串中指定的任何用户时,将被忽略并且连接正在使用 root 用户。(漏洞 #85567,漏洞 #25786495)

  • 在配置为多线程从属的实例上,换句话说slave_parallel_workers 设置为大于 0,并且 slave_parallel_type=DATABASE没有 dba.checkInstanceConfiguration()检测到该实例没有正确配置 InnoDB 集群使用。

  • 如果removeInstance()由于连接错误而失败,则会报告错误,但实例会错误地从 InnoDB 集群元数据中删除,并且仍然是复制组的一部分。该修复确保元数据根据 removeInstance() 的结果正确更新。

  • 在选择新的主实例的情况下,向集群添加新实例会由于与先前主实例的连接失败而导致错误。

  • 修改服务器变量的函数,例如 dba.createCluster()dba.validateInstance()现在在交互模式输出和日志输出中提供了有关执行时更改的服务器变量的更多信息。

  • 将实例部署到包含空格的目录的路径失败且没有错误。使用双反斜杠指定此类路径,例如D:\\Cluster\\foo bar.

  • 一旦创建该对象的 Shell 会话连接到不同的服务器,从dba.createCluster()或 等函数获得的 Cluster 对象将 变得不可用。dba.getCluster()该修复修改了 Cluster 对象,以便:

    • Cluster 对象持有对创建或检索它的 Session 的内部引用。

    • 修改集群的 AdminAPI 函数是使用对象引用的会话创建的。

安全说明

  • 用于 MySQL Shell Commercial 的链接 OpenSSL 库已更新至版本 1.0.2l。http://www.openssl.org/news/vulnerabilities.html中描述了新 OpenSSL 版本中修复的问题 。

    此更改不影响 Oracle 生成的 MySQL Community 构建的 MySQL Shell,它使用 yaSSL 库。(缺陷号 26284262)

  • 在使用 MySQL 8 的服务器上针对包含文本列的表运行查询会导致意外停止。

添加或更改的功能

  • clusterAdminType选项 dba.createCluster()未使用,已被删除。(缺陷号 25585027)

  • --help消息现在显示所有短格式选项。

    --help消息现在显示该 --json选项的完整信息。

    shell.help('options')现在返回有关mysqlsh选项的可用信息。

    cluster.help('checkInstanceState')现在报告正确的信息。

    cluster.help('addInstance')现在 cluster.help('rejoinInstance')报告完整的信息。

    help()现在报告所有 AdminAPI 和 Shell 命令的完整信息。(错误#24841493、错误#24910540、错误#24841749、错误#25701345、错误#24977542、错误#25268410、错误#25266846)

  • 调用不带参数的modify()or remove()函数会导致对整个集合执行该函数,这可能会导致意外结果,例如删除表中的所有行。为了避免这种情况并使行为与 update()and一致,如果在没有参数的情况下调用or 函数,delete()现在会抛出客户端异常 。现在,要对集合执行 or 函数,请使用计算结果为 的表达式调用它们,例如 or 。 modify()remove()modify()remove()trueremove('true')modify('true')

修正错误

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

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

  • 服务器版本现在显示为 已连接到消息的一部分。(漏洞#25824753)

  • 使用 form 表达式的查询 导致mysqlsh异常退出。(缺陷号 25754078)collection.find(identifier IN identifier)

  • 如果 AdminAPI 函数被中断,例如 Unix 上的 control-C,则进程返回的退出代码为 1 而不是终止进程的预期退出代码,例如SIGINT. (缺陷号 25728759)

  • MySQL Shell 选项字典中的选项现在已完整记录。(漏洞 #25701345)

  • --ssl选项已被弃用,请使用该--ssl-mode 选项。现在,如果您使用该 --ssl选项,则会生成弃用警告,并且该 --ssl-mode选项将设置为DISABLEDREQUIRED基于与该 --ssl选项一起使用的值。(漏洞 #25403945)

  • shell.connect()如果使用了无效参数,则不会报告错误。ArgumentError 现在为任何无效参数发出一个 。

    现在检查以下互斥的选项对,如果同时指定,则会发出错误:

    (缺陷号 25268670)

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

  • 提示的默认设置更加一致。(缺陷号 25039886)

  • 一些与输出有关的问题 shell.help("prompt")已得到纠正。(错误#25026855、错误#25242638、错误#25676343、错误#25176769)

  • MySQL Shell 现在将无效年份显示为 0000,匹配 MySQL 提示符的行为,而不是0。(漏洞 #24912061)

  • MySQL Shell 不显示 DATETIME 列中值的小数秒。(漏洞#24911885)

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

  • 修复了 MySQL Shell 命令行帮助输出的一些问题。(错误#24841749、错误#24841493、错误#24910540)

  • 如果现在发生错误,错误编号和错误文本都会正确显示。(漏洞#24816578)

  • 当密码被隐藏时,URI 在 MySQL Shell 中被错误地解析。(漏洞#24793956)

  • 使用--dba enableXProtocol 选项安装 X 插件失败。(缺陷号 23508428)

  • \source如果给命令一个目录(而不是文件)参数, mysqlsh 将停止响应 (缺陷 #23097932,缺陷 #81060)