如果執行個體離開叢集,例如因為失去連線,而且由於某些原因無法自動重新加入叢集,則可能需要在稍後階段將其重新加入叢集。若要將執行個體重新加入叢集,請發出
。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
選項傳遞至
方法,因為從叢集的角度來看,執行個體無法連線,而且無論如何我們都要從 InnoDB 叢集中繼資料中移除它。Cluster
.removeInstance()
rejoinInstance()
也會檢查執行個體使用的通訊堆疊,並確保叢集支援它。如果叢集支援通訊堆疊,則 rejoinInstance()
會將執行個體新增至叢集。