裴紅云,陳 俊,謝 慶,李 發(fā),李罡風(fēng)
(安徽省地震局,安徽 合肥 230031)
“十五”數(shù)字化改造后,地震前兆臺(tái)網(wǎng)建立了基于Oracle數(shù)據(jù)庫的技術(shù)平臺(tái),實(shí)現(xiàn)全國地震前兆觀測數(shù)據(jù)的統(tǒng)一管理。通過各級數(shù)據(jù)庫層層交換前兆觀測數(shù)據(jù)的模式(周克昌,2010),為數(shù)據(jù)的處理、匯集、上報(bào)及服務(wù)提供平臺(tái)。首先由各節(jié)點(diǎn)臺(tái)站通過數(shù)據(jù)采集功能將前兆觀測數(shù)據(jù)采集至臺(tái)站數(shù)據(jù)庫,再上報(bào)至區(qū)域前兆臺(tái)網(wǎng)中心,然后由區(qū)域前兆臺(tái)網(wǎng)中心匯總至國家局?jǐn)?shù)據(jù)庫。功能強(qiáng)大的Oracle數(shù)據(jù)庫為前兆技術(shù)系統(tǒng)提供了便捷的平臺(tái),為保障前兆臺(tái)網(wǎng)技術(shù)系統(tǒng)的正常運(yùn)行,數(shù)據(jù)庫的管理與運(yùn)維也受到越來越多的關(guān)注(林樹澤,2010;陳俊,2016)。
各級數(shù)據(jù)庫的高效運(yùn)轉(zhuǎn)是前兆觀測數(shù)據(jù)及時(shí)匯集、提供數(shù)據(jù)服務(wù)的基本保障,區(qū)域中心數(shù)據(jù)庫備份維護(hù)已趨于常態(tài)化(袁燕妮,2011;徐吉,2005;張?jiān)品?009;哈斯高娃,2010;陳傳華,2010;蔣春曦,1999),臺(tái)站節(jié)點(diǎn)因?yàn)榧茉O(shè)在各個(gè)臺(tái)站,無論是硬件條件還是技術(shù)管理上,較之區(qū)域臺(tái)網(wǎng)中心都存在不足(裴紅云,2015)。臺(tái)站節(jié)點(diǎn)數(shù)據(jù)庫大多未采取任何形式的備份,一旦故障就無法進(jìn)行數(shù)據(jù)庫數(shù)據(jù)恢復(fù),近年來因服務(wù)器硬件故障及數(shù)據(jù)庫系統(tǒng)故障等原因,多次重建臺(tái)站節(jié)點(diǎn)數(shù)據(jù)庫,造成臺(tái)站數(shù)據(jù)庫數(shù)據(jù)信息的大量缺失,給臺(tái)站數(shù)據(jù)處理及使用帶來損失。因此建立臺(tái)站數(shù)據(jù)庫的備份體系,利用備份集重建數(shù)據(jù)庫后進(jìn)行數(shù)據(jù)恢復(fù),對保證臺(tái)站數(shù)據(jù)庫的信息完整,以及快速恢復(fù)基于數(shù)據(jù)庫的各類應(yīng)用軟件的正常使用的重要性不言而喻。
安徽區(qū)域共架設(shè)9個(gè)臺(tái)站節(jié)點(diǎn)地震前兆數(shù)據(jù)庫,主要用于前兆觀測數(shù)據(jù)的采集、處理和報(bào)送,具體流程如圖1所示。地震臺(tái)站是觀測數(shù)據(jù)產(chǎn)出的源頭,臺(tái)站人員也是借助臺(tái)站數(shù)據(jù)庫,利用各種前兆專業(yè)軟件進(jìn)行數(shù)據(jù)的采集、預(yù)處理和相應(yīng)的前兆數(shù)據(jù)產(chǎn)品的產(chǎn)出;因此,節(jié)點(diǎn)臺(tái)站數(shù)據(jù)庫的正常運(yùn)轉(zhuǎn),對數(shù)據(jù)連續(xù)完整以及前兆數(shù)據(jù)的及時(shí)產(chǎn)出和傳輸至關(guān)重要。目前,臺(tái)站數(shù)據(jù)庫的軟硬件全部放置在臺(tái)站,軟硬件技術(shù)管理主要由區(qū)域中心工作人員承擔(dān);因臺(tái)站軟硬件條件及技術(shù)人員的匱乏,數(shù)據(jù)庫尚未進(jìn)行備份管理,臺(tái)站服務(wù)器一旦發(fā)生系統(tǒng)及數(shù)據(jù)庫級別的故障時(shí),重建臺(tái)站數(shù)據(jù)庫就會(huì)造成臺(tái)站數(shù)據(jù)庫中數(shù)據(jù)的丟失,必然給臺(tái)站的數(shù)據(jù)處理和產(chǎn)品產(chǎn)出造成損失。因此,建立臺(tái)站節(jié)點(diǎn)數(shù)據(jù)庫的備份,以便故障時(shí)進(jìn)行數(shù)據(jù)恢復(fù),也有助于各類前兆軟件與新建數(shù)據(jù)庫的順利銜接,快速恢復(fù)臺(tái)站的數(shù)據(jù)。
首先,在硬件方面,鑒于臺(tái)站僅有一臺(tái)前兆服務(wù)器,從資源節(jié)約的角度考慮,可以從區(qū)域中心抽調(diào)一臺(tái)服務(wù)器用于所有臺(tái)站的備份集存儲(chǔ);其次,從技術(shù)層面,臺(tái)站或區(qū)域中心人員定期手動(dòng)備份的安全隱患較大,重復(fù)多次的手動(dòng)操作費(fèi)時(shí)費(fèi)力且增加了出錯(cuò)誤概率,因此,備份設(shè)計(jì)中盡量實(shí)現(xiàn)自動(dòng)化操作與管理。這里制定的節(jié)點(diǎn)臺(tái)站數(shù)據(jù)庫備份方案滿足以下條件:(1)備份過程自動(dòng)化,定期在臺(tái)站數(shù)據(jù)庫本機(jī)自動(dòng)產(chǎn)出備份集;(2)備份集異機(jī)存儲(chǔ),自動(dòng)化傳輸備份集;(3)自動(dòng)化管理備份集,定期刪除過期備份。整個(gè)備份的步驟也是圍繞這幾個(gè)方面展開的。
臺(tái)站數(shù)據(jù)庫備份按照以下步驟來完成:(1)備份集產(chǎn)出,定期在各臺(tái)站服務(wù)器自動(dòng)產(chǎn)出備份集(如一周兩次一般即可以滿足臺(tái)站數(shù)據(jù)庫數(shù)據(jù)備份的需要);(2)備份集自動(dòng)異機(jī)存儲(chǔ),備份集產(chǎn)出后,自動(dòng)將備份集傳輸至區(qū)域中心備份專用服務(wù)器上存儲(chǔ),異機(jī)存儲(chǔ)較好地保障備份集的安全性;(3)備份集自動(dòng)化管理,自動(dòng)查看備份集時(shí)間,刪除過期的備份集,釋放空間。備份流程如圖2所示。

圖1 地震臺(tái)站前兆技術(shù)系統(tǒng)示意圖
按照上述數(shù)據(jù)庫備份方案的思路,需要在臺(tái)站和備份集存儲(chǔ)服務(wù)器上進(jìn)行備份的相關(guān)部署。首先,在臺(tái)站數(shù)據(jù)庫服務(wù)器上,實(shí)現(xiàn)數(shù)據(jù)庫自動(dòng)備份和備份集自動(dòng)傳輸兩個(gè)功能。這里,分別編輯了數(shù)據(jù)庫備份腳本oraclebackup.sh和備份集傳輸腳本auto.sh,通過修改腳本文件中對應(yīng)的參數(shù),并將這兩個(gè)腳本文件上傳至各個(gè)臺(tái)站服務(wù)器,用于完成數(shù)據(jù)庫的備份和備份集傳輸功能。其次,通過crontab設(shè)置腳本文件自動(dòng)執(zhí)行時(shí)間,可實(shí)現(xiàn)腳本文件的自動(dòng)執(zhí)行,進(jìn)而完成數(shù)據(jù)庫的備份和備份集傳輸?shù)淖詣?dòng)化。另一方面,在區(qū)域中心的備份集存儲(chǔ)服務(wù)器上,僅需完成各個(gè)臺(tái)站節(jié)點(diǎn)數(shù)據(jù)庫備份集的管理。這里,也編寫了備份集管理腳本mv.sh和rm.sh,分別完成備份集文件名修改及刪除過期備份集的功能;以時(shí)間日期修改備份集文件名便于同時(shí)存儲(chǔ)多個(gè)時(shí)間點(diǎn)的備份集,刪除過期備份可以釋放存儲(chǔ)空間,提高硬件利用率。這里同樣通過crontab設(shè)置腳本自動(dòng)執(zhí)行。
完成臺(tái)站數(shù)據(jù)庫服務(wù)器及區(qū)域中心存儲(chǔ)服務(wù)器的備份管理部署后,實(shí)際執(zhí)行過程中可能會(huì)出現(xiàn)一些問題,這里也逐一對這些問題進(jìn)行解析。
腳本文件上傳后,首先需要對腳本文件進(jìn)行權(quán)限賦值,一般執(zhí)行chmod 777-R filename即可,如下所示:

執(zhí)行腳本文件時(shí),實(shí)驗(yàn)中曾出現(xiàn)“no such file …”以及“^M”等錯(cuò)誤提示,經(jīng)查原因?yàn)槟_本在Windows下編輯,上傳到Linux系統(tǒng)存在版本錯(cuò)誤。可以通過直接在Linux下重新編輯腳本,或者修改腳本格式來解決,方法如下:vim filename檢查腳本文件格式,如果顯示fileformat=dos,直接修改格式為unix(語句為“:set ff=unix”),然后退出文件即可。
以安徽區(qū)域前兆臺(tái)站為例,需要對9個(gè)節(jié)點(diǎn)臺(tái)站進(jìn)行數(shù)據(jù)庫備份,并且將9個(gè)臺(tái)站數(shù)據(jù)庫的備份集傳輸至同一臺(tái)服務(wù)器。從降低對數(shù)據(jù)庫使用影響,采取夜間數(shù)據(jù)庫冷備份模式進(jìn)行備份;從節(jié)約存儲(chǔ)空間的角度考慮,各臺(tái)站備份保存為壓縮格式文件;從管理方便考慮,9個(gè)節(jié)點(diǎn)臺(tái)站數(shù)據(jù)庫同時(shí)備份稍后傳輸,預(yù)估備份完成時(shí)間,適當(dāng)延后備份集傳輸時(shí)間;此外,設(shè)置傳輸備份集時(shí)間時(shí)應(yīng)考慮網(wǎng)絡(luò)傳輸速度,可采取各臺(tái)站依次傳輸模式。
crontab命令是Linux操作系統(tǒng)中用于設(shè)置周期性被執(zhí)行的指令。該命令從標(biāo)準(zhǔn)輸入設(shè)備讀取指令,并將其存放于“crontab”文件中,以供讀取和執(zhí)行。crontab的使用形式多樣,這里僅需要利用crontab -l和crontab -e來查看、編輯當(dāng)前用戶下的crontab指令即可。查看crontab指令如下:

鍵入crontab-e ,進(jìn)入crontab指令編輯,insert按鍵進(jìn)入編輯,esc按鍵退出編譯,“:wq”保存修改并退出。

crontab基本語法:f1 f2 f3 f4 f5 program
其中 f1 是表示分鐘,f2 表示小時(shí),f3 表示一個(gè)月份中的第幾日,f4 表示月份,f5 表示一個(gè)星期中的第幾天,而program 表示要執(zhí)行的指令。例如,00 1 * * 0,3 /…/rm.sh表示每周日、周三1∶00執(zhí)行rm.sh腳本,其中“*”默認(rèn)為全選。
地震臺(tái)站前兆數(shù)據(jù)庫備份管理方案充分考慮前兆臺(tái)站軟硬件和技術(shù)人員的實(shí)際現(xiàn)狀、以及前兆數(shù)據(jù)庫數(shù)據(jù)完整性、運(yùn)行穩(wěn)定性等要求;以自動(dòng)化管理為特色,利用數(shù)據(jù)庫使用空閑時(shí)段選擇全庫備份模式進(jìn)行數(shù)據(jù)庫冷備份;采取區(qū)域中心集中存儲(chǔ)、管理備份集的模式,實(shí)現(xiàn)資源的有效利用和統(tǒng)一管理;并通過設(shè)定功能腳本定期自動(dòng)執(zhí)行的方式,來完成整個(gè)備份和備份管理過程的自動(dòng)化。按照上述方案對安徽區(qū)域節(jié)點(diǎn)臺(tái)站前兆數(shù)據(jù)庫進(jìn)行備份管理,并設(shè)定每周備份兩次,定期刪除過期備份集,整個(gè)備份及管理運(yùn)行情況良好。部分臺(tái)站因系統(tǒng)損壞,重建數(shù)據(jù)庫后,使用自動(dòng)備份的備份集進(jìn)行數(shù)據(jù)恢復(fù),方便快捷;各類前兆處理分析軟件,訪問數(shù)據(jù)庫時(shí),無需重新配置參數(shù),各項(xiàng)工作可快速恢復(fù)正常。實(shí)踐證明,建立地震臺(tái)站前兆數(shù)據(jù)庫備份管理體系,改變了臺(tái)站數(shù)據(jù)庫無備份的現(xiàn)狀,簡化了數(shù)據(jù)庫備份流程,縮短了前兆臺(tái)站數(shù)據(jù)庫系統(tǒng)的故障恢復(fù)時(shí)間,并盡可能保證了數(shù)據(jù)完整性,為前兆技術(shù)系統(tǒng)的高效運(yùn)轉(zhuǎn)和數(shù)據(jù)的及時(shí)產(chǎn)出與傳輸提供了更好的安全保障。