李建榮,郝金庫,張芝艷
(1.天津開發(fā)區(qū)職業(yè)技術(shù)學(xué)院 電子信息學(xué)院,天津 300457;2.天津師范大學(xué) 化學(xué)學(xué)院,天津 300387)
基于異構(gòu)數(shù)據(jù)庫的雙機(jī)熱備策略的設(shè)計(jì)與實(shí)現(xiàn)
李建榮1,郝金庫2,張芝艷1
(1.天津開發(fā)區(qū)職業(yè)技術(shù)學(xué)院 電子信息學(xué)院,天津 300457;2.天津師范大學(xué) 化學(xué)學(xué)院,天津 300387)
提出一種基于異構(gòu)數(shù)據(jù)庫的雙機(jī)熱備軟件解決方案,突破傳統(tǒng)雙機(jī)熱備效率和可靠性低的瓶頸,把數(shù)據(jù)存放在2臺(tái)異構(gòu)數(shù)據(jù)庫的服務(wù)器上,既保證了高效一致的存取數(shù)據(jù),更全面地保護(hù)了數(shù)據(jù)的安全可靠.
異構(gòu)數(shù)據(jù)庫;雙機(jī)熱備;分布式事務(wù)
隨著濱海新區(qū)作為中國北方經(jīng)濟(jì)增長第三極地位的確定,其在國內(nèi)外的知名度不斷提升,這些都在不斷推動(dòng)著本地旅游業(yè)的快速發(fā)展,濱海數(shù)字化旅游信息平臺(tái)的建設(shè)對(duì)于優(yōu)化天津?yàn)I海新區(qū)的旅游經(jīng)濟(jì)運(yùn)作、吸引投資、提升區(qū)域競爭優(yōu)勢(shì)、激發(fā)濱海新區(qū)旅游產(chǎn)業(yè)的跨越式發(fā)展起著關(guān)鍵性作用.與此同時(shí),旅游區(qū)政府、企業(yè)和旅游景點(diǎn)的發(fā)展對(duì)數(shù)據(jù)的依賴日益加深,確保數(shù)據(jù)安全、高效地存儲(chǔ)成為當(dāng)前信息存儲(chǔ)的難點(diǎn)課題之一,而基于異構(gòu)數(shù)據(jù)庫的雙機(jī)熱備策略是一種保證數(shù)據(jù)庫更安全、更可靠的解決方案[1].
傳統(tǒng)的雙機(jī)熱備是基于active/standby方式的服務(wù)器熱備.采用此方式的服務(wù)器數(shù)據(jù)和數(shù)據(jù)庫數(shù)據(jù)同時(shí)向2臺(tái)或多臺(tái)服務(wù)器寫入,或使用1個(gè)共享的存儲(chǔ)設(shè)備,在同一時(shí)間內(nèi)只有一臺(tái)服務(wù)器運(yùn)行.當(dāng)其中運(yùn)行著的一臺(tái)服務(wù)器出現(xiàn)故障無法啟動(dòng)時(shí),另一臺(tái)備份服務(wù)器會(huì)通過軟件診測(cè)(如心跳診斷)將standby機(jī)器激活,保證應(yīng)用在短時(shí)間內(nèi)完全恢復(fù)正常使用[2].由于2臺(tái)服務(wù)器是主備關(guān)系,因此傳統(tǒng)雙機(jī)熱備所有寫入和讀取的操作都只能在一臺(tái)服務(wù)器完成,在數(shù)據(jù)量非常大的情況下,數(shù)據(jù)存取效率達(dá)到邊界值后就難以再提高.同時(shí),一旦主服務(wù)器出現(xiàn)問題,由主庫到備庫的角色切換需要人工操作完成,且當(dāng)主數(shù)據(jù)庫的故障排除后,必須通過人工干預(yù)才能將備庫上產(chǎn)生的新數(shù)據(jù)導(dǎo)入主庫,造成啟用備庫時(shí)無法確保數(shù)據(jù)的無縫銜接[3].
而從安全性能角度考慮,由于傳統(tǒng)雙機(jī)熱備中2臺(tái)服務(wù)器的軟硬件配置和數(shù)據(jù)庫均相同,當(dāng)一臺(tái)服務(wù)器被惡意攻擊時(shí),另一臺(tái)服務(wù)器也很難幸免,即采用相同的攻擊手段就可以同時(shí)攻擊2臺(tái)服務(wù)器.而在基于異構(gòu)數(shù)據(jù)庫的雙機(jī)熱備策略中,2臺(tái)服務(wù)器的數(shù)據(jù)庫不同,一臺(tái)數(shù)據(jù)庫是Oracle 10g,另一臺(tái)數(shù)據(jù)庫是MySQL,因此,當(dāng)一臺(tái)數(shù)據(jù)庫服務(wù)器遭受攻擊時(shí),另一臺(tái)數(shù)據(jù)庫會(huì)因異構(gòu)而幸免,這樣就可以全面保證數(shù)據(jù)的安全.
異構(gòu)數(shù)據(jù)庫是相關(guān)的多個(gè)數(shù)據(jù)庫系統(tǒng)的集合,可以實(shí)現(xiàn)數(shù)據(jù)的共享和透明訪問,每個(gè)數(shù)據(jù)庫系統(tǒng)在加入異構(gòu)數(shù)據(jù)庫系統(tǒng)前就已經(jīng)存在,擁有其自身的數(shù)據(jù)庫管理系統(tǒng)(Database Management System,DBMS).異構(gòu)數(shù)據(jù)庫的各個(gè)組成部分具有自身的自治性,在實(shí)現(xiàn)數(shù)據(jù)共享的同時(shí),每個(gè)數(shù)據(jù)庫系統(tǒng)仍保持自身的應(yīng)用特性、完整性控制和安全性控制[4].基于Oracle和MySQL異構(gòu)數(shù)據(jù)庫的雙機(jī)熱備的策略可以更穩(wěn)妥地保證濱海數(shù)字化旅游信息平臺(tái)的安全性能.
本方案采用3層分布式數(shù)據(jù)架構(gòu),客戶端通過指定的IP和端口訪問“中間業(yè)務(wù)層”服務(wù)器,發(fā)送業(yè)務(wù)請(qǐng)求,并根據(jù)客戶端請(qǐng)求,由“中間業(yè)務(wù)層服務(wù)器”向分布在網(wǎng)絡(luò)中的2個(gè)“數(shù)據(jù)庫服務(wù)器”發(fā)出數(shù)據(jù)請(qǐng)求;取回相關(guān)數(shù)據(jù)后,再由“中間業(yè)務(wù)層服務(wù)器”發(fā)送回客戶端,客戶端無需直接訪問“數(shù)據(jù)庫服務(wù)器”,起到數(shù)據(jù)隔離的效果,保障了數(shù)據(jù)的安全性[5].系統(tǒng)架構(gòu)如圖1所示.
圖1 系統(tǒng)框架圖Fig.1 System framework
應(yīng)用服務(wù)器同時(shí)監(jiān)視2個(gè)異構(gòu)數(shù)據(jù)庫服務(wù)器,2臺(tái)數(shù)據(jù)庫服務(wù)器同時(shí)工作,數(shù)據(jù)分別存放在2臺(tái)數(shù)據(jù)庫服務(wù)器上,且要保證2臺(tái)數(shù)據(jù)庫服務(wù)器上數(shù)據(jù)一致.因此,在向2臺(tái)服務(wù)器數(shù)據(jù)庫上寫入數(shù)據(jù)時(shí),保證數(shù)據(jù)的一致就成為整個(gè)系統(tǒng)中的關(guān)鍵問題.為了解決這一問題,本策略引入了分布式事務(wù)的方法,將更新2臺(tái)服務(wù)器數(shù)據(jù)庫的命令加入到同一個(gè)分布式事務(wù)中,便可以保證數(shù)據(jù)的一致[6].圖2是事務(wù)處理部分的流程圖.
圖2 事務(wù)處理流程圖Fig.2 Transaction flow diagram
由圖2可知,當(dāng)客戶端發(fā)出更新操作請(qǐng)求后,應(yīng)用服務(wù)器首先分別向2個(gè)異構(gòu)數(shù)據(jù)庫建立連接,并分別創(chuàng)建命令;然后將2個(gè)命令加入到同一個(gè)分布式事務(wù)當(dāng)中,分別執(zhí)行,并提交事務(wù).如果命令順利執(zhí)行,且事務(wù)提交沒有出現(xiàn)問題,則說明2個(gè)服務(wù)器上的數(shù)據(jù)庫出現(xiàn)了完全相同的更新操作,即保證了數(shù)據(jù)的一致.
如果一臺(tái)數(shù)據(jù)庫服務(wù)器宕機(jī)或出現(xiàn)故障,則程序會(huì)自動(dòng)剔除壞掉的數(shù)據(jù)庫服務(wù)器,客戶端不會(huì)感覺到任何變化[7].而在故障服務(wù)器恢復(fù)功能時(shí),如何將沒有更新的數(shù)據(jù)在活動(dòng)的數(shù)據(jù)庫服務(wù)器進(jìn)行同步操作是現(xiàn)有雙機(jī)熱備的難點(diǎn)之一.本研究的雙機(jī)熱備策略在推進(jìn)故障數(shù)據(jù)庫服務(wù)器時(shí),采用3次復(fù)制數(shù)據(jù)功能.需要復(fù)制的數(shù)據(jù)為已經(jīng)正確寫入活動(dòng)數(shù)據(jù)庫服務(wù)器的數(shù)據(jù),根據(jù)故障數(shù)據(jù)庫服務(wù)器的日志列表,按照時(shí)間戳分3次進(jìn)行復(fù)制數(shù)據(jù).如現(xiàn)有200條記錄需要復(fù)制,首先,進(jìn)行第一次追趕,當(dāng)追趕到200條時(shí),活動(dòng)數(shù)據(jù)庫可能已經(jīng)達(dá)到250條,因此繼續(xù)第2次復(fù)制,即復(fù)制第200~250條記錄,而此時(shí)活動(dòng)數(shù)據(jù)庫可能為260條記錄,數(shù)據(jù)已經(jīng)非常接近,因此,在進(jìn)行第3次復(fù)制數(shù)據(jù)時(shí),對(duì)2個(gè)數(shù)據(jù)庫服務(wù)器進(jìn)行瞬間的握手操作,使活動(dòng)數(shù)據(jù)庫寫記錄的命令瞬間停頓,實(shí)現(xiàn)數(shù)據(jù)完全同步推入故障數(shù)據(jù)庫服務(wù)器,然后同時(shí)啟動(dòng)活動(dòng)數(shù)據(jù)庫寫操作的命令,即可完成2個(gè)數(shù)據(jù)庫服務(wù)器的數(shù)據(jù)同步.這一過程完全由程序完成,客戶端不會(huì)有任何感覺.
分布式環(huán)境本身的復(fù)雜性和2個(gè)數(shù)據(jù)庫的高度自治性造成任何數(shù)據(jù)庫服務(wù)器出現(xiàn)故障或不規(guī)范數(shù)據(jù)操作都有可能導(dǎo)致全局?jǐn)?shù)據(jù)的不一致,出現(xiàn)形式上的網(wǎng)絡(luò)分割[8].當(dāng)數(shù)據(jù)出現(xiàn)不一致時(shí),在其恢復(fù)到一致狀態(tài)前,任何需要與服務(wù)器進(jìn)行交互的數(shù)據(jù)操作均不能進(jìn)行.因此,發(fā)生故障后,迅速地恢復(fù)本地?cái)?shù)據(jù),并檢測(cè)恢復(fù)全局?jǐn)?shù)據(jù)對(duì)于分布式異構(gòu)數(shù)據(jù)庫系統(tǒng)具有至關(guān)重要的意義.
基于異構(gòu)數(shù)據(jù)庫的雙機(jī)熱備策略可以自動(dòng)判斷數(shù)據(jù)庫是否出現(xiàn)故障,如果檢測(cè)到某個(gè)數(shù)據(jù)庫出現(xiàn)故障,則該數(shù)據(jù)庫會(huì)自動(dòng)退出,待數(shù)據(jù)庫修復(fù)后,程序會(huì)在恰當(dāng)?shù)臅r(shí)機(jī)自動(dòng)推入,以確保數(shù)據(jù)的同步.基于異構(gòu)數(shù)據(jù)庫的雙機(jī)熱備策略的關(guān)鍵代碼如下:
本研究提出的基于異構(gòu)數(shù)據(jù)庫的雙機(jī)熱備策略是純軟件的解決方案,節(jié)約了硬件開支,成本很低.從性能角度考慮,雙機(jī)熱備的方式可以有效提高數(shù)據(jù)存取的效率,解決傳統(tǒng)雙機(jī)熱備邊界遞減的問題.同時(shí),三層架構(gòu)和異構(gòu)數(shù)據(jù)庫為提高數(shù)據(jù)可靠性奠定了基礎(chǔ).本系統(tǒng)于2010年5月運(yùn)行于濱海數(shù)字化旅游信息平臺(tái)的開發(fā)建設(shè)中,經(jīng)過實(shí)際的測(cè)試,被用戶認(rèn)可為一種低投入、高數(shù)據(jù)存取速度和高數(shù)據(jù)安全的解決方案.
[1] 孫蕾,徐洪澤.雙機(jī)熱備計(jì)算機(jī)聯(lián)鎖控制系統(tǒng)的安全性和可用性分析[J].中國安全科學(xué)學(xué)報(bào),2004,14(7):30-33.
[2] 劉劍鋒.武控系統(tǒng)雙機(jī)熱備份軟件面向?qū)ο笤O(shè)計(jì)[D].成都:電子科技大學(xué),2010:9-10.
[3] 蔣濤.一種面向客戶端的雙機(jī)熱備機(jī)制的研究與實(shí)現(xiàn)[D].北京:北京交通大學(xué),2011:6-9.
[4] 顧天竺,沈潔,陳曉紅,等.基于XML的異構(gòu)數(shù)據(jù)集成模式的研究[J].計(jì)算機(jī)應(yīng)用研究,2007(4):94-96.
[5] 耿建平,李納鎣,唐先紅.使用VC++實(shí)現(xiàn)三層架構(gòu)的分布式數(shù)據(jù)庫應(yīng)用框架[J].電腦編程技巧與維護(hù),2003(8):57-59.
[6] 楊志偉.分布式數(shù)據(jù)庫系統(tǒng)中的事務(wù)管理[J].內(nèi)蒙古科技與經(jīng)濟(jì),2008(4):84-85.
[7] 趙婷.基于Oracle Data Guard的雙機(jī)熱備策略的設(shè)計(jì)與實(shí)現(xiàn)[J].三峽大學(xué)學(xué)報(bào):自然科學(xué)版,2010(12):89-91.
[8] 孫川.基于分布式事務(wù)的數(shù)據(jù)庫雙機(jī)熱備份方案的設(shè)計(jì)[J].微計(jì)算機(jī)信息,2010,12(3):145-147.
Design and realization of dual hot-backup strategy based on heterogeneous database
LIJian-rong1,HAOJin-ku2,ZHANGZhi-yan1
(1.College of Electron Information,TEDA Polytechnic,Tianjin 300457,China;
2.College of Chemistry,Tianjin Normal University,Tianjin 300387,China)
A software solution based on heterogeneous database and dual hot-back technology is put forward.The solution breaks through the bottleneck of lower efficiency and reliability of traditional dual hot-backup system,and stores data on two heterogeneous database servers.Efficient and consistent data storage as well as safety and reliability of data are ensured.
heterogeneous database;dual hot-backup;distributed transactions
TP392
A
1671-1114(2012)03-0051-03
2011-02-10
天津市科委資助項(xiàng)目(2010-149)
李建榮(1975—),女,講師,主要從事數(shù)據(jù)庫開發(fā)和信息系統(tǒng)集成方面的研究.
(責(zé)任編校 亢原彬)