依預設,由於網路分割而發現自己處於少數的成員不會自動離開群組。您可以使用系統變數 group_replication_unreachable_majority_timeout
來設定成員在與大多數群組成員失去連線後等待的秒數,然後離開群組。設定逾時表示您不需要主動監控網路分割後處於少數群組中的伺服器,而且可以避免由於不當介入而產生腦裂情況 (具有兩個版本的群組成員資格) 的可能性。
當 group_replication_unreachable_majority_timeout
指定的逾時時間經過時,成員和少數群組中的其他成員已處理的所有擱置交易都會復原,而且該群組中的伺服器會移至 ERROR
狀態。您可以使用 group_replication_autorejoin_tries
系統變數來強制成員在此時嘗試自動重新加入群組。此功能預設為啟用;成員會嘗試自動重新加入三次。如果自動重新加入程序不成功或未嘗試,則少數成員會遵循 group_replication_exit_state_action
指定的結束動作。
在決定是否設定無法連線多數逾時時,請考量下列幾點
在對稱群組中,例如具有兩個或四個伺服器的群組中,如果兩個分割區都包含相同數量的伺服器,則兩個群組都會認為自己處於少數並進入
ERROR
狀態。在這種情況下,群組沒有可運作的分割區。當少數群組存在時,少數群組處理的任何交易都會被接受,但會被封鎖,因為少數伺服器無法達到仲裁,直到在這些伺服器上發出
STOP GROUP_REPLICATION
或達到無法連線多數逾時為止。如果您未設定無法連線多數逾時,則少數群組中的伺服器永遠不會自動進入
ERROR
狀態,而且您必須手動停止它們。如果在偵測到失去多數之後在少數群組中的伺服器上設定無法連線多數逾時,則設定它不會產生任何影響。
如果您未使用 group_replication_unreachable_majority_timeout
系統變數,則 第 20.7.8 節「處理網路分割和仲裁遺失」中說明了在發生網路分割事件時操作員介入的程序。此程序涉及檢查哪些伺服器正在運作,並在必要時強制執行新的群組成員資格。