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

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

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

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

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