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