NDB是一種“記憶體中”儲存引擎,它具有可用性高和資料一致性好的特點。
能夠使用多種故障切換和Server Load Balancer選項配置NDB儲存引擎,但以簇層面上的儲存引擎開始最簡單。MySQL簇的NDB儲存引擎包含完整的資料集,僅取決於簇本身內的其他資料。
下面,我們介紹了設定由NDB儲存引擎和一些MySQL伺服器構成的MySQL簇的設定方法。
目前,MySQL簇的簇部分可獨立於MySQL伺服器進行配置。在MySQL簇中,簇的每個部分被視為1個節點。
注釋:在很多情況下,術語“節點”用於指電腦,但在討論MySQL簇時,它表示的是進程。在單台電腦上可以有任意數目的節點,為此,我們採用術語簇主機。
有三類簇節點,在最低的MySQL簇配置中,至少有三個節點,這三類節點分別是:
·管理(MGM)節點:這類節點的作用是管理MySQL簇內的其他節點,如提供配置資料、啟動並停止節點、運行備份等。由於這類節點負責管理其他節點的配置,應在啟動其他節點之前首先啟動這類節點。MGM節點是用命令ndb_mgmd啟動的。
·資料節點:這類節點用於儲存簇的資料。資料節點的數目與副本的數目相關,是片段的倍數。例如,對於兩個副本,每個副本有兩個片段,那麼就有4個資料節點。沒有必要有一個以上的副本。資料節點是用命令ndbd啟動的。
·SQL節點:這是用來訪問簇資料的節點。對於MySQL簇,用戶端節點是使用NDB簇儲存引擎的傳統MySQL伺服器。典型情況下,SQL節點是使用命令mysqld –ndbcluster啟動的,或將ndbcluster添加到my.cnf後使用mysqld啟動。
簇配置包括對簇中單獨節點的配置,以及設定節點之間的單獨通訊鏈路。對於目前設計的MySQL簇,其意圖在於,從處理器的能力、記憶體空間和頻寬來講,儲存節點是同質的,此外,為了提供單一的配置點,作為整體,簇的所有配置資料均位於1個設定檔中。
管理伺服器(MGM節點)負責管理簇設定檔和簇日誌。簇中的每個節點從管理伺服器檢索配置資料,並請求確定管理伺服器所在位置的方式。當資料節點內出現有趣的事件時,節點將關於這類事件的資訊傳輸到管理伺服器,然後,將這類資訊寫入簇日誌。
此外,可以有任意數目的簇用戶端進程或應用程式。它們分為兩種類型:
·標準MySQL用戶端:對於MySQL簇,它們與標準的(非簇類)MySQL沒有區別。換句話講,能夠從用PHP、Perl、C、C++、Java、Python、Ruby等編寫的現有MySQL應用程式訪問MySQL簇。
·管理用戶端:這類用戶端與管理伺服器相連,並提供了優雅地啟動和停止節點、啟動和停止訊息追蹤(僅對調試版本)、顯示節點版本和狀態、啟動和停止備份等的命令。