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