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


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

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() 會將執行個體新增至叢集。