本節討論如何執行 NDB Cluster 安裝的滾動式重新啟動,之所以稱為滾動式,是因為它涉及依序停止和啟動 (或重新啟動) 每個節點,以便叢集本身保持運作。這通常是滾動式升級或滾動式降級的一部分,在這種情況下,叢集的高可用性是強制性的,而且整體而言不允許叢機停機。在我們提到升級的地方,此處提供的資訊通常也適用於降級。
有很多原因可能需要進行滾動式重新啟動。這些將在接下來的幾段中說明。
組態變更。 變更叢集的組態,例如將 SQL 節點新增至叢集,或將組態參數設定為新值。
NDB Cluster 軟體升級或降級。 將叢集升級到較新版本的 NDB Cluster 軟體 (或將其降級到較舊版本)。這通常稱為「滾動式升級」 (或還原到較舊版本 NDB Cluster 時稱為「滾動式降級」)。
節點主機上的變更。 變更執行一個或多個 NDB Cluster 節點處理序的硬體或作業系統。
系統重設 (叢集重設)。 由於叢集已達到不理想的狀態而重設叢集。在這種情況下,通常需要重新載入一個或多個資料節點的資料和中繼資料。這可以透過以下三種方式中的任何一種來完成
啟動每個資料節點處理序 (ndbd 或可能是 ndbmtd),並使用
--initial
選項,這會強制資料節點清除其檔案系統,並從其他資料節點重新載入所有 NDB Cluster 資料和中繼資料。這也會強制移除所有磁碟資料物件和與這些物件相關的檔案。在執行重新啟動之前,使用 ndb_mgm 用戶端
START BACKUP
命令建立備份。升級後,使用 ndb_restore 還原節點。如需更多資訊,請參閱 第 25.6.8 節「NDB Cluster 的線上備份」 和 第 25.5.23 節「ndb_restore — 還原 NDB Cluster 備份」。
資源復原。 釋放先前透過連續的 INSERT
和 DELETE
作業配置給表格的記憶體,以便其他 NDB Cluster 表格重複使用。
執行滾動式重新啟動的流程可以概括如下
停止所有叢集管理節點 (ndb_mgmd 處理序),重新設定它們,然後重新啟動它們。(請參閱 使用多個管理伺服器進行滾動式重新啟動。)
依序停止、重新設定,然後重新啟動每個叢集資料節點 (ndbd 處理序)。
在先前的步驟之後,可以透過針對 ndb_mgm 用戶端中的每個資料節點發出
RESTART
來更新某些節點組態參數。其他參數則需要使用管理用戶端STOP
命令完全停止資料節點,然後透過叫用適當的 ndbd 或 ndbmtd 可執行檔,從系統殼層重新啟動資料節點。(在大多數 Unix 系統上,也可以使用像是 kill 等的殼層命令來停止資料節點處理序,但是STOP
命令是慣用的,而且通常比較簡單。)注意在 Windows 上,您也可以使用 SC STOP 和 SC START 命令、
NET STOP
和NET START
命令,或 Windows 服務管理員來停止和啟動已安裝為 Windows 服務的節點 (請參閱 第 25.3.2.4 節「將 NDB Cluster 處理序安裝為 Windows 服務」)。每個節點組態參數的文件中都會指出所需的重新啟動類型。請參閱 第 25.4.3 節「NDB Cluster 組態檔」。
依序停止、重新設定,然後重新啟動每個叢集 SQL 節點 (mysqld 處理序)。
NDB Cluster 支援一種相當彈性的節點升級順序。在升級 NDB Cluster 時,您可以先升級 API 節點 (包括 SQL 節點),然後再升級管理節點、資料節點或兩者。換句話說,您允許以任何順序升級 API 和 SQL 節點。這須遵守以下規定
此功能僅適用於作為線上升級的一部分。來自不同 NDB Cluster 版本的節點二進位檔組合既非預期,也不支援在生產環境中持續長期使用。
您必須先升級所有相同類型的節點 (管理、資料或 API 節點),然後才能升級任何不同類型的節點。無論節點的升級順序為何,此規定仍然適用。
您必須先升級所有管理節點,然後才能升級任何資料節點。無論您升級叢集 API 和 SQL 節點的順序為何,此規定仍然適用。
在所有管理節點和資料節點都升級之前,不得使用 「新」版本的特定功能。
這也適用於任何可能適用的 MySQL 伺服器版本變更,以及 NDB 引擎版本變更,因此在規劃升級時不要忘記將其考慮在內。(這通常適用於 NDB Cluster 的線上升級。)
任何 API 節點都無法在節點重新啟動期間執行結構描述作業 (例如資料定義陳述式)。部分原因在於此限制,結構描述作業在線上升級或降級期間也不受支援。此外,在升級或降級進行時,無法執行原生備份。
使用多個管理伺服器進行滾動式重新啟動。 在使用多個管理節點執行 NDB Cluster 的滾動式重新啟動時,您應該記住,ndb_mgmd 會檢查是否有任何其他管理節點正在執行,如果有,則會嘗試使用該節點的組態資料。為了避免發生這種情況,並強制 ndb_mgmd 重新讀取其組態檔,請執行下列步驟
在執行滾動重新啟動以更新叢集組態時,您可以使用 ndbinfo.nodes
表格的 config_generation
欄位,來追蹤哪些資料節點已使用新的組態成功重新啟動。請參閱第 25.6.17.48 節「ndbinfo 節點表」。