MySQL集群原理詳解


1. 為什么需要分布式數據庫

    隨着計算機和信息技術的迅猛發展和普及,行業應用系統的規模迅速擴大,行業應用所產生的數據量量呈爆炸式增長,動輒達到數百TB甚至數百PB規模,已遠遠超出現有的傳統計算技術和信息系統的處理能力,而集中式數據庫面對大規模數據處理逐漸表現出其局限性,因此,人們希望尋找一種能快速處理數據和及時響應用戶訪問的方法,也希望對數據進行集中分析、管理和維護。這已成為現實世界的迫切需求。

    分布式數據庫是在集中式數據庫的基礎上發展起來的,是計算機技術和網絡技術結合的產物。分布式數據庫是指數據在物理上分布而邏輯上集中管理的數據庫系統。物理上分布指的是分布式數據庫的數據分布在物理位置不同並由網絡連接的節點或站點上;邏輯上集中是指各數據庫之間在邏輯上是一個整體,並由統一的數據庫管理系統管理。不同的節點分布可以跨不同的機房、城市甚至國家。

    分布式數據庫的主要特點如下:

  1. 透明性:用戶不必關心數據的邏輯分區和物理位置的分布細節,也不必關心重復副本(冗余數據)的一致性問題,同時不必關心在局部場地上數據庫支持哪種數據模型。對於系統開發工程師而言,當數據從一個場地移到另一個場地時不必改寫應用程序,使用起來如同一個集中式數據庫。
  2. 數據冗余性:分布式數據庫通過冗余實現系統的可靠性、可用性,並改善其性能。多個節點存儲數據副本,當某一節點的數據遭到破壞時,冗余的副本可保證數據的完整性;當工作的節點受損害時,可通過心跳等機制進行切換,系統整體不被破壞。還可以通過熱點數據的就近分析原則減少網絡通信的消耗,加快訪問速度,改善性能。
  3. 易於擴展性:在分布式數據庫中能夠方便地通過水平擴展提高系統的整體性能,也能通過垂直擴展來提供性能,擴展並不需要修改系統程序。
  4. 自治性:各節點上的數據由本地的DBMS管理,具有自動處理能力,完成本場地的應用或局部應用。

2. MySQL Cluster原理

    MySQL 群集是 MySQL 適合於分布式計算環境的高可用、高冗余版本。它采用了 NDB Cluster 存儲引擎,允許在 1 個群集中運行多個 MySQL 服務器。在 MySQL 5.0 及以上的二進制版本中,以及與最新的 Linux 版本兼容的 RPM 包中提供了該存儲引擎。

    MySQL 群集是一種技術,該技術允許在無共享的系統中部署“內存中”和“磁盤中”數據庫的 Cluster 。通過無共享體系結構,系統能夠使用廉價的硬件,而且對軟硬件無特殊要求。此外,由於每個組件有自己的內存和磁盤,不存在單點故障。MySQL Cluster 由一組計算機構成,每台計算機上均運行着多種進程,包括 MySQL 服務器,NDB Cluster 的數據節點,管理服務器,以及(可能存在的)專門的數據訪問程序。

管理服務器(MGM節點)負責管理 Cluster 配置文件和 Cluster 日志。Cluster 中的每個節點從管理服務器檢索配置數據。

當數據節點內出現新的事件時,節點將關於這類事件的信息傳輸到管理服務器,然后,將這類信息寫入 Cluster 日志。

目前能夠運行 MySQL Cluster 的操作系統有 Linux、Mac OS X 和 Solaris,最新的版本已經支持 Windows 操作系統。

MySQL 群集的數據節點之間的通信是不加密的,並且需要高速的帶寬,所以建議把群集建立在一個高速局域網內,不建議跨網段、跨公網的部署這種系統體系。

 

MySQL 群集分為三種節點:管理節點,數據節點和SQL節點。

管理節點:主要用於管理各個節點,能夠通過命令對某個節點進行重啟、關閉、啟動等操作。也能夠監視全部節點的工作狀態。

數據節點:主要是對數據的存儲,不提供其他的服務。

SQL節點:主要是對外提供SQL功能,類似一台普通的 MySQL Server。

而SQL節點和數據節點可以是同一台機器,也就是說這台機器即是SQL節點也是數據節點。它們只是邏輯關系上的划分,實際部署時,甚至所有的階段都可以位於同一台物理機器上,只是配置較復雜些。

 

3. MySQL Cluster的優缺點

優點:

  1. 99.999 %的高可用性
  2. 快速的自動失效切換
  3. 靈活的分布式體系結構,沒有單點故障
  4. 高吞吐量和低延遲
  5. 可擴展性強,支持在線擴容

缺點:

  1. 存在很多限制,比如:不支持外鍵,數據行不能超過8K(不包括BLOB和text中的數據)
  2. 部署、管理、配置很復雜
  3. 占用磁盤空間大,內存大
  4. 備份和恢復不方便
  5. 重啟的時候,數據節點將數據load到內存需要很長時間

 

4. MySQL Cluster國內應用

中國電子科學研究院采用MySQL Cluster構建高可用測試系統 - MySQL社區 - Powered by Discuz!

 

5. 參考資料

mysql cluster排錯經驗分享 - 飛鴻無痕 - 博客園 
MySQL Cluster:如何通過擴展為MySQL帶來2億QPS - 文章 - 伯樂在線
為什么說 MySQL Cluster 是 shared-nothing 架構的?如何理解 shared-nothing ?
MySQL主從復制屬於集群技術還是負載均衡技術? 
Mysql“集群”和”主從“兩者的區別 - 北風之神的博客 - CSDN博客 
MySQL集群 Replication, 主從和雙主配置--驢子博客 
mysql cluster純屬招搖撞騙(結貼) - ChinaUnix.net - Powered by Discuz!
MySQL :: MySQL Cluster CGE
MySQL Cluster 越來越完善,為什么沒有在工業界大規模應用?和NoSQL數據庫(如Cassandra)相比優劣勢在哪?
mysql-cluster-datasheet.zh.pdf
MySQL 5.1 Reference Manual
MySQL Cluster 與 MongoDB 復制及分片設計及原理


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM