新特性解讀 | MySQL 8.0.16 組複製通信協議的設置

原創做者: 管長龍html


標籤:Group Communication System, Group Replication, High Availabilitymysql

 

背景

在上一篇推文中,咱們介紹了 MySQL Group Replication 8.0.16 支持信息碎片化功能來加強大型事務處理能力。sql

若是您想在組複製中使用該功能,則任何組成員的版本都不能低於 8.0.16!函數

簡單地說就是因爲低版本協議上不支持。MySQL 8.0.16 的組通信開始支持新協議,簡稱**「分段協議」,以前的版本中只有一種「壓縮協議」**。spa

若是多個成員想加入複製組,那麼在協議匹配上遵循如下原則:code

  1. 現有複製組成員和新加入成員版本相同,加入成功。htm

  2. 低版本成員想加入高版本的組會被驅逐,加入失敗。事務

  3. 高版本的成員想加入低版本的組,單獨加入成功,多個加入失敗。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 的組。

 

新增 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,能夠用兩個新的函數來讓高版本的成員保持與其它成員組協議一致。

參考:

組複製協議:https://dev.mysql.com/doc/refman/8.0/en/group-replication-communication-protocol.html

相關博文:https://mysqlhighavailability.com/configuring-the-communication-protocol-in-group-replication/

相關文章
相關標籤/搜索