原创做者: 管长龙html
标签:Group Communication System, Group Replication, High Availabilitymysql
在上一篇推文中,咱们介绍了 MySQL Group Replication 8.0.16 支持信息碎片化功能来加强大型事务处理能力。sql
若是您想在组复制中使用该功能,则任何组成员的版本都不能低于 8.0.16!函数
简单地说就是因为低版本协议上不支持。MySQL 8.0.16 的组通信开始支持新协议,简称**“分段协议”,以前的版本中只有一种“压缩协议”**。spa
若是多个成员想加入复制组,那么在协议匹配上遵循如下原则:code
现有复制组成员和新加入成员版本相同,加入成功。htm
低版本成员想加入高版本的组会被驱逐,加入失败。事务
高版本的成员想加入低版本的组,单独加入成功,多个加入失败。get
例如:it
一个 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 的组。
为了能让高版本的复制组更便于加入低版本的成员,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,能够用两个新的函数来让高版本的成员保持与其它成员组协议一致。
参考:
组复制协议:https://dev.mysql.com/doc/refman/8.0/en/group-replication-communication-protocol.html
相关博文:https://mysqlhighavailability.com/configuring-the-communication-protocol-in-group-replication/