NDB 叢集 是一種技術,可以在無共享系統中實現記憶體內資料庫的叢集。無共享架構使系統能夠以非常便宜的硬體運作,並對硬體或軟體的需求降至最低。
NDB 叢集的設計目標是沒有任何單點故障。在無共享系統中,每個元件都應擁有自己的記憶體和磁碟,因此不建議或不支援使用網路共享、網路檔案系統和 SAN 等共享儲存機制。
NDB 叢集將標準 MySQL Server 與稱為 NDB
(代表 「Network DataBase」) 的記憶體內叢集儲存引擎整合在一起。在我們的文件中,術語 NDB
指的是設定中特定於儲存引擎的部分,而 「MySQL NDB 叢集」指的是一個或多個 MySQL Server 與 NDB
儲存引擎的組合。
NDB 叢集由一組稱為 主機 的電腦組成,每部電腦執行一個或多個處理程序。這些稱為 節點 的處理程序可能包含 MySQL Server (用於存取 NDB 資料)、資料節點 (用於儲存資料)、一個或多個管理伺服器,以及其他可能特殊的資料存取程式。NDB 叢集中這些元件的關係如下圖所示
所有這些程式共同運作,形成一個 NDB 叢集 (請參閱 第 25.5 節「NDB 叢集程式」)。當 NDB
儲存引擎儲存資料時,表格 (和表格資料) 會儲存在資料節點中。所有其他叢集中的 MySQL Server (SQL 節點) 都可以直接存取這些表格。因此,在將資料儲存在叢集中的薪資應用程式中,如果某個應用程式更新了員工的薪資,則查詢此資料的所有其他 MySQL Server 都可以立即看到此變更。
NDB 叢集 8.4 SQL 節點使用 mysqld 伺服器精靈,它與 MySQL Server 8.4 發行版提供的 mysqld 相同。您應該記住,未連線到 NDB 叢集的 mysqld 執行個體,無論版本為何,都不能使用 NDB
儲存引擎,而且不能存取任何 NDB 叢集資料。
NDB 叢集的資料節點中儲存的資料可以鏡像;叢集可以處理個別資料節點的故障,除了少數交易因遺失交易狀態而中止之外,沒有其他影響。由於預期交易應用程式會處理交易失敗,因此這不應該是問題的根源。
可以停止和重新啟動個別節點,然後它們可以重新加入系統 (叢集)。滾動重新啟動 (依序重新啟動所有節點) 用於進行組態變更和軟體升級 (請參閱 第 25.6.5 節「執行 NDB 叢集的滾動重新啟動」)。滾動重新啟動也用作在線上新增資料節點的流程的一部分 (請參閱 第 25.6.7 節「在線上新增 NDB 叢集資料節點」)。如需有關資料節點、它們如何在 NDB 叢集中組織,以及它們如何處理和儲存 NDB 叢集資料的詳細資訊,請參閱 第 25.2.2 節「NDB 叢集節點、節點群組、片段複本和分割區」。
可以使用 NDB 叢集管理用戶端和 NDB 叢集發行版中包含的 ndb_restore 程式中找到的 NDB
原生功能來備份和還原 NDB 叢集資料庫。如需詳細資訊,請參閱 第 25.6.8 節「NDB 叢集的線上備份」,以及 第 25.5.23 節「ndb_restore — 還原 NDB 叢集備份」。您也可以使用 mysqldump 和 MySQL Server 中為此目的提供的標準 MySQL 功能。如需詳細資訊,請參閱 第 6.5.4 節「mysqldump — 資料庫備份程式」。
NDB 叢集節點可以使用不同的傳輸機制進行節點間通訊;在大多數實際部署中,會使用標準 100 Mbps 或更快的乙太網路硬體的 TCP/IP。