新特性解讀 | MySQL 8.0.16 組複製新功能:消息碎片化

原創: 管長龍 fan譯mysql


標籤:Group Communication System, Group Replication, High Availability, XComsql

 

MySQL 8.0.16 已經發布,它像往常同樣加強了組複製 Group Replication 功能。spa

這篇文章介紹了 MySQL 8.0.16 爲 Group Replication 帶來的新功能:插件

Message fragmentation(信息碎片化)線程

 

背景

Group Replication 目前使用 XCom(一種組通訊引擎),特色:原子性,組員狀態檢測等。每一個成員的組複製插件先將信息轉發到本地 XCom,再由 XCom 最終以相同的順序將信息傳遞給每一個組成員的 Group Replication 插件。3d

XCom 由單線程實現。當一些成員廣播信息過大時,XCom 線程必須花費更多的時間來處理那個大信息。若是成員的 XCom 線程忙於處理大信息的時間過長,它可能會去查看其餘成員的 XCom 實例。例如,忙碌的成員失效。若是是這樣,該組能夠從該組中驅逐忙碌的成員。blog

MySQL 8.0.13 新增  group_replication_member_expel_timeout  系統變量,您能夠經過它來調整將成員從組中驅逐的時間。例如,懷疑成員失敗,但成員實際上忙於處理大信息,給成員足夠的時間來完成處理。在這種狀況下,是否爲成員增長驅逐超時的設置是一種權衡。有可能等了好久,該成員實際真的失效了。get

 

Message fragmentation(信息碎片化)

MySQL 8.0.16 的 Group Replication 插件新增用來處理大信息的功能:信息碎片化。it

簡而言之,您能夠爲成員的廣播信息指定最大值。超過最大值的信息將分段爲較小的塊傳播。io

您可使用  group_replication_communication_max_message_size  系統變量指定容許的信息最大值(默認值爲10 MiB)。

 

示例

讓咱們用一個例子來解釋新功能。圖1顯示了當綠色成員向組廣播信息時,新功能是如何處理的。

1. 若是信息大小超過用戶容許的最大值(group_replication_communication_max_message_size),則該成員會將信息分段爲不超過最大值的塊。

2. 該成員將每一個塊廣播到該組,即將每一個塊單獨轉發到XCom。

XCom 最終將這些塊提供給組成員。下面三張圖展現出了中間綠色成員發送大信息時工做的新特徵。

3. 成員得出結論,傳入的信息其實是一個更大信息的片斷。

4. 成員緩衝傳入的片斷,由於他們認爲片斷是仍然不完整的信息的一部分。(片斷包含必要的元數據以達到這個結論。)

5. 見上面的第3步。

6. 見上面的第4步。

7. 成員得出結論,傳入的信息其實是一個更大信息的片斷。

8. 成員得出結論,傳入的片斷是最後一個缺失的塊,從新組合原始信息,而後對其進行處理,傳輸完畢。

 

結論

MySQL 8.0.16 已經發布後,組複製如今能夠確保組內交換的信息大小不超過用戶定義的閾值。這能夠防止組內誤判而驅逐成員。

參考:https://mysqlhighavailability.com/enhanced-support-for-large-transactions-in-group-replication/

相關文章
相關標籤/搜索