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


MySQL 9.0 參考手冊  /  ...  /  分散式復原的容錯能力

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 系統變數所指定的動作執行。