mysql_cluster體系結構

軍說網事發表於2016-03-30
MySQL Cluster 由3個不同功能的服務構成,每個服務由一個專用的守護程式提供,一項 服務也叫做一個節點,下面來介紹每個節點的功能。

The management (MGM) node

管理節點,用來實現整個叢集的管理,理論上一般只啟動一個,而且當機也不影響 cluster 的服務,這個程式只在cluster 啟動以及節點加入叢集時起作用, 所以這個節點不是很需要冗餘,理論上通過一臺伺服器提供服務就可以了。

通過 ndb_mgmd 命令啟動,使用 config.ini 配置檔案

The storage or database (DB) node:

資料庫節點,用來儲存資料,可以和管理節點(MGM) , 使用者端節點(API) 可以處在 不同的機器上,也可以在同一個機器上面,叢集中至少要有一個DB節點,2個以上 時就能實現叢集的高可用保證,DB節點增加時,叢集的處理速度會變慢。

通過 ndbd 命令啟動,第一次建立好cluster DB 節點時,需要使用 –init引數初始化。

例如: bin/ndbd –ndb-connectstring=ndb_mgmd.mysqlcluster.net –initial

The client (API) node:

客戶端節點,通過他實現 cluster DB 的訪問,這個節點也就是普通的 mysqld 程式, 需要在配置檔案中配置ndbcluster 指令開啟 NDB Cluster storage engine 儲存引擎,增加 API 節點會提高整個叢集的併發訪問速度和整體的吞吐量,該節點 可以部署在Web應用伺服器上,也可以部署在專用的伺服器上,也開以和DB部署在 同一臺伺服器上。

通過 mysqld_safe 命令啟動,

這3類節點可以分佈在不同的主機上,比如 DB 可以是多臺專用的伺服器,也可以 每個DB都有一個API,當然也可以把API分佈在Web前端的伺服器上去,通常來說, API越多cluster的效能會越好。


儲存引擎
MySQL Cluster 使用了一個專用的基於記憶體的儲存引擎,這樣做的好處是速度快, 沒有磁碟I/O的瓶頸,但是由於是基於記憶體的,所以資料庫的規模受系統總記憶體的限制, 如果執行NDB的MySQL伺服器一定要記憶體夠大,比如4G, 8G, 甚至16G。NDB引擎是分散式的,它可以配置在多臺伺服器上來實現資料的可靠性和擴充套件性,理論上 通過配置2臺NDB的儲存節點就能實現整個資料庫叢集的冗餘性和解決單點故障問題。

該儲存引擎有下列弊端:

基於記憶體,資料庫的規模受叢集總記憶體的大小限制
基於記憶體,斷電後資料可能會有資料丟失,這點還需要通過測試驗證。
多個節點通過網路實現通訊和資料同步、查詢等操作,因此整體性受網路速度影響,
因此速度也比較慢
當然也有它的優點:

多個節點之間可以分佈在不同的地理位置,因此也是一個實現分散式資料庫的方案。
擴充套件性很好,增加節點即可實現資料庫叢集的擴充套件。
冗餘性很好,多個節點上都有完整的資料庫資料,因此任何一個節點當機都不會造成服務中斷。

實現高可用性的成本比較低,不象傳統的高可用方案一樣需要共享的儲存裝置和專用的軟體才能實現,NDB 只要有足夠的記憶體就能實現。



相關文章