如果一個或多個執行個體失敗,則叢集可能會遺失仲裁,也就是在新的主要節點中投票的能力。當發生足夠多的執行個體故障,導致組成叢集的執行個體多數無法對群組複寫作業進行投票時,就會發生這種情況。請參閱容錯。當叢集遺失仲裁時,您將無法再使用叢集處理寫入交易,或變更叢集的拓撲,例如新增、重新加入或移除執行個體。但是,如果您有一個包含 InnoDB 叢集中繼資料的線上執行個體,則可以還原具有仲裁的叢集。這假設您可以連線到包含 InnoDB 叢集中繼資料的執行個體,而且該執行個體可以聯絡您要用來還原叢集的其他執行個體。
此作業具有潛在的危險性,因為如果使用不當,可能會造成腦裂情況,應視為最後手段。請務必確認網路上沒有仍在運作但無法從您的位置存取的此群組分割區。
連線到包含叢集中繼資料的執行個體,然後使用
作業,根據 Cluster
.forceQuorumUsingPartitionOf(instance
)instance
上的中繼資料還原叢集,然後將指定執行個體定義的角度來看 ONLINE
的所有執行個體新增至還原的叢集。
mysql-js> cluster.forceQuorumUsingPartitionOf("icadmin@ic-1:3306")
Restoring replicaset 'default' from loss of quorum, by using the partition composed of [icadmin@ic-1:3306]
Please provide the password for 'icadmin@ic-1:3306': ******
Restoring the InnoDB cluster ...
The InnoDB cluster was successfully restored using the partition from the instance 'icadmin@ic-1:3306'.
WARNING: To avoid a split-brain scenario, ensure that all other members of the replicaset
are removed or joined back to the group that was restored.
如果執行個體未自動新增至叢集(例如,其設定未持續保存),請使用
將執行個體手動新增回叢集。Cluster
.rejoinInstance()
還原的叢集可能不包含,而且不必包含組成叢集的所有原始執行個體。例如,如果原始叢集由以下五個執行個體組成
ic-1
ic-2
ic-3
ic-4
ic-5
並且叢集發生腦裂情況,ic-1
、ic-2
和 ic-3
形成一個分割區,而 ic-4
和 ic-5
形成另一個分割區。如果您連線到 ic-1
並發出
以還原叢集,則產生的叢集將包含這三個執行個體Cluster
.forceQuorumUsingPartitionOf('icadmin@ic-1:3306')
ic-1
ic-2
ic-3
因為 ic-1
將 ic-2
和 ic-3
視為 ONLINE
,而看不到 ic-4
和 ic-5
。