王俊杰

[摘 ?要:隨著技術的進步,人們的生活越來越依賴于互聯網應用,數據也越來越重要。很多大型的網站開始使用數據庫集群來提高數據庫的可靠性和數據庫的性能。對于廣大計算機類專業的學生來說,單純的學習數據庫理論知識,很難滿足現階段互聯網發展對于數據庫技術的要求。本文從需求作為切入點,介紹一款比較成熟的MySQL集群架構。
關鍵詞:MySQL;數據;集群]
一、數據庫集群技術簡介
最新的數據庫集群系統的理論基礎是分布式計算,將數據分布到每個節點,所有的計算節點并行處理數據,將結果匯總。這樣的方式無疑是最完美的。但是目前仍然不能實現全部的功能。
目前數據庫應用狀況大致分為兩類,第一類是數據量在100G以下,數據庫訪問頻繁,請求密集。主要是Web APP類型的應用,例如:網站,論壇等。這些Web APP類型的應用訪問數據庫的特點是:訪問頻繁,數據庫每秒鐘要接受幾千次以上的查詢,需要經常追加數據,同時對數據的響應速度要求比較高。另一類是用于科學計算、存儲歷史數據的應用,數據量往往達到幾百G。這些應用訪問數據庫的特點是:多為查詢操作,數據都是分批、定時、集中倒入數據庫,數據庫的記錄非常多,積累了大量的數據,對數據庫的響應速度沒有太高要求。
數據庫集群和分布式數據庫的區別,分布式是指將不同的業務分布在不同的地方。而集群指的是將幾臺服務器集中在一起,實現同一業務。分布式中的每一個節點,都可以做集群。而集群并不一定就是分。
簡單說,分布式是以縮短單個任務的執行時間來提升效率的,而集群則是通過提高單位時間內執行的任務數來提升效率。
二、MySQLCluster簡介
MySQL Cluster是MySQL適合于分布式計算環境的高實用、高冗余版本。Cluster的漢語是“集群”的意思。它采用了NDB Cluster 存儲引擎,允許在1個 Cluster中運行多個MySQL服務器。
MySQL Cluster是一種技術,該技術允許在無共享的系統中部署“內存中”數據庫的Cluster。通過無共享體系結構,系統能夠使用廉價的硬件,而且對軟硬件無特殊要求。此外,由于每個組件有自己的內存和磁盤,不存在單點故障。
(一)MySQL-Cluster架構
1.SQL節點:給上層應用層提供sql訪問。
2.存儲/數據節點:保存cluster中的數據。數據節點,可以提供副本。實現數據冗余。
3.管理節點(MGM):管理整個集群。啟動,關閉集群。通過ndb_mgmd命令啟動集群。
4.NDB引擎:是一種“內存中”的存儲引擎,它具有可用性高和數據一致性好的特點。
(二)NDB引擎
MySQL Cluster使用了一個專用的基于內存的存儲引擎——NDB引擎,這樣做的好處是速度快,沒有磁盤I/O的瓶頸,但是由于是基于內存的,所以數據庫的規模受系統總內存的限制,如果運行NDB的MySQL服務器一定要內存夠大,比如4G,8G,甚至16G。NDB引擎是分布式的,它可以配置在多臺服務器上來實現數據的可靠性和擴展性,理論上通過配置2臺NDB的存儲節點就能實現整個數據庫集群的冗余性和解決單點故障問題。
1.缺陷
(1)基于內存,數據庫的規模受集群總內存的大小限制
(2)基于內存,斷電后數據可能會有數據丟失,這點還需要通過測試驗證。
(3)多個節點通過網絡實現通訊和數據同步、查詢等操作,因此整體性受網絡速度影響,因此速度也比較慢
2.優點
(1)多個節點之間可以分布在不同的地理位置,因此也是一個實現分布式數據庫的方案。
(2)擴展性很好,增加節點即可實現數據庫集群的擴展。
(3)冗余性很好,多個節點上都有完整的數據庫數據,因此任何一個節點宕機都不會造成服務中斷。
三、MySQL集群總結
數據庫作為應用系統的核心,在企業的IT系統中起著非常重要的作用,單一設備根本無法保證系統的持續運行,發生系統故障,嚴重影響系統的正常運行,甚至帶來巨大的經濟損失。于是人們希望通過組建數據庫集群,來保證系統的可用性,一旦某節點發生故障,系統會自動故障轉移,實現系統的持續工作。
企業的數據是企業的一些重要信息,一些核心數據甚至關系著企業的命脈,單一設備根本無法保證數據的安全性,一旦發生丟失,很難再找回來,于是人們希望通過組建數據庫集群,實現數據集群的冗余,通過多份數據來保證安全性。
參考文獻
[1][美]查理斯·貝爾(Charles Bell).高可用MySQL[M].電子工業出版社,2015.
[2]宋立桓.MySQL性能優化和高可用架構實踐[M].福建少年兒童出版社,2020.
[3]張甦.MySQL王者晉級之路[M].電子工業出版社,2018.