下載本手冊
PDF (US Ltr) - 2.2Mb
PDF (A4) - 2.3Mb


7.8.4 重新掃描叢集

如果您在 AdminAPI 命令之外對叢集進行組態變更,例如透過手動變更執行個體的組態來解決組態問題,或在執行個體遺失後,您需要更新 InnoDB 叢集中繼資料,使其與執行個體的目前組態相符。在這些情況下,請使用 Cluster.rescan() 作業,讓您可以手動或使用互動式精靈更新 InnoDB 叢集中繼資料。Cluster.rescan() 作業可以偵測未在中繼資料中註冊的新作用中執行個體並新增它們,或偵測仍然在中繼資料中註冊的過時執行個體 (不再作用中),並移除它們。您可以根據命令找到的執行個體自動更新中繼資料,也可以指定要新增至中繼資料或從中繼資料移除的執行個體位址清單。您也可以更新中繼資料中儲存的拓撲模式,例如在 AdminAPI 之外從單一主要模式變更為多重主要模式之後。

注意

group_replication_transaction_size_limit 在複本叢集中設定為最大值。原始值儲存在中繼資料結構描述中,並在切換或容錯移轉時由 Cluster.rescan() 還原。

命令的語法為 Cluster.rescan([options])options 字典支援以下各項

  • addInstances:包含要新增至中繼資料的新作用中執行個體連線資料的清單,或 auto,以自動將遺失的執行個體新增至中繼資料。auto 值不區分大小寫。

    • 清單中指定的執行個體會新增至中繼資料,而不會提示確認

    • 在互動式模式中,系統會提示您確認新增未包含在 addInstances 選項中的新探索執行個體

    • 在非互動式模式中,未包含在 addInstances 選項中的新探索執行個體會報告在輸出中,但不會提示您新增它們

  • removeInstances:包含要從中繼資料移除的過時執行個體連線資料的清單,或 auto,以自動從中繼資料移除過時執行個體。

    • 清單中指定的執行個體會從中繼資料移除,而不會提示確認

    • 在互動式模式中,系統會提示您確認移除未包含在 removeInstances 選項中的過時執行個體

    • 在非互動式模式中,未包含在 removeInstances 選項中的過時執行個體會報告在輸出中,但不會提示您移除它們

  • updateViewChangeUuid:布林值,用來表示是否應為叢集執行個體上的 group_replication_view_change_uuid 系統變數產生並設定值。

    注意

    執行 MySQL Server 8.3.0 或更高版本的叢集不需要此值。

    此系統變數為群組產生的檢視變更事件提供替代 UUID。對於 8.0.27 和更新版本中發行的 MySQL Server 執行個體,對於屬於 InnoDB 叢集集的 InnoDB 叢集,group_replication_view_change_uuid 系統變數是必要的,而且必須在叢集中的所有成員伺服器上設定為相同的值。使用 dba.createCluster() 命令建立的 InnoDB 叢集會在所有成員伺服器上產生並設定系統變數的值。在 MySQL Shell 8.0.27 之前建立的 InnoDB 叢集可能未設定系統變數,但 InnoDB 叢集集建立程序會檢查此變數,如果不存在,則會產生警告並失敗。

    依預設,updateViewChangeUuid 設定為 false,而且如果在任何執行個體上找不到系統變數或不相符,則會傳回警告訊息,讓您知道必須為系統變數設定值,並重新啟動 InnoDB 叢集。如果將 updateViewChangeUuid 設定為 true,則重新掃描作業會為所有成員伺服器上的 group_replication_view_change_uuid 產生並設定值,然後您必須重新啟動叢集才能實作變更。Cluster.rescan() 命令會自動產生並設定系統變數值,其方式與設定 true 時相同,之後需要重新啟動叢集才能實作變更。重新啟動叢集後,您可以重試 InnoDB 叢集集建立程序。

  • upgradeCommProtocol:布林值,用來表示是否應將群組複寫通訊協定版本升級 (true) 或不升級 (false) 到叢集中最低 MySQL 版本執行個體所支援的版本。依預設,通訊協定版本不會升級 (false)。如果通訊協定版本可以升級,則會傳回導致拓撲變更的 AdminAPI 作業訊息,您可以使用此選項在適當的時間執行升級。建議升級至群組複寫通訊協定的最高可用版本,以支援最新的功能,例如大型交易的訊息分段。如需更多資訊,請參閱 設定群組的通訊協定版本

    • 如果值為 true,則會將群組複寫通訊協定版本升級至叢集中最低 MySQL 版本執行個體所支援的版本。

    • 如果值為 false,則不會升級群組複寫通訊協定版本。