MySQL Shell现在可以选择性地记录AdminAPI操作执行的SQL语句,并将它们输出到控制台
——详细
选项设置。的dba.logSql
MySQL Shell配置选项或——dba-log-sql
命令行选项激活这些语句的日志记录。由沙盒操作执行的语句被排除在外。查看语句可以让您从SQL执行的角度观察AdminAPI操作的进度,这有助于对任何错误进行问题诊断。如果MySQL Server版本高于8.0.13,AdminAPI现在支持IPv6地址。在使用MySQL Shell 8.0.18或更高版本时,如果所有集群实例都运行8.0.14或更高版本,那么您可以使用IPv6或主机名来解析为实例连接字符串的IPv6地址,并带有选项,例如
localAddress
,groupSeeds
而且ipWhitelist
.有关使用IPv6的更多信息,请参见支持IPv6和混合IPv6和IPv4组.参考文献:参见Bug #29557250, Bug #30111022, Bug #28982989。
你现在可以重置由InnoDB Cluster创建的内部恢复帐户的密码,例如遵循自定义的密码存活策略。使用
操作,重置集群使用的所有内部恢复帐户密码。该操作将为每个在线实例的内部恢复帐户设置一个新的随机密码。如果无法访问实例,则操作失败。您可以使用集群
.resetRecoveryAccountsPassword ()力
选项忽略此类实例,但不建议这样做,在使用此操作之前将实例恢复联机会更安全。该操作仅适用于InnoDB集群创建的密码,不能用于更新手工创建的密码。请注意执行此操作的用户必须拥有所有所需的
clusterAdmin
特权,特别是创建用户
,以确保恢复帐户的密码无论是否需要密码验证策略都可以更改。换句话说,独立于password_require_current
是否启用系统变量。MySQL Shell现在支持为经典的MySQL协议连接指定TLS版本1.3和TLS加密套件。您可以使用:
的
——tls版本
命令选项指定TLS版本1.3。的
——tls-ciphersuites
命令选项指定密码套件。的
tls-versions
而且tls-ciphersuites
连接参数作为uri类型连接字符串的一部分。
请注意tls-versions
(复数)没有对应的键值,它只在uri类型的连接字符串中被支持。使用tls版本
在键值连接字符串中指定TLSv1.3。要使用TLS 1.3版本,MySQL Shell和MySQL服务器都必须使用OpenSSL 1.1.1或更高版本编译。有关更多信息,请参见使用加密连接.
的
操作没有设置为InnoDB集群定义的自动增量值,如果实例配置没有正确保存,就会使用默认的Group Replication行为,例如在5.7服务器上。该修复确保集群
.rejoinInstance ()
操作更新目标实例的自动递增设置。(错误# 30174191)集群
.rejoinInstance ()的输出
现在包括集群
.status ()replicationLag
字段。格式为HH:MM:SS,显示最后一次事务提交的时间戳和最后一次事务应用的时间戳之间的时间差。这使您能够监视最近的事务被提交到应用于实例之间的时间量。(错误# 30003034)
没有确保MySQL Clone插件安装或加载在所有集群实例,当可用和未禁用。这意味着,无论何时使用较旧的MySQL Shell版本创建集群,在支持克隆的目标MySQL实例上,该实例都不会安装克隆插件。结果是任何集群
.addInstance ()
调用已使用的克隆将失败。如果将一个实例添加到使用增量恢复类型的由一个实例组成的集群中,然后删除种子实例,则会出现同样的问题。这导致所有集群实例都没有安装克隆插件,因此使用克隆恢复方法添加的任何实例都将失败。该修复确保克隆插件在集群创建时以及在向集群添加实例时安装在所有集群成员上(如果可用且未禁用)。(错误# 29954085)集群
.addInstance ()的
操作没有检查正在重新加入集群的实例的GTID一致性,可能导致数据发散。GTID的一致性检查是集群
.rejoinInstance ()
操作已经改进,以检查不可恢复或发散的数据集,也检查空GTID集。如果发现一个实例与集群不一致,则不重新加入该实例,操作失败并出现描述性错误。您还会看到错误事务的列表、可能的结果和解决方案。(错误# 29953812)集群
.rejoinInstance ()
正在从当前会话中直接检索关于集群拓扑和安装在实例上的MySQL版本的信息。现在,从Metadata模式中检索信息,MySQL版本不包含在的输出信息中集群
.describe ()
.(错误# 29648806)集群
.describe ()使用包含'字符引起的密码
dba.deploySandbox ()
失败。现在,所有敏感数据都被正确包装以避免此类问题。(错误# 29637581)的
操作创建组复制恢复过程所需的内部恢复用户。如果集群
.addInstance ()
操作失败,例如,组复制无法启动,创建的恢复用户没有被删除。现在,如果出现故障,将删除所有内部用户。(错误# 25503159)集群
.addInstance ()当一个集群失去了仲裁,并且除主实例之外的大多数集群实例都离线时,在重新建立仲裁并向集群添加一个新实例之后,就不可能将之前的主实例删除并添加到集群中。这是因为在尝试联系脱机实例时操作失败,这是因为验证是否需要Group Replication协议升级的特性没有考虑到一些集群实例脱机(不可访问)的可能性。的组复制协议升级处理
操作,该操作现在尝试连接到其他集群实例,并为此目的使用第一个可达实例。(错误# 25267603)集群
.removeInstance ()的
dba.configureInstance ()
操作没有设置binlog_checksum
为不支持的实例在选项文件中使用所需值(NONE)设置保存
(例如运行MySQL 5.7的实例),当选项文件路径不作为输入参数提供,而是通过交互模式下的操作向导指定时。(Bug #96489, Bug #30171090)
MySQL Shell的升级检查工具
util.checkForServerUpgrade ()
操作)包括以下新检查和扩展检查:运行升级检查器实用程序不再更改
gtid_executed
值,这意味着该实用程序可以在Group Replication组成员上使用,而不影响其与组的同步。升级检查器现在也可以正确地与ANSI_QUOTES
SQL模式。(Bug #30002732, Bug #30103683, Bug #96351, Bug #30103640, Bug #96350)参考文献:参见Bug #29992589。
MySQL Shell有两个新的内置报告,它们提供来自不同来源的信息,包括MySQL的性能模式:
线程
列出连接的MySQL服务器中属于用于运行报告的用户帐户的当前线程。使用特定于报表的选项,您可以选择显示前台线程、后台线程或所有线程。您可以为每个线程报告一组默认的信息,或者从大量可用选项中选择要包含在报告中的特定信息。您可以过滤、排序和限制输出。线程
提供有关所连接MySQL服务器中特定线程的详细信息。默认情况下,报告显示当前连接使用的线程的信息,或者您可以通过线程的ID或连接ID标识线程。您可以选择一个或多个信息类别,或者查看关于线程的所有可用信息。
您可以使用MySQL Shell运行新的报告
\显示
而且\看
命令。这些报告适用于运行所有受支持的MySQL 5.7和MySQL 8.0版本的服务器。如果任何信息项在目标服务器的MySQL Server版本中不可用,报告就会将其删除。MySQL Shell有两个新的控制命令:
的
\编辑
(\ e
)命令在默认的系统编辑器中打开一个命令进行编辑。如果您为命令指定一个参数,则此文本将被放置在编辑器中,如果您没有这样做,则MySQL Shell历史记录中的最后一个命令将被放置在编辑器中。当您完成编辑时,MySQL Shell将显示您编辑过的文本供您执行或取消。还可以使用短形式调用该命令\ e
或者组合键Ctrl-X Ctrl-E.的
\系统
(\ !
)命令运行您指定为命令参数的操作系统命令,然后在MySQL Shell中显示该命令的输出。如果MySQL Shell无法执行该命令,则返回一个错误。
MySQL Shell现在使用Python 3。对于包含系统支持安装Python 3的平台,MySQL Shell使用可用的最新版本,最小支持版本为Python 3.4.3。对于不包含Python 3的平台,MySQL Shell绑定了Python 3.7.4。MySQL Shell保持了与Python 2.6和Python 2.7的代码兼容性,因此,如果您需要这些旧版本中的一个,您可以使用适当的Python版本从源代码构建MySQL Shell。
在调试模式下,MySQL Shell在处理SQL字符串中包含的字符时抛出断言。(错误# 30286680)
如果Python lambda被添加为MySQL Shell扩展对象的成员,当MySQL Shell关闭时,Python对象不会被正确释放,导致段错误。(错误# 30156304)
当Python代码以交互模式执行时,可能会发生内存泄漏。(错误# 30138755)
MySQL Shell报告的帮助信息无法显示,除非有活动会话。MySQL Shell现在只在实际运行报告之前检查打开的会话。(错误# 30083371)
如果为MySQL Shell连接设置了默认模式,并且在连接建立后设置了不同的默认模式,MySQL Shell的
\连接
命令试图使用来自原始连接的默认模式。用户当前的默认模式现在用于重新连接尝试。(错误# 30059354)由于MySQL Shell 8.0.16的更改引入了一个错误,Windows安装程序用来安装MySQL Shell的MSI文件用应用程序二进制文件(mysqlsh)的路径覆盖了Windows PATH环境变量,删除了任何其他存在的路径。这个问题现在已经解决了。(Bug #29972020, Bug #95432)
当
\连接
命令用来尝试重新连接到服务器,如果用户设置的最后一个活动模式似乎不再可用,MySQL Shell现在尝试连接没有模式集。(错误# 29954572)在交互模式下,MySQL Shell现在处理以斜线和星号(/*)开始,以星号和斜线(*/)结束的多行注释。(错误# 29938424)
MySQL壳
\源
命令与SQL语句结合使用时处理不正确。(错误# 29889926)用MySQL Shell在SQL模式下,如果多个SQL语句包括一个
使用
语句在带有分隔符的单行上发出使用
语句没有被正确处理。(错误# 29881615)如果MySQL Shell的JSON导入实用程序被用来向处理能力不足的服务器发送大量JSON文档,该实用程序可能会用准备好的文档填充写队列,导致连接超时,导入失败。该实用程序现在等待从服务器读取响应,然后将下一批准备好的文档发送到服务器。(错误# 29878964)
当MySQL Shell使用打包的OpenSSL包从源代码构建时,没有设置所需的链接器标志。这个问题现在已经解决了。(错误# 29862189)
如果在MySQL Shell中执行新查询时,结果仍处于活动状态,导致行被缓存,则旧查询不会返回所有行。(错误# 29818714)