文件首頁
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.7.7 對失敗偵測和網路分割的回應

群組複製的失敗偵測機制旨在識別不再與群組通訊的群組成員,並在似乎可能發生故障時將其驅逐。擁有失敗偵測機制可增加群組包含大多數正常運作成員的可能性,因此來自用戶端的請求可正確處理。

通常,所有群組成員都會定期與所有其他群組成員交換訊息。如果群組成員在 5 秒內沒有收到來自特定同伴成員的任何訊息,則當此偵測期間結束時,它會對同伴成員產生懷疑。當懷疑逾時時,會假設被懷疑的成員已失敗,並將其從群組中驅逐。被驅逐的成員會從其他成員看到的成員清單中移除,但它不知道自己已被從群組中驅逐,因此它會將自己視為在線上,而其他成員視為無法連線。如果成員實際上沒有失敗(例如,因為它只是由於暫時性網路問題而斷線),並且能夠恢復與其他成員的通訊,則它會收到一個視圖,其中包含它已被從群組中驅逐的資訊。

群組成員(包括失敗的成員本身)對這些情況的回應可以在過程中的許多點進行設定。預設情況下,如果懷疑成員已失敗,則會發生以下行為

  1. 在 MySQL 9.0 中,當產生懷疑時,會增加 5 秒的等待時間,然後懷疑才會逾時,且被懷疑的成員可能會被驅逐。

  2. 如果被驅逐的成員恢復通訊並意識到自己已被驅逐,它會自動嘗試重新加入群組三次(每次嘗試間隔 5 分鐘);如果此自動重新加入程序不起作用,則它會停止嘗試重新加入群組。

  3. 當被驅逐的成員沒有嘗試重新加入群組時,它會切換到超級唯讀模式並等待操作員注意。

您可以使用本節中描述的群組複製設定選項,以永久或暫時方式變更這些行為,以符合您系統的需求和優先順序。如果您遇到因網路或機器速度較慢、具有高比例意外暫時性中斷的網路,或計畫性網路中斷而導致不必要的驅逐,請考慮增加驅逐逾時和自動重新加入嘗試次數。當成員正在進行先前描述的任何預設行為時,雖然它不接受寫入,但如果成員仍然與用戶端通訊,則仍然可以執行讀取,並且隨著時間的推移,讀取陳舊資料的可能性會增加。如果避免讀取陳舊資料對您而言比避免操作員介入更重要,請考慮減少驅逐逾時和自動重新加入嘗試次數,或將其設定為零。

由於網路分割,尚未失敗的成員可能會失去與部分而非全部複製群組的連線。例如,在 5 台伺服器 (S1、S2、S3、S4、S5) 的群組中,如果 (S1、S2) 和 (S3、S4、S5) 之間斷線,則會發生網路分割。第一個群組 (S1、S2) 現在處於少數,因為它無法連線到超過一半的群組。少數群組的成員所處理的任何交易都會被封鎖,因為無法連線到大多數群組,因此群組無法達到仲裁。如需此案例的詳細說明,請參閱第 20.7.8 節,「處理網路分割和仲裁遺失」。在此情況下,預設行為是讓少數和多數成員都保留在群組中,繼續接受交易(儘管這些交易在少數成員上會被封鎖),並等待操作員介入。此行為也是可設定的。

請注意,當群組成員使用較舊的 MySQL Server 版本,而不支援相關設定,或使用具有不同預設值的版本時,它們會根據上述的預設行為對待自己和其他群組成員。舉例來說,不支援 group_replication_member_expel_timeout 系統變數的成員,一旦偵測到過期的懷疑,就會立即驅逐其他成員,即使其他成員支援該系統變數並設定了較長的逾時時間,也會接受此驅逐。