数据库集群
數(shù)據(jù)庫集群
一.數(shù)據(jù)庫集群的定義 數(shù)據(jù)庫集群,顧名思義,就是利用至少兩臺(tái)或者多臺(tái)數(shù)據(jù)庫服務(wù)器,構(gòu)成一個(gè)虛擬單一數(shù)據(jù)庫邏輯映像,像單數(shù)據(jù)庫系統(tǒng)那樣,向客戶端提供透明的數(shù)據(jù)服務(wù)。 這里有兩個(gè)關(guān)鍵點(diǎn): 1.??兩臺(tái)或者多臺(tái)數(shù)據(jù)庫服務(wù)器:如果只有一臺(tái)數(shù)據(jù)庫服務(wù)器是不能稱其為集群的。 2.??透明的服務(wù):集群向客戶端提供的服務(wù)與單機(jī)系統(tǒng)向客戶端提供的服務(wù),從通訊協(xié)議上保持二進(jìn)制兼容。 二.與分布式數(shù)據(jù)庫系統(tǒng)的區(qū)別??
此種方式是數(shù)據(jù)的異步串行復(fù)制。主要采用數(shù)據(jù)庫事務(wù)日志傳送或者硬盤數(shù)據(jù)塊傳送技術(shù)來實(shí)現(xiàn),SQL Server自帶的復(fù)制、鏡像和SQL2012新出的AlwaysON(備機(jī)可讀)以及第三的一些鏡像Mirror技術(shù)都是屬于此類產(chǎn)品,此類技術(shù)和產(chǎn)品本質(zhì)上就是數(shù)據(jù)備份技術(shù)和產(chǎn)品。下列以事務(wù)日志傳送(Log Shipping)為例來說明。主數(shù)據(jù)庫完成事務(wù)處理后,生成事務(wù)處理日志,日志記錄通過FIFO隊(duì)列,進(jìn)入備份數(shù)據(jù)庫處理,從而得到備份數(shù)據(jù)。此種方式的缺陷在于: a)? ?主數(shù)據(jù)庫并行處理事務(wù)而日志拷貝是串行的,而備份數(shù)據(jù)庫處理日志記錄也是串行的。因此,FIFO隊(duì)列的溢出隨時(shí)可能發(fā)生。一旦發(fā)生,隊(duì)列必須重建,從而需要重新建立備份數(shù)據(jù)庫。此種方法對(duì)于一般客戶來講是不可行的。 b)? ?由于日志拷貝是異步的,主備數(shù)據(jù)庫不是實(shí)時(shí)一致,兩者之間存在“時(shí)間差”,因此如果用備份數(shù)據(jù)庫作負(fù)荷均衡,這樣的應(yīng)用存在邏輯上的漏洞,可能會(huì)發(fā)生數(shù)據(jù)錯(cuò)亂。 c)? ?由于主備數(shù)據(jù)存在時(shí)間差, 主數(shù)據(jù)庫一旦發(fā)生事故,理論上一定會(huì)丟失數(shù)據(jù)。在這種情況下,要么需要手工恢復(fù)數(shù)據(jù)庫,這會(huì)消耗大量的人工成本,或者數(shù)據(jù)根本就不能恢復(fù)。 d)? ?對(duì)主機(jī)的性能影響,根據(jù)測(cè)試一般在15%到25%之間。 b.串行同步復(fù)制 此類集群往往是由昂貴的專用軟硬件構(gòu)成的,原理圖如下:??
此類系統(tǒng)采用專用的高速網(wǎng)絡(luò)和軟件技術(shù),將每個(gè)數(shù)據(jù)庫的請(qǐng)求,通過同步復(fù)制的方式,同步在主備兩臺(tái)數(shù)據(jù)庫服務(wù)器上執(zhí)行正確后,才將結(jié)果返回給數(shù)據(jù)庫客戶。此系統(tǒng)的特點(diǎn)是: a)? ?主數(shù)據(jù)庫被強(qiáng)迫與備份數(shù)據(jù)庫同步串行處理,因此性能受到限制。 b)? ?主備數(shù)據(jù)庫中任意一個(gè)出現(xiàn)問題,都會(huì)迫使事務(wù)處理交易回滾,因此整個(gè)系統(tǒng)的可靠性比單機(jī)系統(tǒng)降低了一半。 c)? ?由于以上問題,這種備份方式只適用于近距離光纖網(wǎng)絡(luò)(5英里)。 d)? ?專用系統(tǒng)造價(jià)昂貴,又加上述明顯缺陷,因此市場(chǎng)上很少被采用。 2.基于共享存儲(chǔ)的雙機(jī)容錯(cuò)技術(shù) 從技術(shù)適應(yīng)性的角度講,雙機(jī)容錯(cuò)比較適合于無狀態(tài)應(yīng)用,或者狀態(tài)信息較少的應(yīng)用切換,以此達(dá)到應(yīng)用級(jí)的高可用性目的,其實(shí)并不適合于數(shù)據(jù)庫級(jí)的應(yīng)用切換。??
此種結(jié)構(gòu)往往是兩個(gè)服務(wù)器共享一個(gè)磁盤陣列,這里兩個(gè)服務(wù)器共享一個(gè)虛擬的IP供數(shù)據(jù)庫客戶使用,形成一個(gè)單一的邏輯數(shù)據(jù)庫映象。此種所謂的數(shù)據(jù)庫集群的目的是,一旦主機(jī)系統(tǒng)出現(xiàn)問題,備份系統(tǒng)通過心跳機(jī)制的檢測(cè),完成從主機(jī)系統(tǒng)到備份系統(tǒng)的切換。這種方案在市場(chǎng)上被稱為“雙機(jī)集群”或者“雙機(jī)熱備”,簡稱參見“雙機(jī)”,但微軟稱之為“故障轉(zhuǎn)移集群”。它有下列特點(diǎn): a.??此種高可用性解決方案只是無狀態(tài)系統(tǒng)(典型的如Web服務(wù)器)的普通容錯(cuò)切換思想在數(shù)據(jù)庫領(lǐng)域的應(yīng)用。 b.??此系統(tǒng)本身只有一個(gè)單一的數(shù)據(jù)映象,數(shù)據(jù)儲(chǔ)存在共享的磁盤陣?yán)?#xff0c;因此共享的磁盤陣列成為了整個(gè)系統(tǒng)的單點(diǎn)錯(cuò)誤源。 c.??由于是單一數(shù)據(jù)映象,因此必須采用通常的復(fù)制或備份方法獲取第二份數(shù)據(jù),以保證數(shù)據(jù)的安全性。因此所有復(fù)制或備份方法的缺點(diǎn),此類系統(tǒng)全部存在。 d.??主機(jī)系統(tǒng)和備份系統(tǒng)之間是沒有任何負(fù)載均衡關(guān)系的,在正常情況下,備份系統(tǒng)是閑置在那里,因此對(duì)用戶來說是一種投資浪費(fèi)。 e.??在錯(cuò)誤切換的時(shí)候,往往存在切換時(shí)間長,而且更嚴(yán)重的是可能會(huì)存在丟失用戶交易數(shù)據(jù)丟失的現(xiàn)象,結(jié)果導(dǎo)致系統(tǒng)被迫停止服務(wù),或者需要人工修復(fù)數(shù)據(jù),或者數(shù)據(jù)永遠(yuǎn)找不回來。 3.以O(shè)racle RAC為代表的系統(tǒng) RAC的英文全稱是:Real Application Cluster(真正的應(yīng)用級(jí)集群)。我們需要關(guān)注的是“應(yīng)用級(jí)”。為了緩解數(shù)據(jù)庫系統(tǒng)日益增長的性能壓力,Oracle公司推出了RAC系統(tǒng)。它基本結(jié)構(gòu)如下:??
此類系統(tǒng),專門是針對(duì)數(shù)據(jù)庫性能問題而提出的。采用共享磁盤陣列的方式,因此在結(jié)構(gòu)上和上述雙機(jī)容錯(cuò)相似,不同的地方在于此系統(tǒng)中的數(shù)據(jù)庫節(jié)點(diǎn)之間采用的不是簡單的心跳檢測(cè),而是Oracle公司自己定義的一套復(fù)雜的信息交換協(xié)議,以此來動(dòng)態(tài)分配來自數(shù)據(jù)庫客戶端的請(qǐng)求。它的特點(diǎn)是: a.??是個(gè)應(yīng)用級(jí)的集群,也就是針對(duì)Oracle的數(shù)據(jù)庫管理系統(tǒng)(因?yàn)閿?shù)據(jù)庫管理系統(tǒng)對(duì)于操作系統(tǒng)來講,就是一個(gè)“應(yīng)用程序”,因此被稱為“應(yīng)用級(jí)集群”),專門為提高數(shù)據(jù)庫性能而設(shè)計(jì)。 b.??此系統(tǒng)本身只有一個(gè)單一的數(shù)據(jù)映象,數(shù)據(jù)儲(chǔ)存在共享的磁盤陣?yán)?#xff0c;因此享的磁盤陣?yán)蔀榱苏麄€(gè)系統(tǒng)的單點(diǎn)錯(cuò)誤源。 c.??管理配置復(fù)雜。 d.??由于是單一數(shù)據(jù)映象,因此必須采用通常的復(fù)制或備份方法獲取第二份數(shù)據(jù),以保證數(shù)據(jù)的安全性。因此所有復(fù)制或備份方法的缺點(diǎn),此類系統(tǒng)全部存在。 e.??由于數(shù)據(jù)庫系統(tǒng)本身具有高I/O的特性,因此,RAC系統(tǒng)里,磁盤I/O是提高性能的關(guān)鍵地方。 f.??依據(jù)不同的數(shù)據(jù)庫應(yīng)用,有的性能有所提升,有的性能可能會(huì)反而下降。 4.基于實(shí)時(shí)數(shù)據(jù)同步技術(shù) 基于此技術(shù)構(gòu)造的數(shù)據(jù)庫集群是市場(chǎng)上的新興力量,它又具有兩類,分別是: a.具有獨(dú)立網(wǎng)關(guān) 下面以DBTwin為例來說明其技術(shù)特點(diǎn)。??
DBTwin采用了冗余設(shè)計(jì)原理,對(duì)于來自客戶端的請(qǐng)求,請(qǐng)求被分成兩類:查詢請(qǐng)求和數(shù)據(jù)更新請(qǐng)求。對(duì)于數(shù)據(jù)更新請(qǐng)求,集群內(nèi)部各節(jié)點(diǎn)之間保持?jǐn)?shù)據(jù)的實(shí)時(shí)同步一致;對(duì)于數(shù)據(jù)的查詢請(qǐng)求,則可以在集群各節(jié)點(diǎn)之間負(fù)載均衡執(zhí)行。它的特點(diǎn)是: a)? ?負(fù)載均衡的單元是客戶端的每個(gè)獨(dú)立請(qǐng)求,這點(diǎn)除了Oracle RAC集群,是市場(chǎng)上獨(dú)有的。 b)? ?實(shí)時(shí)冗余一致的多份數(shù)據(jù),從理論上講實(shí)現(xiàn)了數(shù)據(jù)的零丟失。 c)? ?由于可以做到數(shù)據(jù)零丟失,因此在系統(tǒng)發(fā)生任意故障條件下,可以做到系統(tǒng)的對(duì)外服務(wù)不停止。 d)? ?此系統(tǒng)使用了專用高速數(shù)據(jù)同步技術(shù),根據(jù)測(cè)試,數(shù)據(jù)同步速度能SQL Server的鏡像相等。 e)? ?此系統(tǒng)的缺點(diǎn)是數(shù)據(jù)同步需要花費(fèi)代價(jià),節(jié)點(diǎn)數(shù)量受到限制,一般2到4個(gè)節(jié)點(diǎn)為宜。 f)? ?此系統(tǒng)從宏觀上提升了整個(gè)系統(tǒng)的性能。 b.沒有獨(dú)立網(wǎng)關(guān) 當(dāng)前市場(chǎng)上也存在下列一種基于數(shù)據(jù)實(shí)時(shí)同步的集群,其拓?fù)浣Y(jié)構(gòu)如下圖所示:??
此系統(tǒng)由于沒有獨(dú)立的集群網(wǎng)關(guān),因此本質(zhì)上簡化成了數(shù)據(jù)庫的實(shí)時(shí)備份系統(tǒng),與實(shí)際的備份系統(tǒng)不同的是,它是工作在數(shù)據(jù)庫應(yīng)用層。此系統(tǒng)的特點(diǎn): a) 沒有獨(dú)立的集群網(wǎng)關(guān),通過主節(jié)點(diǎn)的轉(zhuǎn)發(fā)來實(shí)行查詢的負(fù)載均衡。在系統(tǒng)壓力大的情況下,集群主機(jī)會(huì)形成性能瓶頸,無論是CPU、內(nèi)存還是網(wǎng)絡(luò)帶寬,也可能是OS等系統(tǒng)內(nèi)核資源,都容易因到達(dá)臨界狀態(tài)而形成瓶頸。 b) 各節(jié)點(diǎn)數(shù)據(jù)實(shí)時(shí)一致,對(duì)于數(shù)據(jù)容錯(cuò)有利。 c) 對(duì)客戶端沒有二進(jìn)制透明。 d) 負(fù)載均衡單元是數(shù)據(jù)庫連接。也就是說,在客戶端登陸數(shù)據(jù)庫的時(shí)候,靜態(tài)地指定連接到某個(gè)集群節(jié)點(diǎn),此后此連接上的全部請(qǐng)求一律發(fā)送到該數(shù)據(jù)庫上,因此在特殊情況下,可能會(huì)出現(xiàn)這樣的場(chǎng)景:所有客戶端的連接集中在集群主機(jī)上,這時(shí)候,集群主機(jī)不但承擔(dān)了客戶端的所有查詢,還需要實(shí)時(shí)同步數(shù)據(jù)到所有的集群從機(jī),即集群主機(jī)的CPU為100%,而集群別的節(jié)點(diǎn)CPU可能為0%,這樣整個(gè)系統(tǒng)的性能會(huì)受到嚴(yán)重影響。 e) 由于使用的是分布式事務(wù)機(jī)制(MSDTC)確保數(shù)據(jù)的實(shí)時(shí)一致性,因此數(shù)據(jù)同步的性能比較慢,根據(jù)測(cè)試,會(huì)比SQL Server鏡像慢好幾倍。 f) 同樣地,此集群的節(jié)點(diǎn)數(shù)量也受到限制,也是以2到4個(gè)節(jié)點(diǎn)為宜。 五.相關(guān)名詞解釋 1.同步 數(shù)據(jù)庫客戶端發(fā)出數(shù)據(jù)更新請(qǐng)求后,要等集群的每個(gè)節(jié)點(diǎn)全部更新后,才給客戶端返回結(jié)果。 2.異步 數(shù)據(jù)庫客戶端發(fā)出數(shù)據(jù)更新請(qǐng)求后,接受請(qǐng)求的節(jié)點(diǎn)(這里往往是主數(shù)據(jù)庫)立馬給客戶端返回結(jié)果,被更新的數(shù)據(jù)則會(huì)在接下來的某個(gè)時(shí)間里被復(fù)制傳輸?shù)郊旱钠渌?jié)點(diǎn)上。 3.基于連接的負(fù)載均衡 此種負(fù)載均衡實(shí)現(xiàn)技術(shù)比較簡單,就是在客戶端發(fā)起登陸的時(shí)候,按照某種負(fù)載均衡算法,選擇登陸到集群某臺(tái)數(shù)據(jù)庫,此后所有客戶端的請(qǐng)求全部會(huì)發(fā)送到此數(shù)據(jù)庫上。 4.基于請(qǐng)求的負(fù)載均衡 此種負(fù)載均衡實(shí)現(xiàn)技術(shù)比較復(fù)雜,但是功能強(qiáng)大,就是在客戶端發(fā)起登陸的時(shí)候,集群網(wǎng)關(guān)會(huì)同時(shí)登錄到集群各節(jié)點(diǎn)數(shù)據(jù)庫,此后所有的客戶端請(qǐng)求,經(jīng)過集群網(wǎng)關(guān)的分析被分成兩類,查詢請(qǐng)求根據(jù)負(fù)載均衡算法挑選一個(gè)節(jié)點(diǎn)執(zhí)行,數(shù)據(jù)更新請(qǐng)求則有主機(jī)執(zhí)行并實(shí)時(shí)同步數(shù)據(jù)到集群各節(jié)點(diǎn)。轉(zhuǎn)載于:https://www.cnblogs.com/xiaogelove/archive/2013/05/28/3103344.html
總結(jié)
- 上一篇: CentOS 6网络配置
- 下一篇: Creating Your First