引言
MySQL Cluster是MySQL適合于分布式計算環境的高性能、高可用性版本。自從2004年推出以來已經發展到了7. 0版本。起初是專門為電信產業定制的高可用數據庫集群技術,目前,最新推出的MySQL Cluster 7. 0版本已經具備了數據分區與備份、內存數據庫集群緩存和跨地域數據復制災備等企業級數據庫集群所需的完整功能,適用于對并發處理性能與可用性要求較高的應用系統。
MySQL Cluster采用NDB Cluster存儲引擎,允許在Cluster中配置多個數據節點、存儲引擎節點、內存數據庫緩存與管理節點集群。利用MySQL無共享( Share Nothing)體系結構,系統能夠使用廉價的硬件設備擴展當前系統的處理能力,而且對軟硬件無特殊要求。此外,由于每個數據分區內可以配置多個災備數據節點,因此可以解決單點故障問題。圖1為NDB存儲引整數據分區與備份邏輯架構。
圖1 NDB存儲引擎數據分區與備份
1虛擬化技術
現有的集群計算環境方式對于要求靈活配置運行的場景并不是非常適合,在很多情況下,只能由應用程序去適應相應的集群環境,而不是為特定的應用提供特殊配置的運行環境。由于各應用對計算環境有不同的要求,運行環境的差別給應用的遷移帶來很大困難。
在這種情況下,運用虛擬機技術對物理機的硬件細節進行屏蔽,為其上的應用提供一個統一的執行平臺。虛擬技術可以看成是對其下計算資源的一種抽象,這種抽象通過棲牲部分性能來降低計算環境的異構性。
同時,現有的集群環境還只停留在對應用運行的支持上,對于應用開發的不同需求支持力度不夠。可以通過使用多計算系統資源虛擬化的方式,建立環境的動態構建機制,完成對資源環境的動態靈活配置。
因此,虛擬技術的應用對于提高網絡計算資源的效率有很大幫助。具有高度一致性的虛擬計算環境對于提高計算資源的可維護性也有很多好處。虛擬化技術帶來的同構環境大大降低了系統的復雜性,甚至可以將應用程序與其執行環境捆綁在一起,然后共同遷移。虛擬應用的概念就是將一個復雜系統中真正要用到的部分抽取出來與其上應用結合在一起形成一個可以獨立執行的整體,從而大大提高資源利用的效率。
文獻5中構造了一個由虛擬機組成的虛擬集群(Virtual Cluster),由于一臺物理服務器上可以運行多個虛擬機,每個虛擬機可以加人虛擬集群并對應于一個應用。一臺服務器實際上可以同時加人對應于不同應用的集群。系統可以根據各應用的優先級對在其上運行的各虛擬機進行動態的資源分配。
虛擬化技術與集群管理的結合,使資源的動態構建以及靈活透明的系統管理成為可能。使用虛擬化的方式能夠針對不同的應用去實現,提供最好的適用于特定應用的環境。
2系統設計
2.1.應用場景分析
在典型電子商務應用(E-Commerce Applications)應用場景的MySQL Cluste:集群數據庫系統中(如圖5所示)通常包含三類集群節點,分別是:
(1)管理節點:這類節點的作用是管理MySQLCluster內的數據、SQL節點,如提供配置數據、啟動并停止節點、運行備份等。由于這類節點負責管理其它節點的配置,應在啟動其它節點之前首先啟動這類節點。
(2)數據節點:數據節點是保存、管理MySQLCluster內數據的核心節點。數據節點的數目同數據分區與備份的數目相關,是數據分區的倍數。例如,對于兩個數據副本,每個副本有兩個分區,那么就有4個數據節點。
(3)SQL節點:SQL節點部署MySQL服務器,為應用系統提供訪問MySQL Cluster數據服務的節點。對于MySQL Cluster, SQL節點是使用NDB和In-noDB、MyISAM存儲引擎的普通MySQL服務器。
圖2 MySQL Cluster數據庫集群典型應用場景
在圖2所示的MySQ Cluster數據庫集群場景中,眾多集群節點按職責和所提供功能的不同可劃分為以下5個部分:
(1) Master SQL節點集群使用如InnoDB等適用于事務處理的數據存儲引擎,為企業應用提供數據管理、事務處理功能。
(2)Slaver SQL節點集群使用如MyISAM等適用于數據查詢檢索的數據查詢引擎,為企業應用提供高速數據訪問服務。
(3)數據節點集群存儲、管理實際業務數據,基于配置實現數據自動分區(Partition)和數據災備功能。
(4)基于SQL節點搭建的內容管理系統使用InnoDB引擎復制功能向Master SQL節點集群導人業務數據。
(5)基于SQL節點搭建的商務智能系統使用MyISAM引擎的快速數據檢索功能實現高效數據分析和報表數據生成。
2.2 系統設計
為了驗證基于MySQL Cluster搭建數據庫集群解決高可用和高并發性問題方面的可行性。提出以下數據庫集群POC驗證方案(如圖3示)。該方案使用部署在兩臺物理機上的Xen Server Linux鏡像,用MySQL Cluster數據庫集群實現最小配置的數據分區、數據災備、讀寫分離和數據查詢的負載均衡。此方案核心由數據節點集群,SQL節點集群和負載均衡器三部分組成。
圖3 MySQL Cluster數據庫集群POC架構
2. 2.1數據節點集群方案
為實現基本的數據分區(Data Partition)和數據災備功能,設計了由4個數據節點組成的數據節點集群。部署方案如圖4所示,業務庫完整數據分為兩個分別存儲了不同業務數據分區的數據分區組,每個組內各包含一個Master和Slaver節點。Master為當前使用節點,Slaver為Master節點的備份。測試過程中通過宕掉IP :10.4. 45.190的Linuc虛擬機醚封正單點故障對系統可用性的影響。此外,各個數據節點之上可配置任意大小內存數據緩存,可以提升數據查詢性能。
圖4數據節點集群
2. 2. 2 SQL節點集群方案
SQL節點集群為業務系統提供訪問MySQL Cluster數據服務的節點。SQL節點核心功能包括SQL語句解析執行、讀寫分離和事務處理。此集群方案(如圖S所示)中包含了一個負責處理事務和數據增、刪、改操作的Master節點和三個負責處理數據檢索查詢的Slaver節點構成。為了使IP;10. 4. X45. 190對應虛擬機宕掉后不影響系統運行,IP; 10. 4. 45. 190上部署了兩個Slaver節點。三個Slaver通過MySQL Proxy實現負載均衡。
圖5 SQL節點集群
2.2.3負載均衡器方案
在此方案中,負載均衡器用于均衡負責處理查詢功能的Saver SQL節點之間的負載均衡問題。由于MySQL提供的負載均衡器MySQL Proxy在性能和穩定性上低于Amoeba,所以方案采用Amoeba實現負載均衡。方案中各個SQL節點對應-個獨立的URL服務地址,由Amoeba實現負載均衡。為了不影響數據節點運行性能,Amoeba搭建在獨立物理機IP:10.4.68.86上。
在使用過程中所有查詢都發送到Amoeba服務器,之后經過Amoeba的負載均衡算法決定查詢該發向哪個SQL節點執行。部署結構如圖6所示。
圖6使用Amoeba的負載均衡
3實驗數據分析
3.1并發訪問量遞增測試
目的:通過測試在并發訪問量不斷增加的情況下數據查詢性能走勢驗證此方案對比單機環境是否具有性能優勢。
過程;創建l00個線程,每個線程獨占一個數據庫連接。在所有線程創建并獲取數據庫連接完畢后,順序啟動向jdbc : mysyl://10. 4. 68. 86 : 9307/test發送查詢SQL語句。
結果:執行結果為從第一條線程啟動到最后一條線程結束之間的執行時間,單位為毫秒。從圖7可以看出MySQL Cluster并發處理能力遠遠高于單機MySQL。
圖7并發測試結果對比
分析MySQL Cluster速度較快的原因有以下三點:
(1) MySQL Cluster有兩臺物理機4 CPU的并行處理能力,且配有負載均衡器,資源利用率較高。
(2)NDB引擎的內存數據庫緩存降低了硬盤IO訪問時間。
(3)MySQL數據處理加人了并行化機制,進一步提高了多核物理機的資源利用率。
3. 2查詢數據且遞增測試
目的:測試單線程查詢單表數據性能。
過程:通過不斷增加單表數據量測試MySQLCluste:方案和MysQL 5.1單服務器方案的數據讀取性能。
結果:分別對100一1000條和1萬一132萬條記錄的查詢進行了測試,得出圖8、圖9測試結果。從小數據量讀數據性能上看MySQL Cluster并無優勢,但在數據量增大到3萬條以上時,MySQL 5. 1單服務器處理性能下降顯著。
圖9查詢大數據量遞增測試
分析導致MySQL 5.1單服務器性能隨數據量增加快速下降的原因:
(1) MySQL Cluster能并行從硬盤讀取數據,而MySQL 5. 1單服務器則是單線程讀。
(2) MySQL Cluster由于對數據進行了分區,雙物理機同時檢索數據速度較快。
4結束語
通過研究及以上對原型系統的測試和結果分析,可以看出,本方案通過虛擬化平臺實現了一系列自動化的功能,屏蔽了一些技術難點,如:數據切分、數據一致性、高速數據緩存、數據災備和單點故障問題等,且支持并行數據處理和內存數據庫緩存。但仍存在對網絡帶寬要求較高,不能動態監視各節點運行狀態和負載情況等缺點。由于方案采用產品默認配置驗證,整體性能調優和部署方案優化尚有很多工作要做。
核心關注:拓步ERP系統平臺是覆蓋了眾多的業務領域、行業應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業務領域的管理,全面涵蓋了企業關注ERP管理系統的核心領域,是眾多中小企業信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網http://www.guhuozai8.cn/
本文標題:虛擬環境下的數據庫集群系統構建與性能分析