文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  分散式復原的容錯

20.5.4.4 分散式復原的容錯

群組複寫的分散式復原程序內建多項措施,以確保在程序期間發生任何問題時的容錯能力。

分散式復原的捐贈者是從目前檢視中現有適合的線上群組成員清單隨機選取的。選擇隨機捐贈者表示,當多個成員加入群組時,同一個伺服器不太可能被多次選取。對於來自二進位日誌的狀態傳輸,加入者只會選擇執行與自身相比更低或相等修補版本的 MySQL 伺服器作為捐贈者。對於較早的版本,允許所有線上成員成為捐贈者。對於遠端複製作業,加入者只會選擇執行與自身相同修補版本的捐贈者。請注意,當加入成員在作業結束時重新啟動後,它會建立與新的捐贈者的連線,以進行來自二進位日誌的狀態傳輸,這可能與用於遠端複製作業的原始捐贈者不同。

在下列情況下,群組複寫會偵測到分散式復原中的錯誤、自動切換至新的捐贈者,並重試狀態傳輸

  • 連線錯誤 - 在建立與候選捐贈者的連線時,發生驗證問題或其他問題。

  • 複寫錯誤 - 用於從二進位日誌進行狀態傳輸的複寫執行緒之一(接收器或套用器執行緒)失敗。由於這種狀態傳輸方法使用現有的 MySQL 複寫架構,因此可能會有一些暫時性錯誤導致接收器或套用器執行緒中發生錯誤。

  • 遠端複製作業錯誤 - 遠端複製作業失敗或在完成前停止。

  • 捐贈者離開群組 - 當狀態傳輸正在進行時,捐贈者離開群組,或在捐贈者上停止群組複寫。

效能結構描述表格 replication_applier_status_by_worker 會顯示造成上次重試的錯誤。在這些情況下,會在發生錯誤後嘗試與新的候選捐贈者建立新連線。在發生錯誤時選擇不同的捐贈者表示,新的候選捐贈者有可能沒有相同的錯誤。如果安裝了複製外掛程式,群組複寫會先嘗試與每個適合的線上支援複製的捐贈者執行遠端複製作業。如果所有這些嘗試都失敗,群組複寫會接著嘗試在所有適合的捐贈者之間從二進位日誌進行狀態傳輸 (如果可能的話)。

警告

對於遠端複製作業,會在開始從捐贈者傳輸資料的遠端複製作業之前,捨棄接收者 (加入成員) 上使用者建立的表格空間與資料。如果遠端複製作業開始但未完成,加入成員可能會遺留部分原始資料檔案,或沒有使用者資料。如果複製作業在資料完全複製之前停止,則會從接收者移除由捐贈者傳輸的資料。可以藉由重試複製作業來修復此情況,群組複寫會自動執行此作業。

在下列情況下,無法完成分散式復原程序,並且加入成員會離開群組

  • 已清除的交易 - 加入成員所需的交易不存在於任何線上群組成員的二進位日誌檔案中,且無法透過遠端複製作業取得資料 (因為未安裝複製外掛程式,或者因為已嘗試與所有可能的捐贈者進行複製,但失敗)。因此,加入成員無法趕上群組的進度。

  • 額外的交易 - 加入成員已包含群組中不存在的一些交易。如果執行遠端複製作業,這些交易將會被刪除並遺失,因為加入成員上的資料目錄已清除。如果執行來自捐贈者二進位日誌的狀態傳輸,這些交易可能會與群組的交易衝突。如需有關處理此情況的建議,請參閱額外的交易

  • 達到連線重試次數限制 - 加入的成員已達到連線重試次數限制所允許的所有連線嘗試。您可以使用 group_replication_recovery_retry_count 系統變數來設定此限制(請參閱第 20.5.4.3 節, “設定分散式復原”)。

  • 沒有其他捐贈者 - 加入的成員已依序嘗試與每個線上支援複製的捐贈者進行遠端複製操作(如果已安裝複製外掛程式),但皆未成功;然後,如果可能,它也已依序嘗試從每個適合的線上捐贈者的二進位日誌傳輸狀態,但皆未成功。

  • 加入的成員離開群組 - 加入的成員在狀態傳輸進行中離開群組,或在加入的成員上停止群組複製。

如果加入的成員非自願地離開群組,也就是在上述情況(最後一種情況除外)的任何一種情況下,它會繼續執行 group_replication_exit_state_action 系統變數所指定的動作。