NDB是一種“內(nèi)存中”存儲引擎,它具有可用性高和數(shù)據(jù)一致性好的特點。
能夠使用多種故障切換和負(fù)載平衡選項配置NDB存儲引擎,但以簇層面上的存儲引擎開始最簡單。MySQL簇的NDB存儲引擎包含完整的數(shù)據(jù)集,僅取決于簇本身內(nèi)的其他數(shù)據(jù)。
下面,我們介紹了設(shè)置由NDB存儲引擎和一些MySQL服務(wù)器構(gòu)成的MySQL簇的設(shè)置方法。
目前,MySQL簇的簇部分可獨立于MySQL服務(wù)器進行配置。在MySQL簇中,簇的每個部分被視為1個節(jié)點。
注釋:在很多情況下,術(shù)語“節(jié)點”用于指計算機,但在討論MySQL簇時,它表示的是進程。在單臺計算機上可以有任意數(shù)目的節(jié)點,為此,我們采用術(shù)語簇主機。
有三類簇節(jié)點,在最低的MySQL簇配置中,至少有三個節(jié)點,這三類節(jié)點分別是:
· 管理(MGM)節(jié)點:這類節(jié)點的作用是管理MySQL簇內(nèi)的其他節(jié)點,如提供配置數(shù)據(jù)、啟動并停止節(jié)點、運行備份等。由于這類節(jié)點負(fù)責(zé)管理其他節(jié)點的配置,應(yīng)在啟動其他節(jié)點之前首先啟動這類節(jié)點。MGM節(jié)點是用命令ndb_mgmd啟動的。
· 數(shù)據(jù)節(jié)點:這類節(jié)點用于保存簇的數(shù)據(jù)。數(shù)據(jù)節(jié)點的數(shù)目與副本的數(shù)目相關(guān),是片段的倍數(shù)。例如,對于兩個副本,每個副本有兩個片段,那么就有4個數(shù)據(jù)節(jié)點。沒有必要有一個以上的副本。數(shù)據(jù)節(jié)點是用命令ndbd啟動的。
· SQL節(jié)點:這是用來訪問簇數(shù)據(jù)的節(jié)點。對于MySQL簇,客戶端節(jié)點是使用NDB簇存儲引擎的傳統(tǒng)MySQL服務(wù)器。典型情況下,SQL節(jié)點是使用命令mysqld –ndbcluster啟動的,或?qū)?span style="line-height: normal; ">ndbcluster添加到my.cnf后使用mysqld啟動。
簇配置包括對簇中單獨節(jié)點的配置,以及設(shè)置節(jié)點之間的單獨通信鏈路。對于目前設(shè)計的MySQL簇,其意圖在于,從處理器的能力、內(nèi)存空間和帶寬來講,存儲節(jié)點是同質(zhì)的,此外,為了提供單一的配置點,作為整體,簇的所有配置數(shù)據(jù)均位于1個配置文件中。
管理服務(wù)器(MGM節(jié)點)負(fù)責(zé)管理簇配置文件和簇日志。簇中的每個節(jié)點從管理服務(wù)器檢索配置數(shù)據(jù),并請求確定管理服務(wù)器所在位置的方式。當(dāng)數(shù)據(jù)節(jié)點內(nèi)出現(xiàn)有趣的事件時,節(jié)點將關(guān)于這類事件的信息傳輸?shù)焦芾矸⻊?wù)器,然后,將這類信息寫入簇日志。
此外,可以有任意數(shù)目的簇客戶端進程或應(yīng)用程序。它們分為兩種類型:
· 標(biāo)準(zhǔn)MySQL客戶端:對于MySQL簇,它們與標(biāo)準(zhǔn)的(非簇類)MySQL沒有區(qū)別。換句話講,能夠從用PHP、Perl、C、C++、Java、Python、Ruby等編寫的現(xiàn)有MySQL應(yīng)用程序訪問MySQL簇。
· 管理客戶端:這類客戶端與管理服務(wù)器相連,并提供了優(yōu)雅地啟動和停止節(jié)點、啟動和停止消息跟蹤(僅對調(diào)試版本)、顯示節(jié)點版本和狀態(tài)、啟動和停止備份等的命令。