MySQL Cluster 是MySQL適合于分布式計算環(huán)境的高實用前翎、高冗余版本畅涂。它采用了NDB Cluster 存儲引擎,允許在1個 Cluster 中運行多個MySQL服務器毅戈。在MyQL 5.0及以上的二進制版本中、以及與最新的Linux版本兼容的RPM中提供了該存儲引擎赘理。(注意扇单,要想獲得MySQL Cluster 的功能,必須安裝 mysql-server 和 mysql-max RPM)蜘澜。
目前能夠運行MySQL Cluster 的操作系統(tǒng)有Linux、Mac OS X和Solaris(一些用戶通報成功地在FreeBSD上運行了MySQL Cluster 瞪醋,但MySQL AB公司尚未正式支持該特性)装诡。
一、MySQL Cluster概述
MySQL Cluster 是一種技術鸦采,該技術允許在無共享的系統(tǒng)中部署“內存中”數(shù)據(jù)庫的 Cluster 。通過無共享體系結構顶霞,系統(tǒng)能夠使用廉價的硬件锣吼,而且對軟硬件無特殊要求蓝厌。此外鲜侥,由于每個組件有自己的內存和磁盤,不存在單點故障描函。
MySQL Cluster 由一組計算機構成,每臺計算機上均運行著多種進程胆数,包括MySQL服務器互墓,NDB Cluster 的數(shù)據(jù)節(jié)點,管理服務器篡撵,以及(可能)專門的數(shù)據(jù)訪問程序。關于 Cluster 中這些組件的關系券盅,請參見下圖:
所有的這些節(jié)點構成一個完成的MySQL集群體系膛檀。數(shù)據(jù)保存在“NDB存儲服務器”的存儲引擎中,表(結構)則保存在“MySQL服務器”中泳炉。應用程序通過“MySQL服務器”訪問這些數(shù)據(jù)表嚎杨,集群管理服務器通過管理工具(ndb_mgmd)來管理“NDB存儲服務器”。
通過將MySQL Cluster 引入開放源碼世界枫浙,MySQL為所有需要它的人員提供了具有高可用性、高性能和可縮放性的 Cluster 數(shù)據(jù)管理。
二斤富、MySQL Cluster 基本概念
“NDB” 是一種“內存中”的存儲引擎,它具有可用性高和數(shù)據(jù)一致性好的特點焕参。
MySQL Cluster 能夠使用多種故障切換和負載平衡選項配置NDB存儲引擎,但在 Cluster 級別上的存儲引擎上做這個最簡單叠纷。MySQL Cluster的NDB存儲引擎包含完整的數(shù)據(jù)集,僅取決于 Cluster本身內的其他數(shù)據(jù)崇众。
目前航厚,MySQL Cluster的 Cluster部分可獨立于MySQL服務器進行配置。在MySQL Cluster中幔睬, Cluster的每個部分被視為1個節(jié)點。
管理(MGM)節(jié)點:這類節(jié)點的作用是管理MySQL Cluster內的其他節(jié)點赦抖,如提供配置數(shù)據(jù)辅肾、啟動并停止節(jié)點、運行備份等宛瞄。由于這類節(jié)點負責管理其他節(jié)點的配置,應在啟動其他節(jié)點之前首先啟動這類節(jié)點盈电。MGM節(jié)點是用命令“ndb_mgmd”啟動的杯活。
數(shù)據(jù)節(jié)點:這類節(jié)點用于保存 Cluster的數(shù)據(jù)。數(shù)據(jù)節(jié)點的數(shù)目與副本的數(shù)目相關旁钧,是片段的倍數(shù)。例如嚎幸,對于兩個副本寄猩,每個副本有兩個片段,那么就有4個數(shù)據(jù)節(jié)點。不過沒有必要設置多個副本箍铭。數(shù)據(jù)節(jié)點是用命令“ndbd”啟動的椎镣。
SQL節(jié)點:這是用來訪問 Cluster數(shù)據(jù)的節(jié)點。對于MySQL Cluster冷守,客戶端節(jié)點是使用NDB Cluster存儲引擎的傳統(tǒng)MySQL服務器剪况。通常,SQL節(jié)點是使用命令“mysqld –ndbcluster”啟動的译断,或將“ndbcluster”添加到“my.cnf”后使用“mysqld”啟動。
注釋:在很多情況下堪唐,術語“節(jié)點”用于指計算機翎蹈,但在討論MySQL Cluster時,它表示的是進程荤堪。在單臺計算機上可以有任意數(shù)目的節(jié)點,為此拥知,我們采用術語“ Cluster主機”碎赢。
管理服務器(MGM節(jié)點)負責管理 Cluster配置文件和 Cluster日志。 Cluster中的每個節(jié)點從管理服務器檢索配置數(shù)據(jù)肮塞,并請求確定管理服務器所在位置的方式。當數(shù)據(jù)節(jié)點內出現(xiàn)新的事件時猜欺,節(jié)點將關于這類事件的信息傳輸?shù)焦芾矸掌骺酱埽缓蟮鍪裕瑢⑦@類信息寫入 Cluster日志副瀑。
此外恋谭,可以有任意數(shù)目的 Cluster客戶端進程或應用程序。它們分為兩種類型:
標準MySQL客戶端:對于MySQL Cluster狈孔,它們與標準的(非 Cluster類)MySQL沒有區(qū)別材义。換句話講均抽,能夠從用PHP其掂、Perl款熬、C、C++乡范、Java姊扔、Python闰集、Ruby等編寫的現(xiàn)有MySQL應用程序訪問MySQL Cluster般卑。
管理客戶端:這類客戶端與管理服務器相連,并提供了啟動和停止節(jié)點洞坑、啟動和停止消息跟蹤(僅調試版本)蝇率、顯示節(jié)點版本和狀態(tài)、啟動和停止備份等的命令本慕。