{{ item.name }}
{{ item.name }}

{{ it.name }}

{{ it.text }}

{{ it.name }}

{{ innerIt.name }}

{{ innerIt.text }}

{{news.time}}
{{news.title}}
详解MySQL|帮你解读MySQL 8.0.16组复制通讯协议的设置
2020-04-29发布 1,049浏览

背景

在上一篇推文中,我们介绍了 MySQL Group Replication 8.0.16 支持信息碎片化功能来增强大型事务处理能力。

如果您想在组复制中使用该功能,则任何组成员的版本都不能低于 8.0.16!

简单地说就是由于低版本协议上不支持。MySQL 8.0.16 的组通讯开始支持新协议,简称“分段协议”,之前的版本中只有一种“压缩协议”

如果多个成员想加入复制组,那么在协议匹配上遵循以下原则:

  1. 现有复制组成员和新加入成员版本相同,加入成功。

  2. 低版本成员想加入高版本的组会被驱逐,加入失败。

  3. 高版本的成员想加入低版本的组,单独加入成功,多个加入失败。

例如:

  • 一个 MySQL Server 8.0.16 实例可以成功加入使用通信协议版本 5.7.24 的组。

  • 一个 MySQL Server 5.7.24 实例无法成功加入使用通信协议版本 8.0.16 的组。

  • 两个 MySQL Server 8.0.16 实例无法同时加入使用通信协议版本 5.7.24 的组。

  • 两个 MySQL Server 8.0.16 实例可以同时加入使用通信协议版本 8.0.16 的组。


新增 UDF

为了能让高版本的复制组更便于加入低版本的成员,MySQL 8.0.16 新增两个 UDF。

您可以使用两个新的 UDF 命令去管理组通信协议:

1. group_replication_set_communication_protocol(new_protocol)

设置组复制通讯协议版本

SELECT group_replication_set_communication_protocol("8.0.15");

填入一个所有成员都支持的版本号,即:new_protocol ≤ 所有成员的 MySQL版本。

new_protocol 格式:major.minor.patch (主版本号.次版本号.发布版本号)例如:8.0.15


2. group_replication_get_communication_protocol()

获取复制中最旧成员的 MySQL 版本号

    SELECT group_replication_get_communication_protocol();    +------------------------------------------------+    | group_replication_get_communication_protocol() |    +------------------------------------------------+    | 5.7.14                                         |    +------------------------------------------------+

获取的版本号可能与设置的值不一致,但不一致的版本之间组复制协议是一样的。

返回结果格式:major.minor.patch (主版本号.次版本号.发布版本号)例如:8.0.15

以上两个 UDF 对全部组成员有效,主机或从机上均可执行。


结论

若想使用信息碎片功能。建议将组复制成员全部升级为 8.0.16。

若组内成员版本仅有部分为 8.0.16,可以用两个新的函数来让高版本的成员保持与其它成员组协议一致。

上一篇
爱可生帮你解读MySQL 8.0.16:组复制通讯协议的设置
400-820-6580 13916131869
marketing@actionsky.com
上海市闵行区万源路2138号泓茂中心2号楼
产品详情
关系型数据库
AI数据库
数据库智能管理平台
数据库生态产品
行业案例
金融行业
新零售行业
制造业
通信行业
更多
公司动态
最新新闻
国产化信息
技术分享
关于我们
公司简介
公司分布
国家专利
资质认证
扫码关注公众号
© Copyright 2017, All rights reserved by: 上海爱可生信息技术股份有限公司 沪ICP备12003970号-1 | 法律声明 | 网站地图
沪公网安备 31010402003331号