NDBCLUSTER(亦稱 NDB)是一種記憶體內存儲引擎,提供高可用性與數據持久化特性。NDB 儲存引擎支援多種故障切換與負載均衡配置,但在集群層面上最容易上手。MySQL Cluster 的 NDB 引擎包含完整的數據集,僅依賴集群內部的其他數據。
MySQL Cluster 的「Cluster」部分是獨立於 MySQL 服務器配置的。在 MySQL Cluster 中,集群的每個組件都被視為一個節點。值得注意的是,在許多語境下「node」指代一台電腦,但在 MySQL Cluster 中它代表一個進程。單台電腦可運行多個節點;運行一個或多個集群節點的電腦稱為集群主機。
最小 MySQL Cluster 配置至少需要三個節點,分別為三種類型各一個:
負責管理集群內其他節點,執行提供配置數據、啟動/停止節點、運行備份等功能。由於管理其他節點配置,必須最先啟動。使用 ndb_mgmd 命令啟動。
存儲集群數據。數據節點數量等於副本數乘以片段數。例如:兩個副本、每個兩個片段,需四個數據節點。單副本僅提供存儲無冗余,建議使用兩個或更多副本實現高可用性。使用 ndbd 或多線程版 ndbmtd 啟動。
MySQL Cluster 表通常完整存儲於記憶體(因此稱為內存數據庫),但部分數據也可存儲於磁盤(參見 MySQL Cluster Disk Data Tables)。
訪問集群數據的節點。對 MySQL Cluster 而言,SQL 節點是使用 NDBCLUSTER 儲存引擎的傳統 MySQL 服務器。以 mysqld 進程啟動,需指定 --ndbcluster 和 --ndb-connectstring 參數。
SQL 節點實際上是API 節點的特殊類型,指代任何訪問 MySQL Cluster 數據的應用程序。另一個 API 節點範例是 ndb_restore 備份恢復工具。可使用 NDB API 編寫此類應用。
MySQL Cluster 的 Memcache API 實現為可載入的 ndbmemcache 儲存引擎(支援 memcached 1.6+),提供基於 memcache 協議的持久化數據存取。標準 memcached 包含於 MySQL Cluster NDB 7.3 發行版中,每個 memcached 服務器可直接訪問集群數據,亦可本地緩存服務部分請求。
管理客戶端連接管理服務器,提供節點優雅啟動/停止、訊息追蹤、狀態顯示、備份控制等命令。範例為 ndb_mgm 客戶端。可使用 MGM API(C 語言 API)開發此類應用。
MySQL Cluster 按類型(啟動、關機、錯誤、檢查點等)、優先級與嚴重性生成日誌: