在本節中,我們列出將新資料節點新增至 NDB Cluster 所需的基本步驟。此程序適用於您是否使用 ndbd 或 ndbmtd 二進位檔來處理資料節點程序。如需更詳細的範例,請參閱 第 25.6.7.3 節,〈線上新增 NDB Cluster 資料節點:詳細範例〉。
假設您已有一個正在執行的 NDB Cluster,線上新增資料節點需要以下步驟
編輯叢集組態
config.ini
檔案,新增與要新增的節點相對應的新[ndbd]
區段。如果叢集使用多個管理伺服器,則這些變更需要對管理伺服器使用的所有config.ini
檔案進行。您必須小心
config.ini
檔案中新增的任何新資料節點的節點 ID,不要與現有節點使用的節點 ID 重疊。如果您有使用動態分配節點 ID 的 API 節點,而這些 ID 與您要用於新資料節點的節點 ID 相符,則可以強制任何此類 API 節點「遷移」,如本程序稍後所述。對所有 NDB Cluster 管理伺服器執行滾動重新啟動。
對所有現有的 NDB Cluster 資料節點執行滾動重新啟動。重新啟動現有的資料節點時,不需要 (或通常甚至不希望) 使用
--initial
。如果您使用具有與您希望指派給新資料節點的任何節點 ID 相符的動態分配 ID 的 API 節點,您必須在本步驟中重新啟動任何資料節點程序之前,重新啟動所有 API 節點 (包括 SQL 節點)。這會導致任何具有先前未明確指派的節點 ID 的 API 節點放棄這些節點 ID 並取得新的節點 ID。
對連接到 NDB Cluster 的任何 SQL 或 API 節點執行滾動重新啟動。
啟動新的資料節點。
新的資料節點可以任何順序啟動。它們也可以同時啟動,只要它們是在所有現有資料節點的滾動重新啟動完成之後,且在繼續進行下一步驟之前啟動即可。
在 NDB Cluster 管理用戶端中執行一或多個
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
命令,將新的節點群組新增至叢集。