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