號(hào)碼攜帶集中管理系統(tǒng)的高可用技術(shù)應(yīng)用
3.5.2 數(shù)據(jù)庫(kù)集群軟件
我們以O(shè)RACLE的真正應(yīng)用集群(Real Application Cluster,RAC)軟件為例,介紹數(shù)據(jù)庫(kù)集群軟件的主要特點(diǎn)。
?。?)共享磁盤(pán)
與Single-Instance Oracle的存儲(chǔ)方式最主要的不同之處在于RAC存儲(chǔ)必須將所有RAC中數(shù)據(jù)文件存放在共享設(shè)備中,以便訪問(wèn)相同Database的Instance能夠共享。同時(shí),為了能夠使每個(gè)Instance能夠獨(dú)立操作,也為了系統(tǒng)恢復(fù)時(shí)其他Instance能找到相關(guān)的操作痕跡,RAC數(shù)據(jù)庫(kù)與單實(shí)例數(shù)據(jù)庫(kù)在存儲(chǔ)結(jié)構(gòu)上還存在以下不同:
?。?)每一個(gè)Instance都有自己的SGA(系統(tǒng)全局區(qū))。
?。?)每一個(gè)Instance都有自己的Background Process。
?。?)每一個(gè)Instance都有自己的Redo Logs。
?。?)每一個(gè)Instance都有自己的Undo表空間。
RAC也不能使用傳統(tǒng)的文件系統(tǒng),因?yàn)閭鹘y(tǒng)的文件系統(tǒng)不支持多系統(tǒng)的并行掛載,必須將文件存儲(chǔ)在沒(méi)有任何文件系統(tǒng)的裸設(shè)備或是支持多系統(tǒng)并發(fā)訪問(wèn)的文件系統(tǒng)中。
RAC操作要求在所有Instance中對(duì)控制共享資源的訪問(wèn)進(jìn)行同步。RAC使用Global Resource Directory來(lái)記錄Cluster Database中資源的使用信息,Global Cache Service(GCS)和Global Enqueue Service(GES)管理GRD中的信息。每個(gè)Instance在進(jìn)行讀寫(xiě)操作后,要由GCS或者GES按照嚴(yán)格的流程同步到其他Instance的Buffer中。
?。?)緩存融合(Cache Fusion)
在RAC環(huán)境中,每個(gè)實(shí)例的內(nèi)存結(jié)構(gòu)和后臺(tái)進(jìn)程都是相同的,它們看起來(lái)像單一系統(tǒng)的一樣。每個(gè)實(shí)例的SGA內(nèi)有一個(gè)緩沖區(qū),使用Cache Fusion技術(shù),每個(gè)實(shí)例就像使用單一緩存一樣使用集群實(shí)例的緩存來(lái)處理數(shù)據(jù)庫(kù)。Cache Fusion技術(shù)可以最大限度地降低磁盤(pán)I/O,優(yōu)化數(shù)據(jù)讀寫(xiě)。節(jié)點(diǎn)之間會(huì)產(chǎn)生不小的網(wǎng)絡(luò)通信和CPU的開(kāi)銷,因此雙節(jié)點(diǎn)RAC的性能不會(huì)是單節(jié)點(diǎn)性能的兩倍。
?。?)透明應(yīng)用切換
當(dāng)RAC群集中的一個(gè)節(jié)點(diǎn)發(fā)生了故障,故障節(jié)點(diǎn)上所有保存在內(nèi)存中運(yùn)行的事務(wù)會(huì)丟失,Oracle將故障節(jié)點(diǎn)所擁有數(shù)據(jù)塊的控制權(quán)限重新轉(zhuǎn)交給正常節(jié)點(diǎn),此過(guò)程稱為全局緩存服務(wù)重置。在全局緩存服務(wù)重置發(fā)生時(shí),RAC中所有服務(wù)器都會(huì)被凍結(jié),所有應(yīng)用程序?qū)⒈粧炱?,GCS將不會(huì)響應(yīng)群集中任何節(jié)點(diǎn)發(fā)出的請(qǐng)求;重置后,Oracle讀取日志記錄,確定并鎖定需要恢復(fù)的頁(yè)面,并執(zhí)行回滾,此時(shí)數(shù)據(jù)庫(kù)恢復(fù)可用。
3.6 應(yīng)用軟件的系統(tǒng)恢復(fù)方案
即使我們采取了前面所有的措施,也需要考慮在前面方案失敗的情況下,即系統(tǒng)底層軟件或者硬件發(fā)生錯(cuò)誤而導(dǎo)致系統(tǒng)重啟時(shí)的處理辦法。
系統(tǒng)在重啟前,系統(tǒng)中正在運(yùn)行的有若干個(gè)流程,每個(gè)流程都處于不同的狀態(tài),應(yīng)用軟件的恢復(fù)方案就是要保證系統(tǒng)重啟后,這些狀態(tài)都能夠恢復(fù)并自動(dòng)運(yùn)行到結(jié)束狀態(tài)。為此,系統(tǒng)在運(yùn)行過(guò)程中,所有消息和流程的狀態(tài)都需要在修改的時(shí)候保存在數(shù)據(jù)庫(kù)中,而不能僅僅保存在內(nèi)存中,在System Recover的時(shí)候,需要檢查數(shù)據(jù)庫(kù)中所有沒(méi)有到最終狀態(tài)的消息和流程并進(jìn)行后續(xù)處理。
CSMS在System Recover后實(shí)現(xiàn)過(guò)程如下:
(1)恢復(fù)所有消息:恢復(fù)CSMS發(fā)出的消息,恢復(fù)CSMS收到的消息。
?。?)恢復(fù)申請(qǐng)流程。
(3)恢復(fù)注銷流程。
?。?)恢復(fù)停機(jī)相關(guān)流程。
?。?)恢復(fù)審計(jì)流程。
(6)檢查當(dāng)天的生效廣播。
(7)檢查當(dāng)天的同步。
?。?)檢查當(dāng)月的同步。
系統(tǒng)恢復(fù)的關(guān)鍵就是要清楚每個(gè)流程的不同狀態(tài),比如在消息的恢復(fù)中,對(duì)于從CSMS發(fā)送出去的NP消息,狀態(tài)包括:
●Init(初始)。
●Sending(發(fā)送中):該消息已經(jīng)發(fā)送給SOA/LSMS,等待ACK。
●Wait Send(等待發(fā)送):ACK超時(shí)重發(fā)。
●Sent(發(fā)送成功):收到ACK信息。
●Complete(完成):收到該NP消息(請(qǐng)求/指示)的回復(fù)(響應(yīng)/確認(rèn)),并已經(jīng)成功發(fā)送相應(yīng)的ACK。
對(duì)于CSMS接收到的NP消息,狀態(tài)包括:
●Init(初始)。
●Processing(處理中):表示系統(tǒng)正在處理該NP消息,主要包括將該NP消息保存入系統(tǒng),根據(jù)該NP消息的類型,選擇需要處理的方式。
●Processed(處理結(jié)束):表示系統(tǒng)已經(jīng)處理結(jié)束該NP消息。
●Replying(正在發(fā)送回復(fù)消息):系統(tǒng)將組織好的NP回復(fù)消息已經(jīng)發(fā)送到SOA/LSMS,該消息沒(méi)有收到ACK。
●Wait Reply(等待回復(fù)):ACK超時(shí)等待重發(fā)。
●Complete(完成):系統(tǒng)收到該消息的ACK信息。
對(duì)于系統(tǒng)的其他恢復(fù)流程,方法類似不再贅述。
3.7 磁盤(pán)陣列的RAID和磁帶庫(kù)備份方案
系統(tǒng)高可靠性最后的考慮就是存儲(chǔ)設(shè)備,以目前的技術(shù)而言,有效的存儲(chǔ)方案不僅可以保證存儲(chǔ)數(shù)據(jù)的安全可靠,還能夠提高硬盤(pán)讀寫(xiě)的速度,常用的技術(shù)就是RAID。
RAID技術(shù)按照級(jí)別可以分為RAID0,RAID1,RAID5等,不同級(jí)別RAID的存儲(chǔ)效率不同,當(dāng)硬盤(pán)出現(xiàn)故障時(shí)能夠恢復(fù)的時(shí)間也不相同,具體技術(shù)可以參考相關(guān)技術(shù)文檔。
為了進(jìn)一步增加數(shù)據(jù)存儲(chǔ)的保護(hù)功能,系統(tǒng)一般還會(huì)有其他介質(zhì)的備份方案,如磁帶庫(kù)備份。磁盤(pán)陣列的數(shù)據(jù)按照一定的規(guī)則備份到磁帶庫(kù)上,一方面可以增加存儲(chǔ)設(shè)備的容量,同時(shí)對(duì)數(shù)據(jù)保護(hù)又增加了一層保障。
4 結(jié)束語(yǔ)
作為號(hào)碼攜帶集中管理系統(tǒng)的重要性能指標(biāo)之一,高可用性具有十分重要的意義。因?yàn)楦?a class="contentlabel" href="http://m.butianyuan.cn/news/listbylabel/label/可用">可用性需要考慮到系統(tǒng)的各個(gè)層面,相對(duì)也比較復(fù)雜。尤其在各種新的IT技術(shù)層出不窮的今天,研究各種高可用性技術(shù),選擇合適的高可用性技術(shù)方案,應(yīng)作為系統(tǒng)架構(gòu)設(shè)計(jì)者和相關(guān)技術(shù)研究人員的重點(diǎn)研究?jī)?nèi)容。本文僅作為拋磚引玉,對(duì)號(hào)碼攜帶集中管理系統(tǒng)的各種高可用技術(shù)進(jìn)行了簡(jiǎn)單的分析和總結(jié),相信這些高可用性技術(shù)對(duì)類似系統(tǒng)的設(shè)計(jì)具有一定的參考意義。
評(píng)論