王鵬
(洛陽(yáng)光電技術(shù)發(fā)展中心,洛陽(yáng) 471000)
隨著“大數(shù)據(jù)”時(shí)代的到來(lái),數(shù)據(jù)已成為企業(yè)最為重要的資產(chǎn)之一,信息系統(tǒng)的容災(zāi)建設(shè)則成為保護(hù)企業(yè)數(shù)據(jù)的重要手段。某企業(yè)裝配MES系統(tǒng)使用人數(shù)眾多,生產(chǎn)過(guò)程中形成的重要數(shù)據(jù)文件存儲(chǔ)于該系統(tǒng)上,作為核心組件的數(shù)據(jù)庫(kù)一旦出現(xiàn)故障,將引起數(shù)據(jù)丟失,給該企業(yè)的科研生產(chǎn)造成嚴(yán)重的影響。本文通過(guò)研究和應(yīng)用Oracle高可用技術(shù)Data Guard,在該企業(yè)災(zāi)備中心建立裝配MES容災(zāi)數(shù)據(jù)庫(kù),實(shí)現(xiàn)主備數(shù)據(jù)庫(kù)同步,提升了裝配MES系統(tǒng)的容災(zāi)能力,其數(shù)據(jù)的完整性指標(biāo)和故障恢復(fù)能力均得到了顯著提高。
某企業(yè)裝配MES系統(tǒng)運(yùn)行架構(gòu)如圖1所示,該系統(tǒng)目前所采用的數(shù)據(jù)保護(hù)方式是利用NetWorker虛擬磁帶庫(kù)技術(shù)將數(shù)據(jù)復(fù)制到備份存儲(chǔ)上,每天備份1次,雖然采取了一定的備份手段,但裝配MES系統(tǒng)的高可用性建設(shè)還存在以下問(wèn)題:
圖1 裝配MES運(yùn)行架構(gòu)圖
(1)數(shù)據(jù)庫(kù)發(fā)生故障時(shí),只能恢復(fù)到備份時(shí)間點(diǎn)以前的數(shù)據(jù),將丟失最近備份點(diǎn)到災(zāi)難發(fā)生時(shí)的業(yè)務(wù)數(shù)據(jù)(RPO大約為8小時(shí));系統(tǒng)崩潰需要較長(zhǎng)的故障恢復(fù)時(shí)間(RTO大約為3個(gè)小時(shí)),嚴(yán)重影響用戶的正常使用和業(yè)務(wù)系統(tǒng)的連續(xù)性;
(2)數(shù)據(jù)庫(kù)自身的容災(zāi)能力較弱,其管理和維護(hù)對(duì)系統(tǒng)管理員的依賴程度很高,人為的誤操作會(huì)造成數(shù)據(jù)丟失或邏輯錯(cuò)誤,影響數(shù)據(jù)的完整性,同時(shí)也加大了系統(tǒng)管理員的壓力。
本文基于Oracle提供的數(shù)據(jù)保護(hù)技術(shù)——Data Guard,在某企業(yè)災(zāi)備中心建立裝配MES災(zāi)備數(shù)據(jù)庫(kù),實(shí)現(xiàn)主備數(shù)據(jù)庫(kù)同步(圖2中雙箭頭實(shí)線)。正常情況下,用戶通過(guò)裝配MES應(yīng)用訪問(wèn)主數(shù)據(jù)庫(kù)(圖2中單箭頭實(shí)線),當(dāng)主數(shù)據(jù)庫(kù)發(fā)生故障不能正常訪問(wèn)時(shí),用戶能夠通過(guò)應(yīng)用訪問(wèn)災(zāi)備中心的容災(zāi)數(shù)據(jù)庫(kù)(圖2中單箭頭虛線);當(dāng)主數(shù)據(jù)庫(kù)恢復(fù)正常時(shí),用戶通過(guò)裝配MES應(yīng)用繼續(xù)訪問(wèn)原主數(shù)據(jù)庫(kù)。其運(yùn)行架構(gòu)如圖2所示:
圖2 裝配MES數(shù)據(jù)庫(kù)容災(zāi)架構(gòu)圖
為滿足某企業(yè)裝配MES數(shù)據(jù)庫(kù)的容災(zāi)需求,本文完成了重做日志傳輸、重做日志應(yīng)用及主備庫(kù)切換等主要功能模塊的設(shè)計(jì)與程序?qū)崿F(xiàn),并進(jìn)行了相關(guān)試驗(yàn)驗(yàn)證與性能分析,其設(shè)計(jì)原理圖如圖3所示:
圖3 裝配MES數(shù)據(jù)庫(kù)容災(zāi)原理圖
(1)重做日志傳輸功能
本文中主數(shù)據(jù)庫(kù)聯(lián)機(jī)重做日志由6組聯(lián)機(jī)重做日志文件構(gòu)成(REDO1-REDO6),每組大小為1GB,為保證主備數(shù)據(jù)庫(kù)端重做條目的一致性,且重做條目能被及時(shí)應(yīng)用至災(zāi)備數(shù)據(jù)庫(kù)的數(shù)據(jù)文件中,組成災(zāi)備數(shù)據(jù)庫(kù)的備重做日志的備重做日志文件設(shè)計(jì)為7組(SLOG1-SLOG7),每組大小與聯(lián)機(jī)日志文件一樣,均為1GB。聯(lián)機(jī)重做日志文件和備重做日志文件均能夠?qū)崿F(xiàn)自動(dòng)切換和自動(dòng)歸檔(寫滿一組切換至下一組,自動(dòng)對(duì)寫滿的聯(lián)機(jī)重做或備重做日志文件進(jìn)行歸檔),且歸檔日志能夠?qū)崿F(xiàn)自動(dòng)回收,釋放磁盤空間。
(2)歸檔日志自動(dòng)回收功能
數(shù)據(jù)庫(kù)服務(wù)器和災(zāi)備服務(wù)器本地磁盤空間均為500GB,裝配MES數(shù)據(jù)庫(kù)每天產(chǎn)生的歸檔日志為50GB,歸檔日志寫滿磁盤空間時(shí),就會(huì)導(dǎo)致主備數(shù)據(jù)庫(kù)均不能正常訪問(wèn)。本文在主備數(shù)據(jù)庫(kù)端建立快速恢復(fù)區(qū)實(shí)現(xiàn)歸檔日志自動(dòng)回收功能,即重做條目成功傳送至災(zāi)備數(shù)據(jù)庫(kù)后,主數(shù)據(jù)庫(kù)中快速恢復(fù)區(qū)內(nèi)相應(yīng)的歸檔數(shù)據(jù)就可以被自動(dòng)覆蓋;備重做日志文件中的重做條目成功應(yīng)用至災(zāi)備數(shù)據(jù)庫(kù)后,備數(shù)據(jù)庫(kù)快速恢復(fù)區(qū)內(nèi)相應(yīng)的歸檔條目也可以被自動(dòng)覆蓋;自動(dòng)回收功能最大限度地保證了主備庫(kù)歸檔日志的保留時(shí)間(歸檔日志可用來(lái)對(duì)數(shù)據(jù)庫(kù)進(jìn)行恢復(fù)),本文中主備庫(kù)歸檔日志的保留時(shí)間大約為5天。
(3)重做日志應(yīng)用功能
該功能主要實(shí)現(xiàn)將傳送至備重做日志中的重做條目實(shí)時(shí)地應(yīng)用到災(zāi)備數(shù)據(jù)庫(kù)的數(shù)據(jù)文件中,實(shí)現(xiàn)主備數(shù)據(jù)庫(kù)的數(shù)據(jù)同步。
如圖3所示,主數(shù)據(jù)庫(kù)端產(chǎn)生的重做條目傳送到備重做日志文件后,介質(zhì)恢復(fù)進(jìn)程(MRP)應(yīng)用該重做條目,立刻修改災(zāi)備數(shù)據(jù)庫(kù)中對(duì)應(yīng)的數(shù)據(jù)塊,更新災(zāi)備數(shù)據(jù)庫(kù)中相應(yīng)的記錄信息。
(4)主備庫(kù)切換功能
該功能實(shí)現(xiàn)裝配MES主數(shù)據(jù)庫(kù)的正常切換和故障切換。
如圖3所示,正常切換功能用于系統(tǒng)升級(jí)測(cè)試,通過(guò)手動(dòng)切換將Primary角色的主數(shù)據(jù)庫(kù)切換至Standby角色,將Standby角色的災(zāi)備數(shù)據(jù)庫(kù)切換至Primary角色;故障切換功能實(shí)現(xiàn)當(dāng)裝配MES主數(shù)據(jù)庫(kù)出現(xiàn)故障時(shí),可以將災(zāi)備數(shù)據(jù)庫(kù)切換成Primary角色接替主數(shù)據(jù)庫(kù)正常工作,保證用戶可以正常訪問(wèn)裝配MES系統(tǒng)。
本文的研究將裝配MES主數(shù)據(jù)庫(kù)部署在Red hat Linux 6.6(64位)操作系統(tǒng)平臺(tái)上,數(shù)據(jù)庫(kù)采用Oracle 11g R2(64位)企業(yè)版,生產(chǎn)數(shù)據(jù)存放在共享存儲(chǔ)EMC VNX5500上;裝配MES災(zāi)備數(shù)據(jù)庫(kù)部署在Red hat Linux 6.6(64位)操作系統(tǒng)平臺(tái)上,數(shù)據(jù)庫(kù)采用Oracle 11g R2(64位)企業(yè)版,災(zāi)備數(shù)據(jù)存放在共享存儲(chǔ)EMC CX240上,容災(zāi)拓?fù)鋱D如圖4所示。
圖4 裝配MES系統(tǒng)容災(zāi)拓?fù)涫疽鈭D
(1)重做傳輸功能測(cè)試
本試驗(yàn)利用聯(lián)機(jī)重做日志和備重做日志自動(dòng)切換和自動(dòng)歸檔的特性,查詢當(dāng)前聯(lián)機(jī)重做日志文件序列號(hào)和當(dāng)前備重做日志文件的序列號(hào),如圖5、圖6所示,序列號(hào)相同且均為155780,對(duì)主數(shù)據(jù)庫(kù)進(jìn)行增、刪、改、更新產(chǎn)生的操作日志同步到了災(zāi)備數(shù)據(jù)庫(kù)端。
圖5 當(dāng)前聯(lián)機(jī)重做日志文件序列號(hào)
圖6 當(dāng)前備重做日志文件序列號(hào)
(2)歸檔日志自動(dòng)回收功能測(cè)試
本試驗(yàn)建立主備數(shù)據(jù)庫(kù)的快速恢復(fù)區(qū),快速恢復(fù)區(qū)大小均設(shè)置為300GB,將歸檔日志存放在快速恢復(fù)區(qū)內(nèi),查詢主備庫(kù)快速恢復(fù)區(qū)歸檔日志的空間使用率和可回收率,如圖7所示,主數(shù)據(jù)庫(kù)快速恢復(fù)區(qū)歸檔日志占用的空間為99.17%,這99.17%的歸檔日志均可被自動(dòng)覆蓋進(jìn)行空間釋放,如圖8所示,災(zāi)備數(shù)據(jù)庫(kù)快速恢復(fù)區(qū)歸檔日志占用的空間為99.17%,其中97.3%的歸檔日志可被自動(dòng)覆蓋進(jìn)行空間釋放,主備庫(kù)歸檔日志均可實(shí)現(xiàn)自動(dòng)回收。
圖7 主數(shù)據(jù)庫(kù)快速恢復(fù)區(qū)
圖8 災(zāi)備數(shù)據(jù)庫(kù)快速恢復(fù)區(qū)狀態(tài)
(3)重做應(yīng)用功能測(cè)試
本試驗(yàn)在裝配MES主數(shù)據(jù)中建立測(cè)試表,對(duì)表中數(shù)據(jù)進(jìn)行添加、修改、刪除、更新等操作,然后分別提交這些操作,經(jīng)查詢?yōu)膫鋽?shù)據(jù)庫(kù)中存在相同的測(cè)試表,如圖9所示,且表中字段、數(shù)據(jù)與主數(shù)據(jù)庫(kù)中相同,從主數(shù)據(jù)庫(kù)傳輸至災(zāi)備數(shù)據(jù)庫(kù)的重做條目成功應(yīng)用至災(zāi)備數(shù)據(jù)庫(kù)中。
圖9 主備數(shù)據(jù)庫(kù)中的測(cè)試表
(4)主備庫(kù)切換測(cè)試
本試驗(yàn)?zāi)M裝配MES主數(shù)據(jù)庫(kù)發(fā)生故障,如圖10、11所示,系統(tǒng)不能正常訪問(wèn);將災(zāi)備數(shù)據(jù)庫(kù)切換成Primary角色,切換后裝配MES系統(tǒng)能夠正常訪問(wèn),故障切換功能正常。
圖10 出現(xiàn)故障時(shí)系統(tǒng)
災(zāi)備數(shù)據(jù)庫(kù)切換:
SQL>ALTER DATABASE COMMIT TO SWITCHO?VER TO PRIMARY WITH SESSION SHUTDOWN
通過(guò)本文的研究和應(yīng)用,當(dāng)主數(shù)據(jù)庫(kù)發(fā)生故障時(shí),災(zāi)備數(shù)據(jù)庫(kù)能夠快速接替主數(shù)據(jù)庫(kù)進(jìn)行工作;故障發(fā)生時(shí),裝配MES系統(tǒng)數(shù)據(jù)的完整性指標(biāo)RPO(即業(yè)務(wù)數(shù)據(jù)的丟失量)由8小時(shí)降低為1小時(shí),數(shù)據(jù)庫(kù)故障恢復(fù)時(shí)間RTO由3小時(shí)降低為0.5小時(shí)。
圖11 故障切換后系統(tǒng)
本文研究和應(yīng)用的容災(zāi)技術(shù)處于國(guó)際領(lǐng)先水平,該企業(yè)的同城異地容災(zāi)機(jī)房已經(jīng)投入使用,后續(xù)可利用本項(xiàng)目研究的數(shù)據(jù)庫(kù)高可用技術(shù),針對(duì)該企業(yè)的關(guān)鍵業(yè)務(wù)系統(tǒng)如 ERP、CAPP、PDM、TDM、門戶、RAC 集群,在異地容災(zāi)機(jī)房建立災(zāi)備數(shù)據(jù)庫(kù),提高關(guān)鍵業(yè)務(wù)系統(tǒng)的容災(zāi)能力。
[1]王樹鵬,云曉春,余翔湛.容災(zāi)的理論與關(guān)鍵技術(shù)分析[J].計(jì)算機(jī)工程與應(yīng)用,2004(28):54-58.
[2]宋錫寧.面向海量數(shù)據(jù)災(zāi)難恢復(fù)的數(shù)據(jù)摘要技術(shù)的研究與實(shí)現(xiàn)[D].國(guó)防科學(xué)技術(shù)大學(xué),2014.
[3]Oracle.Data Guard Concepts and Administration 11g Release 2(11.2)[EB/OL].(2014).http://www.oracle.com/goto/maa.
[4]Wayne R.High Availability Becoming Highly Necessary[J].AS/400 Systems Management,1997,25(11):24.
[5]Ahluwalia K S,Jain A.High Availability Design Pattern[C].Proceedings of the 2006 Conference on Pattern Language of Programs,2006.
[6]翟永.國(guó)家基礎(chǔ)地理信息中心LAN FREE的SAN備份解決方案[J].計(jì)算機(jī)應(yīng)用研究,2001,18(5):87-89.
[7]韓德志,耿紅琴,李懷陽(yáng).高可用存儲(chǔ)性能網(wǎng)絡(luò)技術(shù)探析[J].計(jì)算機(jī)應(yīng)用研究,2004 21(8):22-26.
[8]Noh Sichoon,Kim Jeomgoo.A High Availability Clustering and Local Balancing Mechanism for Information Security Infrastructure System[C].Proceedings of the 2009 International Conference on Hybrid Information Technology,2009.
[9]Gaja Krishna Vaidyanatha.Implementing RAID on Oracle[EB/OL].http://www.quest.com/whitepapers/Raid1.pdf,2002/2003-05.
[10]黃國(guó)平.增強(qiáng)型多維產(chǎn)品 Oracle 7[J].航空兵器,1996(02).