http://xuwensong.elastos.org/2014/01/13/ubuntu-%E4%B8%8Bmysql-cluster%E5%AE%89%E8%A3%85%E5%92%8C%E9%85%8D%E7%BD%AE/
MySQL-Cluster是一種技術,該技術允許在無共享的系統中部署“內存中”數據庫的簇。通過無共享體系結構,系統能夠使用廉價的硬件,而且對軟硬件無特殊要求。此外,由於每個組件都有自己的內存和磁盤,所以不存在單點故障。
MySQL簇將標准的MySQL服務器與名為NDB的“內存中”的簇式存儲引擎集成了起來。術語NDB指的是與存儲引擎相關的設置部分,而術語“MySQL簇”指的是MySQL和NDB存儲引擎的組合。
MySQL簇由一組計算機構成,每台計算機上均運行著多種進程,包括MySQL服務器,NDB簇的數據節點,管理服務器(MGM),以及(可能)專門的數據訪問程序。關於簇中組件的關系,如下圖:
所有這些程序一起構成了MySQL簇。將數據保存到NBD簇引擎中時,表將保存在數據節點內。能夠從簇中所有其他MySQL服務器直接訪問這些表。因此,假如在將數據保存在簇內的工資應用程序中,如果某一應用程序更新了一位雇員的工資,所有查詢該數據的其他MySQL 服務器能立刻發現這種變化。
對於MySQL簇,保存在數據節點的數據可被映射,簇能夠處理單獨數據節點的故障,除了少數事物將因事物狀態丟失而被放棄外,不會產生其他影響。由於事物性應用程序能夠處理失敗事宜,因而它不是問題源。
NDB 是一種“內存中”存儲引擎,它具有可用性高和數據一致性好的特點。
能夠使用多種故障切換和負載平衡選項配置NDB 存儲引擎,但以簇層面上的存儲引擎開始最簡單。MySQL簇的NDB存儲引擎包含完整的數據集,僅取決於簇本身內的其他數據。
下面名,我們將介紹設置由NDB存儲引擎和一些MySQL服務器構成的MySQL簇的設置方法。
目前,MySQL簇的部分可以獨立於MySQL服務器進行配置。在MySQL簇中,簇的每個部分被視為一個節點。
注釋:在很多情況下,術語“節點”用於指計算機,但在討論MySQL簇時,它表示的是進程。在單台計算機上可以有任意數目的節點,所以我們才有可能將多個不同功能的節點配置在同一台計算機上,為此,我們采用術語簇主機。
有三類簇節點,在最低的MySQL簇配置中,至少有三個節點,這三類節點分別是:
管理節點(MGM):這類節點的作用是管理MySQL簇內的其他節點,如提供配置數據,啟動並停止節點,運行備份等。由於這類節點負責管理其他節點的配置,所以管理節點應在其他節點之前先啟動。MGM節點是用命令ndb_mgm啟動的。
數據節點(NDB):這類節點用於保存簇的數據。數據集點的數目與副本的數目相關,是片段的倍數。例如,對於兩個副本,每個副本又兩個片段,那麼就有4個數據節點。沒有必要有一個以上的副本。。數據節點是用命令ndbd來啟動的。
SQL節點:這類節點是用來訪問簇數據的節點。對於MySQL簇,客戶端節點是使用NDB 簇存儲引擎的傳統MySQL服務器。典型情況下,SQL節點是使用命令mysql -ndbcluster來啟動的,或將ndbcluster添加到my.cnf後面使用mysqld啟動。
簇配置包括對簇中單獨節點的配置,以及設置節點之間的單獨通信鏈路。對於目前設計的MySQL簇,其意圖在於,從處理器的能力,內存空間和寬帶來講,存儲節點是同質的,此外,為了提供單一的配置點,作為整體,簇的所有配置均位於一個文件中。
管理服務器(MGM節點)負責管理簇配置文件和簇日志。簇中的每個節點從管理服務器檢索配置數據,並請求確定管理服務器所在的位置的方式。當數據節點內出現有趣的事件時,節點將關於這類事件的信息傳輸到管理服務器,然後,啊經這類信息寫入簇日志。
現在,我們計劃建立有5個節點的MySQL CLuster體系,因此需要用到3台機器(sql和數據節點共用),分別做如下用途: