文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
資訊 (Gzip) - 4.0Mb
資訊 (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  分散式復原

20.5.4 分散式復原

每當有成員加入或重新加入複製群組時,它都必須趕上在它加入之前或離開期間,由群組成員套用的交易。此流程稱為分散式復原。

加入的成員首先會檢查其 group_replication_applier 通道的轉送日誌,是否有任何它已從群組接收但尚未套用的交易。如果加入的成員先前已在群組中,它可能會找到離開之前未套用的交易,在這種情況下,它會先套用這些交易。新加入群組的成員則沒有任何要套用的交易。

在此之後,加入的成員會連線至現有的線上成員,以執行狀態轉移。加入的成員會轉移在其加入之前或離開期間,群組中發生的所有交易,這些交易由現有的成員(稱為捐贈者)提供。接下來,加入的成員會套用在狀態轉移進行期間,群組中發生的交易。當此流程完成時,加入的成員已趕上群組中剩餘的伺服器,並且開始正常參與群組。

群組複製在分散式復原期間,會結合下列這些方法進行狀態轉移

  • 使用複製外掛程式功能的遠端複製作業。若要啟用此狀態轉移方法,您必須在群組成員和加入的成員上安裝複製外掛程式。群組複製會自動設定所需的複製外掛程式設定,並管理遠端複製作業。

  • 從捐贈者的二進位日誌複製,並在加入的成員上套用交易。此方法會使用名為 group_replication_recovery 的標準非同步複製通道,該通道是在捐贈者和加入的成員之間建立。

當您在加入的成員上發出 START GROUP_REPLICATION 時,群組複製會自動選擇這些方法中最佳的組合來進行狀態轉移。為此,群組複製會檢查哪些現有成員適合做為捐贈者、加入的成員需要從捐贈者取得多少交易,以及任何所需的交易是否不再位於任何群組成員的二進位日誌檔中。如果加入的成員和適合的捐贈者之間的交易差距很大,或者如果某些需要的交易不在任何捐贈者的二進位日誌檔中,群組複製會開始進行遠端複製作業來進行分散式復原。如果交易差距不大,或者如果未安裝複製外掛程式,群組複製會直接從捐贈者的二進位日誌進行狀態轉移。

  • 在遠端複製作業期間,會移除加入成員上的現有資料,並以捐贈者的資料副本取代。當遠端複製作業完成且加入的成員重新啟動後,會從捐贈者的二進位日誌執行狀態轉移,以取得群組在遠端複製作業進行期間所套用的交易。

  • 在從捐贈者的二進位日誌進行狀態轉移期間,加入的成員會從捐贈者的二進位日誌複製並套用所需的交易,並在收到交易時套用交易,直到二進位日誌記錄加入的成員加入群組 (檢視變更事件) 為止。在此進行期間,加入的成員會緩衝群組套用的新交易。當從二進位日誌進行狀態轉移完成後,加入的成員會套用緩衝的交易。

當加入的成員與群組的所有交易同步時,系統會宣告其為線上狀態,並且可以像一般成員一樣參與群組,而分散式復原即告完成。

提示

從二進制日誌進行狀態轉移是 Group Replication 用於分散式復原的基本機制。如果您的複製群組中的捐贈者和加入成員未設定為支援複製 (cloning),這將是唯一可用的選項。由於從二進制日誌進行狀態轉移是基於傳統的非同步複製,如果加入群組的伺服器完全沒有群組的資料,或者資料來自非常舊的備份映像,則可能需要很長時間。在這種情況下,因此建議在將伺服器新增到群組之前,您應該先將群組中已存在的伺服器的一個相當新的快照傳輸給它,以設定群組的資料。這樣可以最大程度地縮短分散式復原所需的時間,並減少對捐贈伺服器的影響,因為它們必須保留和傳輸較少的二進制日誌檔案。