原創做者: 管長龍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/