文件首頁
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


20.7.7.1 驅逐逾時

您可以使用 group_replication_member_expel_timeout 系統變數,在建立懷疑和驅逐可疑成員之間允許額外的時間。當一個伺服器沒有收到來自另一個伺服器的訊息時,就會產生懷疑,如第 20.1.4.2 節「故障偵測」中所述。

在群組複製群組成員對另一個成員 (或對自己) 產生懷疑之前,會有最初的 5 秒偵測期。然後,當另一個成員對其的懷疑 (或其自己對自己的懷疑) 超時時,就會驅逐群組成員。在此之後,可能還會經過一小段時間,驅逐機制才會偵測並實施驅逐。group_replication_member_expel_timeout 指定群組成員在產生懷疑和驅逐可疑成員之間等待的時間,稱為驅逐逾時,單位為秒。可疑成員在此等待期間會列為 UNREACHABLE,但不會從群組的成員資格清單中移除。

  • 如果可疑成員在等待期結束時的懷疑超時之前再次變為作用中,則該成員會套用 XCom 訊息快取中其餘群組成員緩衝的所有訊息,並進入 ONLINE 狀態,而無需操作員介入。在這種情況下,群組會將該成員視為相同的化身。

  • 如果可疑成員僅在懷疑超時後才變為作用中,並且能夠恢復通訊,則它會收到一個它已被驅逐的檢視,並在那時意識到自己已被驅逐。您可以使用 group_replication_autorejoin_tries,使成員在此時嘗試自動重新加入群組。此功能在 MySQL 8.4 中預設為啟用,且成員會嘗試自動重新加入三次。如果自動重新加入程序不成功或未嘗試,則被驅逐的成員會遵循 group_replication_exit_state_action 指定的結束動作。

驅逐成員之前的等待期僅適用於先前在群組中處於作用中的成員。從未在群組中作用過的非成員不會獲得此等待期,並且會在初始偵測期後被移除,因為他們加入的時間太長。

如果將 group_replication_member_expel_timeout 設定為 0,則沒有等待期,並且可疑成員會在最初的 5 秒偵測期結束後立即被驅逐。預設值為 5,這表示可疑成員在 5 秒偵測期結束後的 5 秒後,就會被驅逐。群組的所有成員不一定要針對 group_replication_member_expel_timeout 具有相同的設定,但建議這樣做,以避免意外的驅逐。任何成員都可以對任何其他成員 (包括自己) 產生懷疑,因此有效的驅逐逾時是設定最低的成員。

在下列情況下,請考慮將 group_replication_member_expel_timeout 的值從預設值增加

  • 網路速度緩慢,且驅逐前的預設 5 或 10 秒時間不足以讓群組成員始終交換至少一個訊息。

  • 網路有時會出現暫時性中斷,且您想要避免在這些時間發生不必要的驅逐和主要成員變更。

  • 網路不在您的直接控制之下,且您想要盡量減少操作員介入的需求。

  • 預期會發生暫時性的網路中斷,您不希望部分或所有成員因此而被逐出群組。

  • 個別機器發生速度變慢的情況,您不希望它被逐出群組。

您可以指定一個最長為 3600 秒(1 小時)的逐出逾時時間。請務必確保 XCom 的訊息快取具有足夠的大小,以容納您指定時間段內預期的訊息量,再加上最初的 5 秒偵測時間,否則成員將無法重新連線。您可以使用 group_replication_message_cache_size 系統變數調整快取大小限制。如需更多資訊,請參閱第 20.7.6 節「XCom 快取管理」

如果群組中有任何成員目前處於被懷疑的狀態,則無法重新設定群組成員資格(透過新增或移除成員或選出新領導者)。如果需要在一個或多個成員處於被懷疑狀態時實作群組成員資格變更,並且您希望被懷疑的成員保留在群組中,請採取任何必要的行動使成員再次恢復活躍,如果可能的話。如果您無法使成員再次恢復活躍,並且您希望將它們從群組中逐出,您可以強制懷疑立即逾時。方法是在任何活躍成員上,將 group_replication_member_expel_timeout 的值變更為低於懷疑建立以來已經經過的時間的值。如此一來,被懷疑的成員就會立即被視為可被逐出。

如果複寫群組成員意外停止並立即重新啟動(例如,因為它是使用 mysqld_safe 啟動的),如果設定了 group_replication_start_on_boot=on,它會自動嘗試重新加入群組。在這種情況下,重新啟動和重新加入的嘗試可能會在成員先前版本被逐出群組之前發生,在這種情況下,該成員將無法重新加入。群組複寫會自動使用群組通訊系統 (GCS) 功能來重試成員的重新加入嘗試 10 次,每次重試之間間隔 5 秒。這應該可以涵蓋大多數情況,並為先前版本被逐出群組提供足夠的時間,讓成員重新加入。請注意,如果 group_replication_member_expel_timeout 系統變數設定為指定更長的等待時間,然後成員才被逐出,則自動重新加入的嘗試可能仍然無法成功。

如需避免不必要逐出的替代緩解策略,如果 group_replication_member_expel_timeout 系統變數不可用,請參閱第 20.3.2 節「群組複寫限制」