下載本手冊
PDF (美式信紙) - 2.2Mb
PDF (A4) - 2.3Mb


MySQL Shell 8.4  /  ...  /  從仲裁遺失還原叢集

7.8.2 從仲裁遺失還原叢集

如果有一個或多個執行個體失敗,則叢集可能會遺失其仲裁,也就是在新的主要節點中投票的能力。當發生足夠的執行個體失敗時,叢集中不再有多數執行個體可對群組複寫作業進行投票,就會發生這種情況。請參閱容錯能力。當叢集遺失仲裁時,您將無法再使用叢集處理寫入交易,或變更叢集的拓撲,例如新增、重新加入或移除執行個體。不過,如果您有一個包含 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-1ic-2ic-3 形成一個分割區,而 ic-4ic-5 形成另一個分割區。如果您連線到 ic-1 並發出 Cluster.forceQuorumUsingPartitionOf('icadmin@ic-1:3306') 來還原叢集,則產生的叢集將由這三個執行個體組成

  • ic-1

  • ic-2

  • ic-3

因為 ic-1ic-2ic-3 視為 ONLINE,而看不到 ic-4ic-5