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