MySQL 8.4 發行說明
群組複製確保交易僅在群組中大多數成員收到交易,並同意所有並行傳送的交易之間的相對順序之後才會提交。如果群組的總寫入次數未超過群組中任何成員的寫入容量,這種方法可以正常運作。如果超過了,並且某些成員的寫入輸送量低於其他成員,特別是低於寫入器成員,這些成員可能會開始落後於寫入器。
有些成員落後於群組會帶來一些問題後果,特別是,在這些成員上讀取可能會外部化非常舊的資料。根據成員落後的原因,群組中的其他成員可能必須儲存或多或少的複製內容,才能滿足來自慢速成員的潛在資料傳輸請求。
不過,複製協定中有一種機制可以避免快速和慢速成員之間在應用交易方面產生過大的差距。這稱為流量控制機制。它試圖解決幾個目標
使成員保持足夠接近,以使成員之間的緩衝和非同步問題最小化;
快速適應不斷變化的條件,例如不同的工作負載或群組中更多的寫入器;
讓每個成員公平分享可用的寫入容量;
不降低輸送量,除非嚴格必要,以避免浪費資源。
鑑於群組複製的設計,是否要節流的決定可以考慮兩個工作佇列來決定: (i) 驗證佇列;(ii) 以及二進位記錄 應用程式佇列。每當其中一個佇列的大小超過使用者定義的臨界值時,就會觸發節流機制。僅配置:(i) 是否要在驗證器或應用程式層級或兩者都執行流量控制;以及 (ii) 每個佇列的臨界值為何。
流量控制取決於兩個基本機制
監控成員以收集所有群組成員的輸送量和佇列大小的一些統計資訊,以便對每個成員應承受的最大寫入壓力做出有根據的猜測;
節流嘗試寫入超出其在每個時間點可用的公平份額容量的成員。