在本節中,我們列出將新資料節點新增至 NDB 叢集所需的基本步驟。無論您是使用 ndbd 或 ndbmtd 二進位檔作為資料節點程序,此程序都適用。如需更詳細的範例,請參閱第 25.6.7.3 節「線上新增 NDB 叢集資料節點:詳細範例」。
假設您已有一個正在執行的 NDB 叢集,線上新增資料節點需要以下步驟
編輯叢集組態
config.ini
檔案,新增對應於要新增節點的新[ndbd]
區段。如果叢集使用多個管理伺服器,則需要對管理伺服器使用的所有config.ini
檔案進行這些變更。您必須注意,
config.ini
檔案中新增的任何新資料節點的節點 ID 不會與現有節點使用的節點 ID 重疊。如果您有使用動態配置節點 ID 的 API 節點,而且這些 ID 與您要用於新資料節點的節點 ID 相符,則可以強制任何這類 API 節點「遷移」,如本程序稍後所述。對所有 NDB 叢集管理伺服器執行循環重新啟動。
對所有現有的 NDB 叢集資料節點執行循環重新啟動。重新啟動現有的資料節點時,不需要 (或通常甚至不希望) 使用
--initial
。如果您使用具有動態配置 ID 且與您要指派給新資料節點的任何節點 ID 相符的 API 節點,則必須在此步驟中重新啟動任何資料節點程序之前,重新啟動所有 API 節點 (包括 SQL 節點)。這會導致先前未明確指派的任何具有節點 ID 的 API 節點放棄這些節點 ID,並取得新的節點 ID。
對連線至 NDB 叢集的任何 SQL 或 API 節點執行循環重新啟動。
啟動新的資料節點。
新的資料節點可以以任何順序啟動。它們也可以同時啟動,只要它們是在所有現有資料節點的循環重新啟動完成之後,並且在繼續下一步之前啟動即可。
在 NDB 叢集管理用戶端中執行一個或多個
CREATE NODEGROUP
命令,以建立新的節點群組或新資料節點所屬的節點群組。在所有資料節點 (包括新的資料節點) 之間重新分配叢集的資料。通常,這是透過在 mysql 用戶端中針對每個
NDBCLUSTER
表發出ALTER TABLE ... ALGORITHM=INPLACE, REORGANIZE PARTITION
陳述式來完成的。例外:對於使用
MAX_ROWS
選項建立的表,此陳述式不起作用;請改用ALTER TABLE ... ALGORITHM=INPLACE MAX_ROWS=...
來重新組織這些表。您也應該記住,使用MAX_ROWS
以這種方式設定分割區的數量已過時,您應該改用PARTITION_BALANCE
;如需更多資訊,請參閱第 15.1.20.12 節「設定 NDB 註解選項」。注意只有在新增新的節點群組時已存在的表才需要執行此操作。在新增新的節點群組後建立的表中的資料會自動分配;但是,在新增新節點之前存在的任何給定表
tbl
中新增的資料,在重新組織該表之前不會使用新節點分配。ALTER TABLE ... REORGANIZE PARTITION ALGORITHM=INPLACE
會重新組織分割區,但不會回收 「舊」節點上釋放的空間。您可以透過在 mysql 用戶端中針對每個NDBCLUSTER
表發出OPTIMIZE TABLE
陳述式來執行此操作。這適用於記憶體內
NDB
表的變寬欄位所使用的空間。OPTIMIZE TABLE
不支援記憶體內表的固定寬度欄位;也不支援磁碟資料表。
您可以新增所有想要的節點,然後連續發出數個 CREATE NODEGROUP
命令,將新的節點群組新增至叢集。