標籤:版本 加入叢集 計算 企業 一個 通過 問題 需要 解決方案
【MySQL Cluster】
MySQL Cluster 是MySQL 官方叢集部署方案, 支援自動分區、讀寫擴充;通過即時備份冗餘資料。適合於分散式運算環境的高實用、高冗餘版本,是可用性最高的方案,官方聲稱可做到99.999%的可用性。MySQL Cluster採用NDB Cluster 儲存引擎,包括MySQL伺服器、NDB Cluster資料節點、管理伺服器,以及(可能)專門的資料訪問程式。
NDB 是一種“記憶體中”的儲存引擎,它具有可用性高和資料一致性等特點。
實際上,MySQL叢集是把NDB 記憶體叢集儲存引擎與標準的MySQL伺服器整合。它包含一組電腦,每個都跑一個或者多個進程,這可能包括一個MySQL伺服器,一個資料節點,一個管理伺服器和一個專有的一個資料訪問程式。
MySQL cluster配置中,由3個不同功能的服務構成,每個服務由一個專用的守護進程提供,一項服務也叫做一個節點,下面來介紹每個節點的功能:
一、管理(MGM)節點
MGM節點作用是管理MySQL Cluster內的其他節點,如提供配置資料、啟動並停止節點、運行備份等。由於這類節點負責管理其他節點的配置,應在啟動其他節點之前首先啟動這類節點。理論上一般只啟動一個,而且宕機也不影響 cluster 的服務,這個進程只在cluster 啟動以及節點加入叢集時起作用, 所以這個節點不是很需要冗餘,理論上通過一台伺服器提供服務就可以了。
管理伺服器(MGM節點)負責管理 Cluster設定檔和 Cluster日誌。 Cluster中的每個節點從管理伺服器檢索配置資料,並請求確定管理伺服器所在位置的方式。當資料節點內出現新的事件時,節點將關於這類事件的資訊傳輸到管理伺服器,然後,將這類資訊寫入 Cluster日誌。
二、資料節點
用於儲存 Cluster的資料。資料節點的數目與副本的數目相關,是片段的倍數,分段的數目為節點總數除以NoOfReplicas 所得。例如,對於兩個副本,每個副本有兩個片段,那麼就有4個資料節點,通常設定為兩副本,兩個以上時就能實現叢集的高可用保證,資料節點增加時,叢集的處理速度會變慢。
三、SQL節點
用來訪問 Cluster資料的節點。對於MySQL Cluster,用戶端節點是使用NDB Cluster儲存引擎的傳統MySQL伺服器。Cluster中可以有多個sql節點,通過每個sql節點查詢到的資料都是一致的,通常來說,sql節點越多,分配到每個sql節點的負載就越小,系統的整體效能就越好。
所有的這些節點構成一個完成的MySQL叢集體系: 資料儲存在“NDB儲存伺服器”的儲存引擎中,表(結構)則儲存在“MySQL伺服器”中。應用程式通過“MySQL伺服器”訪問這些資料表,叢集管理伺服器通過管理工具(ndb_mgmd)來管理“NDB儲存伺服器”。
通過將MySQL Cluster 引入開放源碼世界,MySQL為所有需要它的人員提供了具有高可用性、高效能和可縮放性的 Cluster 資料管理。
【NDB儲存引擎】
MySQL Cluster 使用了一個專用的基於記憶體的儲存引擎NDB,這樣做的好處是速度快, 沒有磁碟I/O的瓶頸,但是由於是基於記憶體的,所以資料庫的規模受系統總記憶體的限制, 如運行NDB的MySQL伺服器一定要記憶體夠大,比如4G, 8G, 甚至16G。NDB引擎是分布式的,它可以配置在多台伺服器上來實現資料的可靠性和擴充性,理論上 通過配置2台NDB的儲存節點就能實現整個資料庫叢集的冗餘性和解決單點故障問題。
在ndb上可以建立兩種類型的表:
1、記憶體表:所有資料(包括index)都在記憶體中。同時會在磁碟上儲存資料,因此不用擔心資料會丟失,datanode會在啟動的時候把資料載入到記憶體。
2、磁碟表:僅主鍵、索引欄位儲存在記憶體中,其他欄位儲存在磁碟檔案裡。
MySQL Cluster 特性
- 通過自動分區實現高水平的寫入擴充能力:MySQL Cluster 自動將表分區(或分區)到不同節點上,使資料庫可以在低成本的商用硬體上橫向擴充,同時保持對應用程式完全應用透明。
- 99.999% 的可用性:憑藉其分布式、無共用架構,MySQL Cluster 可提供 99.999% 的可用性,確保了較強的故障恢複能力和在不停機的情況下執行預定維護的能力。
- SQL 和NoSQL API:MySQL Cluster 讓使用者可以在解決方案中整合關聯式資料庫技術和NoSQL技術中的最佳部分,從而降低成本、風險和複雜性。
- 即時效能:MySQL Cluster 提供即時的回應時間和輸送量,能滿足最苛刻的 Web、電信及公司專屬應用程式程式的需求。
- 具有跨地區複製功能的多網站叢集:跨地區複製使多個叢集可以分布在不同的地點,從而提高了災難恢複能力和全球 Web 服務的擴充能力。
- 聯機擴充和模式升級:為支援持續運營,MySQL Cluster 允許向正在啟動並執行資料庫模式中聯機添加節點和更新內容,因而能支援快速變化和高度動態負載。
缺點
- 基於記憶體,資料庫的規模受叢集總記憶體的大小限制
- 多個節點通過網路實現通訊和資料同步、查詢等操作,因此整體性受網路速度影響
MySQL Cluster --01