mysql8集群新特性_MySQL InnoDB集群 - 8.0.16版本中的新功能

作者:MiguelAraújo 译:徐轶韬

MySQL开发团队非常高兴地宣布InnoDB集群8.0 的新维护版本 - 8.0.16GA!

除了进行错误修复,8.0.16还带来了非常有用的新功能!

这篇博文将涵盖MySQL Shell和AdminAPI,如果希望详细了解MySQL Router的新功能,请关注即将发布的博客文章!

MySQL Shell

对于此版本,我们专注于几个用户要求非常高的AdminAPI扩展功能。与往常一样,我们将其扩展为支持每个新的群组复制功能。最重要的是,解决了许多错误修复。

以下是此版本的亮点:

提供集群成员运行的MySQL版本信息

启用自动加入配置,当实例在被驱逐后,尝试重新加入集群的次数

支持自动处理群组复制协议版本

还有一个新功能,与AdminAPI不完全相关,而是与DevOps和DBA操作相关,这极大地提高了可用性,让使用MySQL Shell更加便捷:

无需更改为SQL模式之后再执行SQL,然后再返回当前模式。

有关MySQL版本的信息

AdminAPI提供用于获取集群的信息或状态的命令。但是,无法获得每个集群成员上运行的MySQL Server版本的信息。

由于可以使用不同版本的实例设置集群,实例上运行的MySQL版本信息已添加到相关的AdminAPI命令中。并且这样还提高了AdminAPI的可观察性。

.status()现在提供名为version的新属性,获取每个集群成员上运行的MySQL服务器版本的信息。默认情况下,它提供当前会话建立在8.0实例的信息,使用5.7时,该命令仅在启用queryMembers选项时显示版本信息。

.status() - 8.0

5628290e0a31072886b23018467bae16.png

.status() - 5.7

d925a2d64014054e837541f30649bab5.png

.rescan(),这是一个非常有用的命令,用于验证InnoDB集群中是否存在意外的拓扑更改,已扩展为提供实例的MySQL版本的信息,该实例被发现是集群的一部分,但不受AdminAPI管理。仅当对象会话建立到8.0实例时,此功能才可用。

.rescan() - 8.0

25bb009a49c1cd8eb0b215e074bed5c1.png

为集群成员定义自动重新加入

每当检测到集群成员无法正常工作时,Group Replication的故障检测机制会将其从集群中驱逐。默认情况下,故障检测器在特定成员未与其他成员通信后等待5秒,然后立即将其从集群中驱逐。这增加了集群中大多数成员正常工作的机会,从而正确处理客户端的请求。然而在某些场景,诸如慢速或脆弱的网络的,或瞬态故障率很高的网络中,这可能非常不方便。为了避免不必要的成员驱逐,现在可以配置自动重新加入次数。在有限的时间内,能够恢复与集群通信的成员可以自动尝试重新加入集群。

注意:默认情况下,自动重新加入设置为0。

AdminAPI已扩展为支持定义此类行为。使用名为autorejoinRetries的新选项扩展了以下命令,该选项接受0和2016之间的正整数:

dba.createCluster()

.addInstance()

.setOption()

.setInstanceOption()

233c37bbc6d6d636e2a6781ce96fe08e.png

如果适用、并且符合DBA需要,可以使用.setOption()命令在集群的所有成员上设置该选项。

141b1a83520d87aa60604fd2cc239429.png

自动处理群组复制协议版本

在8.0.16版本中,Group Replication在其通信协议中引入了对数据分段的支持。这确保了可以将较大的事务分段为较小的单元,从而在通信层中实现较高的速率。此支持是在新协议版本中引入的,默认情况下已启用。但是,升级方案或具有不同协议版本的成员可能会很麻烦。牢记这一点,可用性是AdminAPI的首要任务,8.0.16带来了协议版本的自动和透明处理。

更详细地说,如果实例想要加入集群但不支持集群的协议版本,则它将无法加入群集。此外,每当将集群成员升级到更高版本时,协议都不会自动升级到最新版本。

在8.0.16中,每当更改集群拓扑时,AdminAPI都会自动且透明地管理其成员的通信协议版本,从而确保支持的最新协议版本作为集群一部分或加入它的所有实例使用。所有这些配置都是自动的,不需要DBA的干预。

最重要的是,.status()只要启用了extended标志,就会扩展为在其输出中包含有关群组复制通信协议的信息。该信息显示在名为GRProtocolVersion的新属性中。

6c4f2a52e7a985ed40aa15443ec2bbb4.png

在不切换模式的情况下执行SQL

使用MySQL Shell并使用JavaScript或Python中的AdminAPI管理集群的DBA / DevOps工程师可能需要执行一些SQL语句。到目前为止,这需要更改为SQL模式,然后返回JS或PY模式以执行单个SQL命令:

c2562274dc9371be3d6c207612aae4af.png

在8.0.16中,引入了一个新功能,允许在不更改模式的情况下执行SQL查询。这极大地提高了MySQL Shell的可用性。例:

2c9c0201b882998fd7d90d8f56339333.png

有关详细信息,请继续关注即将发布的MySQL Shell的博客文章,其中将详细介绍此功能。

值得注意的错误修复

有关此版本中修复的错误的完整列表,请参阅更改日志。然而,有一些值得关注的焦点!

BUG#29279941 - 目标成员主机名应该来自主机名或Report_host Sysvars

AdminAPI使用提供的连接参数的主机值作为主机名来在元数据中注册实例。但是,该主机可能与Group Replication报告的主机名不匹配。这可能是问题的根源,因为可以通过多个地址(IP值,主机名,“localhost”等)识别实例,而其他组件需要依赖规范地址。现在,AdminAPI确保使用规范地址在元数据和群组复制本地地址设置中注册实例。

BUG#28812763 - 为防止冲突,当集群成员数量>7时,自动更正Auto_increment_increment

到目前为止,确定auto_increment_increment和auto_increment_offset值的最佳值的算法如下:

25f03f3cd738692d1808a16355982e2b.png

但是,具有7个以上成员的集群可能会出现重复的自动增量值。如果用户计划在多主模式下运行具有7个以上成员的集群,则需要手动重新配置自动增量设置。

为了正确支持这种情况,算法扩展如下:

7bae518e8990494a759e013246fecfe7.png

BUG#29356599 - Failoverconsistency的目的、行为错误和混乱

该failoverConsistency选项名称与目标群组的复制系统变量名称不一致。此外,没有记录全部允许的值,当该选项被指定一个特定值时,应该期望什么会引起混淆。

在8.0.16中,failoverConsistency不推荐使用consistency选项,而选择支持群组复制支持的全部值的选项。

BUG#29308037 - 不删除Mysql_innodb_cluster_rxxx @'localhost'

社区对MySQL Shell的参与不断增加,这部分代码来自社区贡献。

尽管由于最近的更改,该贡献并不完全正确,但它是修复每当发生回滚dba.createCluster()命令而无法删除创建的帐户时所看到的错误的基础。

立即尝试并将您的反馈发送给我们

MySQL Shell 8.0.16 GA可从以下链接下载:

MySQL社区下载网站:https://dev.mysql.com/downloads/shell/

MySQL Shell也可以在GitHub上找到:https://github.com/mysql/mysql-shell

和往常一样,我们渴望倾听社区的反馈!请通过错误报告或支持服务单在评论中告诉我们您的想法。

您也可以通过#shell和Slack中的#router联系我们:https://mysqlcommunity.slack.com/

可以在https://dev.mysql.com/doc/mysql-shell/8.0/en/中找到MySQL Shell的文档,可以在MySQL InnoDB Cluster用户指南中找到InnoDB集群的官方文档。

完整的更改列表和错误修复可以在8.0.16Shell发行说明中找到。

感谢您使用MySQL!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值