執行 MySQL 8.0.16 和更新版本的執行個體支援群組複寫自動重新加入功能,讓您可以設定執行個體在被逐出後自動重新加入叢集。如需背景資訊,請參閱對失敗偵測和網路分割的回應。AdminAPI 提供 autoRejoinTries
選項,可設定執行個體在被逐出後嘗試重新加入叢集的次數。依預設,執行個體不會自動重新加入叢集。您可以使用下列命令,在叢集層級或針對個別執行個體設定 autoRejoinTries
選項
dba.createCluster()
Cluster.addInstance()
Cluster.setOption()
Cluster.setInstanceOption()
autoRejoinTries
選項接受 0 到 2016 之間的正整數值,預設值為 3。使用自動重新加入功能時,您的叢集對錯誤的容錯能力會更高,特別是不穩定網路等暫時性錯誤。但如果仲裁遺失,您不應期望成員自動重新加入叢集,因為重新加入執行個體需要大多數。
執行 MySQL 8.0.12 和更新版本的執行個體具有 group_replication_exit_state_action
變數,您可以使用 AdminAPI exitStateAction
選項加以設定。這會控制執行個體在意外離開叢集時的行為。依預設,exitStateAction
選項為 READ_ONLY
,這表示意外離開叢集的執行個體會變成唯讀。如果 exitStateAction
設定為 OFFLINE_MODE
,則意外離開叢集的執行個體會變成唯讀,並進入離線模式,在此模式中,它們會中斷現有用戶端的連線,且不接受新的連線 (來自具有管理員權限的用戶端除外)。如果 exitStateAction
設定為 ABORT_SERVER
,則在意外離開叢集時,執行個體會關閉 MySQL,而且必須重新啟動才能重新加入叢集。請注意,當您使用自動重新加入功能時,exitStateAction
選項設定的動作只會在所有重新加入叢集的嘗試都失敗時才會發生。
您可能會連線到執行個體並嘗試使用 AdminAPI 設定執行個體,但此時執行個體可能會重新加入叢集。當您使用任何下列作業時,可能會發生這種情況
Cluster.status()
dba.getCluster()
Cluster.rejoinInstance()
Cluster.addInstance()
Cluster.removeInstance()
Cluster.rescan()
當執行個體自動重新加入叢集時,這些作業可能會提供額外資訊。此外,當您使用
時,如果目標執行個體自動重新加入叢集,除非您傳入 Cluster
.removeInstance()force:true
,否則作業會中止。