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


MySQL Shell 9.0  /  ...  /  將執行個體重新加入叢集

7.8.1 將執行個體重新加入叢集

如果執行個體離開叢集,例如因為連線中斷,且由於某些原因無法自動重新加入叢集,則可能需要在稍後階段將其重新加入叢集。若要將執行個體重新加入叢集,請發出 Cluster.rejoinInstance(instance)

提示

如果執行個體具有 super_read_only=ON,則您可能需要確認 AdminAPI 可以設定 super_read_only=OFF。如需更多資訊,請參閱在超級唯讀模式中的執行個體組態

如果執行個體未保留其組態(請參閱第 6.2.3 節「保留設定」),則在重新啟動時,執行個體不會自動重新加入叢集。解決方案是發出 cluster.rejoinInstance(),讓執行個體再次新增至叢集,並確保變更已保留。一旦 InnoDB 叢集組態保留至執行個體的選項檔,它就會自動重新加入叢集。

如果您重新加入以某種方式變更的執行個體,則可能必須修改執行個體才能使重新加入程序正確運作。例如,當您還原 MySQL Enterprise Backup 備份時,server_uuid 會變更。嘗試重新加入此類執行個體會失敗,因為 InnoDB 叢集執行個體是由 server_uuid 變數識別。在此情況下,必須從 InnoDB 叢集元資料中移除有關執行個體舊的 server_uuid 的資訊,然後必須執行 Cluster.rescan(),以使用其新的 server_uuid 將執行個體新增至元資料。例如

cluster.removeInstance("root@instanceWithOldUUID:3306", {force: true})

cluster.rescan()

在這種情況下,您必須將 force 選項傳遞至 Cluster.removeInstance() 方法,因為從叢集的角度來看,執行個體無法存取,而且我們無論如何都想將其從 InnoDB 叢集元資料中移除。

rejoinInstance() 也會檢查執行個體使用的通訊堆疊,並確保叢集支援它。如果叢集支援通訊堆疊,rejoinInstance() 會將執行個體新增至叢集。