王英資+趙帥+方祥毅
摘 要:立足于汽車(chē)行業(yè)電子政務(wù)平臺(tái),分析了雙機(jī)熱備技術(shù)的優(yōu)缺點(diǎn)和Oracle MAA架構(gòu)的體系結(jié)構(gòu)與基本原理。結(jié)合業(yè)務(wù)需求,提出基于Oracle MAA的解決方案,并闡述了具體實(shí)施步驟。實(shí)現(xiàn)了無(wú)人工干預(yù)的自動(dòng)故障切換和本地容災(zāi)設(shè)計(jì),提高了數(shù)據(jù)庫(kù)系統(tǒng)的安全性、可靠性及可擴(kuò)展性,提升了硬件資源的利用效率和經(jīng)濟(jì)效益,對(duì)企業(yè)數(shù)據(jù)庫(kù)的構(gòu)建具有一定指導(dǎo)意義。
關(guān)鍵詞:Oracle MAA;電子政務(wù);數(shù)據(jù)庫(kù);集群;負(fù)載均衡;容災(zāi)
DOIDOI:10.11907/rjdk.162268
中圖分類號(hào):TP319
文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1672-7800(2016)012-0103-04
0 引言
由于中央和地方政府的高度重視,電子政務(wù)在我國(guó)雖然起步較晚,但發(fā)展勢(shì)頭迅猛。特別是汽車(chē)行業(yè)在10多年的運(yùn)行實(shí)踐中,進(jìn)行了大量有益探索,并取得了重大進(jìn)展。以信息技術(shù)為中心,汽車(chē)行業(yè)政務(wù)管理由最初的紙質(zhì)材料管理一步步升級(jí),最終實(shí)現(xiàn)了信息化管理。數(shù)據(jù)庫(kù)作為信息系統(tǒng)數(shù)據(jù)的最終載體,存儲(chǔ)著汽車(chē)行業(yè)電子政務(wù)平臺(tái)的所有歷史和實(shí)時(shí)數(shù)據(jù),一旦遭到破壞,將造成極大損失。因此,伴隨電子化進(jìn)程,政務(wù)平臺(tái)后臺(tái)數(shù)據(jù)庫(kù)也由最初的單機(jī)版逐步升級(jí)為雙機(jī)熱備方式,尤其是平臺(tái)的核心數(shù)據(jù)庫(kù),均已全面完成了升級(jí),從而大大提高了數(shù)據(jù)庫(kù)系統(tǒng)的穩(wěn)定性和可靠性,提升了企業(yè)服務(wù)能力。
隨著云計(jì)算、大數(shù)據(jù)的迅速發(fā)展,政務(wù)平臺(tái)積累的數(shù)據(jù)量大大增加,因而其在穩(wěn)定性的基礎(chǔ)上,對(duì)數(shù)據(jù)庫(kù)的性能、可擴(kuò)展性、負(fù)載均衡管理等提出了更高要求。Oracle MAA架構(gòu)既能確保數(shù)據(jù)庫(kù)系統(tǒng)安全、穩(wěn)定、高效運(yùn)行,以更好地滿足企業(yè)需求,也能提高軟硬件利用效率,有效節(jié)約成本。
1 現(xiàn)狀分析
目前行業(yè)電子政務(wù)平臺(tái)的數(shù)據(jù)庫(kù)主要采用雙機(jī)熱備方式,能夠有效預(yù)防服務(wù)器故障帶來(lái)的數(shù)據(jù)丟失、系統(tǒng)不可用等現(xiàn)象發(fā)生。雙機(jī)熱備有共享和軟件同步數(shù)據(jù)[1]兩種方式,汽車(chē)行業(yè)電子政務(wù)平臺(tái)的雙機(jī)熱備采用共享方式實(shí)現(xiàn),如圖1所示。兩臺(tái)Oracle T5-2服務(wù)器,在Solaris 10的操作系統(tǒng)上,采用RAID 5作為共享存儲(chǔ),使用Cluster軟件實(shí)現(xiàn)雙機(jī)熱備份。為了降低主備服務(wù)器之間切換對(duì)用戶造成的影響,在主備服務(wù)器實(shí)際IP地址之上,架設(shè)浮動(dòng)IP(也稱虛擬IP)對(duì)應(yīng)用提供服務(wù),以縮短主備服務(wù)器的切換時(shí)間[2]。
該架構(gòu)的優(yōu)點(diǎn)如下:①通過(guò)軟件和硬件相結(jié)合的方式,實(shí)現(xiàn)系統(tǒng)與數(shù)據(jù)的真正分離;②主備服務(wù)器切換時(shí)間短,平均切換時(shí)間為90s左右;③切換過(guò)程中對(duì)應(yīng)用程序沒(méi)有影響,程序無(wú)需重新啟動(dòng)或登錄;④系統(tǒng)效率高,整個(gè)系統(tǒng)的讀寫(xiě)、管理及容錯(cuò)均由磁盤(pán)陣列完成;⑤數(shù)據(jù)安全性較高,所有數(shù)據(jù)全部貯存在磁盤(pán)陣列中,即使由于軟件本身的缺陷導(dǎo)致系統(tǒng)全部宕機(jī),也不會(huì)造成數(shù)據(jù)丟失或不同步的問(wèn)題[3]。
然而,該架構(gòu)在服務(wù)器切換、購(gòu)買(mǎi)配置、服務(wù)器利用率、容錯(cuò)性、讀寫(xiě)性能等方面仍存在一些問(wèn)題:
(1)在主備機(jī)進(jìn)行手工或自動(dòng)切換過(guò)程中,需要重新啟動(dòng)Oracle各個(gè)核心進(jìn)程,有可能造成實(shí)時(shí)數(shù)據(jù)丟失。若關(guān)鍵數(shù)據(jù)丟失,將無(wú)法挽回。
(2)受系統(tǒng)需求和計(jì)算方式限制,只能針對(duì)高峰容量采購(gòu)服務(wù)器配置,否則無(wú)法負(fù)載政務(wù)平臺(tái)的應(yīng)用,而備機(jī)要承擔(dān)相應(yīng)功能,也必須具有同樣性能,從而成倍地增加了采購(gòu)成本。另外,當(dāng)需要通過(guò)提升硬件配置來(lái)提高系統(tǒng)性能時(shí),雙機(jī)熱備方式無(wú)法快速擴(kuò)充某個(gè)單元模塊的容量,通常需要購(gòu)買(mǎi)配置更高的新設(shè)備來(lái)替換原有服務(wù)器。在大數(shù)據(jù)時(shí)代,服務(wù)器的購(gòu)置頻率將大大增加,花費(fèi)也相應(yīng)提高,將對(duì)平臺(tái)的運(yùn)維方構(gòu)成發(fā)展的瓶頸。
(3)主備服務(wù)器配置基本相同,但正常情況下,備機(jī)并不實(shí)際工作,接近于閑置狀態(tài),造成硬件資源的極大浪費(fèi)。
(4)系統(tǒng)存在單點(diǎn)缺陷,雖然RAID 5磁盤(pán)陣列在一塊成員盤(pán)損壞的情況下,對(duì)業(yè)務(wù)不會(huì)造成太大影響,但不排除出現(xiàn)兩塊以上成員盤(pán)損壞,或其它邏輯、物理的故障,導(dǎo)致數(shù)據(jù)丟失的情況出現(xiàn)。另外,RAID 5通過(guò)奇偶校驗(yàn)方式恢復(fù)損壞盤(pán)的數(shù)據(jù),由于算法的復(fù)雜性,在數(shù)據(jù)量較大時(shí),恢復(fù)過(guò)程持續(xù)時(shí)間非常長(zhǎng),恢復(fù)時(shí)RAID 5控制器的負(fù)載也很大,若出現(xiàn)I/O滯留,則可能導(dǎo)致更多成員盤(pán)離線,或RAID信息出錯(cuò),造成數(shù)據(jù)庫(kù)系統(tǒng)不可用。
(5)系統(tǒng)不支持在線擴(kuò)容。當(dāng)存儲(chǔ)空間不夠,需要擴(kuò)大容量時(shí),只能重新部署一整套雙機(jī)軟件,涉及到各項(xiàng)業(yè)務(wù)的停機(jī)、遷入遷出等,不僅提高了運(yùn)維人員工作量,也降低了用戶滿意度。
(6)在政務(wù)平臺(tái)數(shù)據(jù)庫(kù)的實(shí)際使用過(guò)程中,隨著數(shù)據(jù)容量的不斷增大,基于UFS的文件系統(tǒng)IO讀寫(xiě)能力最大為200MB/S,無(wú)法支持未來(lái)海量數(shù)據(jù)的運(yùn)算需求,成為數(shù)據(jù)庫(kù)系統(tǒng)性能的瓶頸。
2 Oracle MAA架構(gòu)設(shè)計(jì)
2.1 Oracle MAA數(shù)據(jù)庫(kù)架構(gòu)分析
Oracle MAA是由多個(gè)獨(dú)立服務(wù)器互相協(xié)作組成的系統(tǒng),可以隨著系統(tǒng)的擴(kuò)大而擴(kuò)展,同時(shí)也提高了系統(tǒng)的安全性和錯(cuò)誤恢復(fù)能力。Oracle最高可用性架構(gòu)(Maximum Availability Architecture,MAA)[4]繼承了集群的所有特性,不僅是一項(xiàng)并行計(jì)算技術(shù),也是一個(gè)高效的容災(zāi)方案。底層基礎(chǔ)體系是RAC+ASM+Data Guard,用戶可以通過(guò)自動(dòng)負(fù)載均衡和Failover特性訪問(wèn)當(dāng)前生產(chǎn)主數(shù)據(jù)庫(kù),當(dāng)生產(chǎn)主庫(kù)出現(xiàn)故障時(shí),可以手工或自動(dòng)切換到生產(chǎn)備庫(kù),用戶會(huì)話也會(huì)自動(dòng)連接到備用庫(kù),從而保證了系統(tǒng)的最大可用性和業(yè)務(wù)連續(xù)性[5]。此外,不論是生產(chǎn)主庫(kù),還是生產(chǎn)備庫(kù),都是多個(gè)服務(wù)器共享單一數(shù)據(jù)庫(kù)的實(shí)時(shí)訪問(wèn),確保了更高的可用性和更靈活的可伸縮性。
如圖2所示,主備庫(kù)通過(guò)Oracle Data Guard[6]實(shí)現(xiàn),其配置包括一個(gè)生產(chǎn)主庫(kù)和一個(gè)或多個(gè)生產(chǎn)備庫(kù)(最大可創(chuàng)建30個(gè)),數(shù)據(jù)庫(kù)可分布在同一個(gè)或多個(gè)不同地理位置上。生產(chǎn)主庫(kù)是大多數(shù)應(yīng)用訪問(wèn)的數(shù)據(jù)庫(kù),生產(chǎn)備庫(kù)分為物理備庫(kù)和邏輯備庫(kù)兩種[7]。其中,物理備庫(kù)是主庫(kù)的一個(gè)完整副本,磁盤(pán)結(jié)構(gòu)和數(shù)據(jù)塊結(jié)構(gòu)均相同,數(shù)據(jù)通過(guò)同步或異步方式傳送Redo日志實(shí)現(xiàn);邏輯備庫(kù)基于SQL進(jìn)行同步,備庫(kù)接受從主庫(kù)傳來(lái)的Archive Log,通過(guò)Log Miner技術(shù)解析為SQL語(yǔ)句執(zhí)行,支持特定的報(bào)表或業(yè)務(wù),也支持額外的數(shù)據(jù)庫(kù)結(jié)構(gòu)。Data Guard有3種運(yùn)行模式,分別為最大保護(hù)模式(Maximum Protection)、最高可用性模式(Maximum Availability)和最高性能模式(Maximum Performance)[8]。
生產(chǎn)主庫(kù)和備庫(kù)各為兩個(gè)節(jié)點(diǎn)的RAC,每個(gè)節(jié)點(diǎn)的服務(wù)器都相對(duì)獨(dú)立[9]。節(jié)點(diǎn)間通過(guò)通訊層,在不需要人工干預(yù)的情況下,實(shí)現(xiàn)負(fù)載均衡、緩存融合以及故障轉(zhuǎn)移等。主備庫(kù)各節(jié)點(diǎn)分別共享一個(gè)數(shù)據(jù)庫(kù),該數(shù)據(jù)庫(kù)使用自動(dòng)存儲(chǔ)管理(Automatic Storage Management,ASM)[10],將磁盤(pán)陣列設(shè)置為ASM磁盤(pán)組方式,共享數(shù)據(jù)文件、控制文件、日志文件等,支持在線擴(kuò)容,不需要停庫(kù)。通過(guò)內(nèi)部協(xié)調(diào)方式共享所有(Shared Everything)架構(gòu),可以保證每個(gè)節(jié)點(diǎn)訪問(wèn)數(shù)據(jù)的完整性和一致性[11]。
在MAA架構(gòu)中,所有節(jié)點(diǎn)服務(wù)器的性能總和達(dá)到應(yīng)用系統(tǒng)對(duì)服務(wù)器的峰值要求即可,當(dāng)需要提高服務(wù)器處理能力時(shí),只需按照增量設(shè)定新增服務(wù)器節(jié)點(diǎn)。該過(guò)程不需要對(duì)應(yīng)用程序進(jìn)行任何修改,原有服務(wù)器也可繼續(xù)使用。若個(gè)別服務(wù)器節(jié)點(diǎn)出現(xiàn)故障,其它狀態(tài)正常的服務(wù)器節(jié)點(diǎn)將分擔(dān)故障節(jié)點(diǎn)的工作量,不影響整個(gè)架構(gòu)的運(yùn)行;若所有服務(wù)器節(jié)點(diǎn)或整個(gè)存儲(chǔ)都出現(xiàn)故障,將由生產(chǎn)備庫(kù)接管所有工作,繼續(xù)對(duì)外提供服務(wù),整個(gè)切換過(guò)程對(duì)用戶是透明的。
2.2 框架設(shè)計(jì)
為應(yīng)對(duì)大數(shù)據(jù)時(shí)代的來(lái)臨,汽車(chē)行業(yè)電子政務(wù)平臺(tái)需進(jìn)一步提升數(shù)據(jù)的安全性,提高數(shù)據(jù)庫(kù)系統(tǒng)的可靠性、可用性、可擴(kuò)展性,以及硬件利用率。Oracle MAA具備以上性能,將是未來(lái)云計(jì)算可選的實(shí)施方案之一。
根據(jù)實(shí)際情況,設(shè)計(jì)具體實(shí)施方案如圖3所示。整個(gè)MAA架構(gòu)位于同一機(jī)房,生產(chǎn)主庫(kù)使用2節(jié)點(diǎn)RAC+ASM,生產(chǎn)備庫(kù)使用單實(shí)例物理備庫(kù)+ASM,采用最高性能模式。服務(wù)器為3臺(tái)Oracle T5-2,操作系統(tǒng)為Solaris 10。數(shù)據(jù)庫(kù)采用Oracle 11.2.0.4,并安裝最新的PSU,網(wǎng)絡(luò)為光纖交換機(jī)。存儲(chǔ)為2臺(tái)RAID 5磁盤(pán)陣列,分別劃分為+DATA磁盤(pán)組(外部冗余),用于存儲(chǔ)數(shù)據(jù);+FLASH磁盤(pán)組(外部冗余),用于存儲(chǔ)FRA相關(guān)數(shù)據(jù);+GRIDDG磁盤(pán)組(內(nèi)部冗余),作為Voting Disk,存儲(chǔ)OCR信息;另外,預(yù)留四分之一文件系統(tǒng)容量,用于存儲(chǔ)備份文件等。
在該框架下,可以充分利用多臺(tái)服務(wù)器處理資源,該框架具備以下優(yōu)點(diǎn):①提供了跨計(jì)算機(jī)的工作能力,不需要因?yàn)樨?fù)載量變化,對(duì)數(shù)據(jù)進(jìn)行分區(qū)或重定義;②明顯提高了硬件設(shè)備和資源利用率。在生產(chǎn)主庫(kù),多臺(tái)服務(wù)器并行提供服務(wù),大大提高了數(shù)據(jù)處理能力,滿足了業(yè)務(wù)負(fù)載需求。在生產(chǎn)備庫(kù),因?yàn)椴捎昧薕racle 11G版本,物理備庫(kù)可以在應(yīng)用日志的同時(shí),對(duì)外提供讀操作,供查詢和報(bào)表服務(wù)使用,實(shí)現(xiàn)讀寫(xiě)分離;③在生產(chǎn)主庫(kù)中,不僅可以隨時(shí)增加服務(wù)器節(jié)點(diǎn)數(shù)量,對(duì)服務(wù)器硬件配置也沒(méi)有太高要求;④安全性進(jìn)一步提升,消除了系統(tǒng)單點(diǎn)故障;⑤支持存儲(chǔ)在線擴(kuò)容和數(shù)據(jù)自動(dòng)重平衡,確保系統(tǒng)連續(xù)在線、不間斷運(yùn)行和數(shù)據(jù)的均勻分布;⑥提高了系統(tǒng)的讀寫(xiě)效率,在實(shí)際測(cè)試時(shí),讀寫(xiě)速度可達(dá)800MB/s,并支持多個(gè)系統(tǒng)海量數(shù)據(jù)的并發(fā)使用。
3 應(yīng)用實(shí)施
3.1 配置系統(tǒng)環(huán)境
(1)規(guī)劃操作系統(tǒng)、主機(jī)名、IP、VIP、SCAN-IP等,需確保操作系統(tǒng)版本號(hào)一致并同時(shí)支持32位或64位操作系統(tǒng)。
(2)配置系統(tǒng)hosts文件。
(3)在各節(jié)點(diǎn)設(shè)置網(wǎng)卡。
(4)進(jìn)行安裝前的檢查,包括:內(nèi)存大于1G,交換區(qū)大于內(nèi)存1.2倍,/tmp區(qū)大于400M,系統(tǒng)包符合安裝要求,/etc/system參數(shù)配置,用戶、用戶組、權(quán)限設(shè)置,grid、oracle用戶環(huán)境變量設(shè)置等。
3.2 安裝過(guò)程
(1)安裝Oracle 11G Grid Infrastructure軟件。
(2)使用./crs_stat –t檢查資源狀態(tài),除ora.gsd、ora.rac1.gsd外,均為Online狀態(tài)。
(3)安裝Oracle 11.2.0.4數(shù)據(jù)庫(kù)軟件,Grid Installation Options選中Oracle Real Application Clusters database installation。
(4)安裝并創(chuàng)建ASM磁盤(pán)組。
(5)安裝最新的DB PSU和GI PSU。
(6)使用Database Configuration Assistant(DBCA)創(chuàng)建Oracle數(shù)據(jù)庫(kù)。
(7)備庫(kù)安裝過(guò)程,除(3)、(6)步外,其余都一樣。備庫(kù)中,(3)步的Grid Installation Options選中Single instance database installation,(6)步不執(zhí)行。
3.3 物理Dataguard配置過(guò)程
(1)主備庫(kù)分別配置tnsnames.ora文件。
(2)主庫(kù)兩節(jié)點(diǎn)開(kāi)啟歸檔和force logging模式。
(3)在備庫(kù)手工創(chuàng)建必備目錄。
(4)在主庫(kù)任意節(jié)點(diǎn)(節(jié)點(diǎn)1、節(jié)點(diǎn)2均可)使用RMAN進(jìn)行備份,并scp到備庫(kù)相應(yīng)目錄。
(5)在備庫(kù)使用RMAN啟動(dòng)數(shù)據(jù)庫(kù)到nomount狀態(tài),恢復(fù)spfile文件,并修改。
(6)在備庫(kù)創(chuàng)建密碼文件,密碼一定要與主庫(kù)一致。
(7)重新啟動(dòng)備庫(kù)到nomount狀態(tài),恢復(fù)控制文件。
(8)啟動(dòng)備庫(kù)到mount狀態(tài),重建數(shù)據(jù)文件,并恢復(fù)至同一SCN號(hào)。
3.4 配置主備庫(kù)
(1)主備庫(kù)分別創(chuàng)建standby日志組,日志組數(shù)量是redo log個(gè)數(shù)+1,大小一致。
(2)分別進(jìn)行主備庫(kù)參數(shù)配置,如DB_UNIQUE_NAME、LOG_ARCHIVE_CONFIG、FAL_SERVER、FAL_CLIENT等至少11個(gè)參數(shù),選擇LGWR方式同步數(shù)據(jù)。
(3)以Active Data guard方式開(kāi)啟備庫(kù)自動(dòng)恢復(fù),并在主備庫(kù)之間驗(yàn)證數(shù)據(jù)和日志傳輸情況。
4 結(jié)語(yǔ)
Oracle MAA能夠運(yùn)行在所有平臺(tái)上,是最高可用性和本地容災(zāi)的最佳實(shí)踐方案,可大大提高整套應(yīng)用系統(tǒng)的運(yùn)行效率和經(jīng)濟(jì)效益。本文結(jié)合MAA特性,將其應(yīng)用于汽車(chē)行業(yè)電子政務(wù)平臺(tái)數(shù)據(jù)庫(kù)建設(shè)方案中,并給出具體實(shí)施步驟,可確保系統(tǒng)的平穩(wěn)運(yùn)行,以及相關(guān)服務(wù)的穩(wěn)定性、可靠性和安全性。當(dāng)然,數(shù)據(jù)庫(kù)的高可用性、負(fù)載能力、容災(zāi)能力與許多方面有關(guān),如主機(jī)、存儲(chǔ)、網(wǎng)絡(luò)等。當(dāng)前的Oracle MAA設(shè)計(jì)是在本地環(huán)境進(jìn)行的數(shù)據(jù)庫(kù)冗余和災(zāi)備措施,對(duì)于地震、火災(zāi)等不可抗力導(dǎo)致的機(jī)房損毀,將無(wú)法得到可用性保障。因此仍需提供跨地域的容災(zāi)方案,以實(shí)現(xiàn)快速切換與災(zāi)難恢復(fù),這也是未來(lái)每個(gè)行業(yè)數(shù)據(jù)中心必須考慮和面對(duì)的問(wèn)題。
參考文獻(xiàn):
[1] 李利軍.星載雙機(jī)熱備份計(jì)算機(jī)系統(tǒng)設(shè)計(jì)[D].西安:西安電子科技大學(xué),2010.
[2] 孫川.基于分布式事務(wù)的數(shù)據(jù)庫(kù)雙機(jī)熱備份方案的設(shè)計(jì)[J].微計(jì)算機(jī)信息,2010,26(12):145-147.
[3] 曲建峰,孫翌,徐汝興,等. Oracle RAC集群技術(shù)在圖書(shū)館集成管理系統(tǒng)中的應(yīng)用[J].現(xiàn)代圖書(shū)情報(bào)技術(shù), 2012(Z1):133-138.
[4] 王楷.基于云計(jì)算的城市社區(qū)電子政務(wù)服務(wù)研究[J].軟件導(dǎo)刊,2015,14(2): 8-9.
[5] KHAN S F, RAHEED M A A. A developer's guide to database management systems: using oracle 10g RDBMS[M]. CreateSpace Independent Publishing Platform, 2015.
[6] 宋亮. 醫(yī)院信息系統(tǒng)中Oracle Data Guard部署與實(shí)踐[J].醫(yī)療衛(wèi)生裝備,2013,34(5):62-65.
[7] 王興強(qiáng),侯玉玲,劉長(zhǎng)興,等.基于“軍衛(wèi)一號(hào)”數(shù)據(jù)庫(kù)的DataGuard數(shù)據(jù)容災(zāi)方案設(shè)計(jì)與實(shí)現(xiàn)[J].醫(yī)療衛(wèi)生裝備,2016(5):52-54.
[8] BARANSEL E, BASHA N. Oracle data guard 11gR2 administration beginner's guide[M]. Packt Publishing, 2013.
[9] 閆黎. 基于Oracle RAC的數(shù)據(jù)庫(kù)架構(gòu)分析與企業(yè)應(yīng)用[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2013(11):200-203.
[10] Sideris. Oracle Database 11g R2 grid infrastructure & ASM[M]. Sideris Courseware Corporation, 2011.
[11] 文平. ORACLE大型數(shù)據(jù)系統(tǒng)在AIX/UNIX上的實(shí)戰(zhàn)詳解[M].北京:電子工業(yè)出版社,2009.
(責(zé)任編輯:黃 健)