簡介
MySQL Cluster 是一種技術,該技術允許在無共享的系統中部署“記憶體中”資料庫的 Cluster 。通過無共享體系結構,系統能夠使用廉價的硬體,而且對軟硬體無特殊要求。此外,由於每個組件有自己的記憶體和磁碟,不存在單點故障。
MySQL Cluster 由一組計算機構成,每台計算機上均運行著多種進程,包括MySQL伺服器,NDB Cluster 的數據節點,管理伺服器,以及(可能)專門的數據訪問程式。關於 Cluster 中這些組件的關係。
特點
“NDB” 是一種“記憶體中”的存儲引擎,它具有可用性高和數據一致性等特點。
MySQL Cluster 能夠使用多種故障切換和負載平衡選項配置NDB存儲引擎,但在 Cluster 級別上的存儲引擎上做這個最簡單。MySQL Cluster的NDB存儲引擎包含完整的數據集,僅取決於 Cluster本身內的其他數據。
目前,MySQL Cluster的 Cluster部分可獨立於MySQL伺服器進行配置。在MySQL Cluster中, Cluster的每個部分被視為1個節點。
管理(MGM)節點:這類節點的作用是管理MySQL Cluster內的其他節點,如提供配置數據、啟動並停止節點、運行備份等。由於這類節點負責管理其他節點的配置,應在啟動其他節點之前首先啟動這類節點。MGM節點是用命令“ndb_mgmd”啟動的。
數據節點:這類節點用於保存 Cluster的數據。數據節點的數目與副本的數目相關,是片段的倍數。例如,對於兩個副本,每個副本有兩個片段,那么就有4個數據節點。不過沒有必要設定多個副本。數據節點是用命令“ndbd”啟動的。
SQL節點:這是用來訪問 Cluster數據的節點。對於MySQL Cluster,客戶端節點是使用NDB Cluster存儲引擎的傳統MySQL伺服器。通常,SQL節點是使用命令“mysqld –ndbcluster”啟動的,或將“ndbcluster”添加到“my.cnf”後使用“mysqld”啟動。
注釋:在很多情況下,術語“節點”用於指計算機,但在討論MySQL Cluster時,它表示的是進程。在單台計算機上可以有任意數目的節點,為此,我們採用術語“ Cluster主機”。
管理伺服器(MGM節點)負責管理 Cluster配置檔案和 Cluster日誌。 Cluster中的每個節點從管理伺服器檢索配置數據,並請求確定管理伺服器所在位置的方式。當數據節點內出現新的事件時,節點將關於這類事件的信息傳輸到管理伺服器,然後,將這類信息寫入 Cluster日誌。
此外,可以有任意數目的 Cluster客戶端進程或應用程式。它們分為兩種類型:
標準MySQL客戶端:對於MySQL Cluster,它們與標準的(非 Cluster類)MySQL沒有區別。換句話講,能夠從用PHP、Perl、C、C++、Java、Python、Ruby等編寫的現有MySQL應用程式訪問MySQL Cluster。 管理客戶端:這類客戶端與管理伺服器相連,並提供了啟動和停止節點、啟動和停止訊息跟蹤(僅調試版本)、顯示節點版本和狀態、啟動和停止備份等的命令。
MySQL Cluster 是MySQL適合於分散式計算環境的高實用、高冗餘版本。它採用了NDB Cluster 存儲引擎,允許在1個 Cluster 中運行多個MySQL伺服器。在MySQL 5.0及以上的二進制版本中、以及與最新的Linux版本兼容的RPM中提供了該存儲引擎。(注意,要想獲得MySQL Cluster 的功能,必須安裝 mysql-server 和 mysql-max RPM)。
目前能夠運行MySQL Cluster 的作業系統有Linux、Mac OS X和Solaris(一些用戶通報成功地在FreeBSD上運行了MySQL Cluster ,但MySQL AB公司尚未正式支持該特性),最新版本MySQL Cluste7.1.10支持更多作業系統,包括Windows。
所有的這些節點構成一個完成的MySQL集群體系。數據保存在“NDB存儲伺服器”的存儲引擎中,表(結構)則保存在“MySQL伺服器”中。應用程式通過“MySQL伺服器”訪問這些數據表,集群管理伺服器通過管理工具(ndb_mgmd)來管理“NDB存儲伺服器”。
通過將MySQL Cluster 引入開放源碼世界,MySQL為所有需要它的人員提供了具有高可用性、高性能和可縮放性的 Cluster 數據管理。
版本發布
2012年04月18日,MySQL Cluster 7.1.21 發布。
2012年05月22日,MySQL Cluster 7.2.6 GA 發布。
2013年06月18日,MySQL Cluster 7.3.2 GA 發布。