王小剛 汪賀
摘要:本論文針對電信行業中每月產生的海量數據,設計和實現了自動化歸檔平臺,通過此平臺可靈活的配置每張表的歸檔與清理策略,實現了海量數據的自動化歸檔與清理。該系統基于linux系統與oracle數據庫,使用JAVA開發,采用B/S架構,通過任務調度的方式,實現歸檔與清理的自動化,批量化。
關鍵詞:Oracle;數據歸檔;歸檔平臺;數據遷移
中圖分類號:TP311.52 文獻標識碼:A 文章編號:1007-9416(2018)07-0069-02
1 歸檔平臺應用背景
(1)目前系統中生產庫需要歸檔的表大致可以分為以下幾類:1)以時間與編號命名的表,表名格式為tablename_yyyyMM_n。2)分區以時間命名的表,這類表都為分區表,分區名格式為PART_yyyyMM。3)以某個字段進行歸檔的表,包含一個歸檔的依據字段。
(2)在使用歸檔平臺之前所使用的歸檔方式。在使用歸檔平臺之前都是通過腳本的方式進行歸檔,通過create archiveTable as select * from sourceTable@dblink where a>b的方式從生產數據庫歸檔到備份數據庫。這種方式有腳本維護復雜,丟失表原有的結構等弊端。
2 歸檔平臺的系統實現
2.1 整體設計架構
系統主要由三部分組成,生產庫,歸檔平臺,備份庫,如圖1所示。
2.2 歸檔任務流程(圖2)
(1)用戶在登錄歸檔平臺后選擇生產庫表,根據生產庫表分類創建歸檔策略。(2)保存歸檔策略到應用數據庫。(3)任務調度系統在特定時間觸發調度任務。(4)調度任務根據用戶設置的歸檔策略與參數生成歸檔腳本。(5)歸檔平臺復制腳本到備份庫所在主機。(6)歸檔平臺執行通過nohup的方式遠程啟動歸檔腳本。(7)腳本執行impdp命令,執行歸檔。(8)腳本在執行成功以后通過調用歸檔平臺的soap接口,通知歸檔平臺任務已完成。(9)歸檔平臺通過sftp取回腳本執行日志。(10)歸檔平臺保存執行結果。(11)歸檔平臺在任務結果返回后保存清理源庫的sql語句到數據庫。(12)生產庫主機上的cron定時任務到應用數據庫獲取清理sql語句。(13)生成清理腳本。(14)用戶登錄生產庫主機審核清理腳本。(15)生產庫主機執行清理腳本。
3 歸檔平臺的關鍵技術
3.1 不同類型表的歸檔策略
針對上文中提到的三種不同類型的表,歸檔平臺制定了三種不同的歸檔方案:
(1)針對以時間與編號命名的表,通過正則的方式匹配生產庫中的表名,然后根據生產庫需要保留的月份與執行的月份生成實際要歸檔的表名。(2)針對分區以時間命名的表,通過正則的方式匹配生產庫中表的分區名稱,計算出實際歸檔的分區名,然后將分區數據導出為單表。(3)針對以某個字段進行歸檔的表,通過字段生成查詢條件,在執行歸檔命令時使用此查詢條件。
3.2 任務調度
我們選用了開源框架quartz進行任務的調度。同時設計了特定的任務線程隊列,該線程隊列能夠控制生產庫與備份庫上同時執行的任務的數量。
3.3 腳本的生成與執行
根據不同的歸檔策略后臺會生成相應的歸檔腳本與源庫清理腳本,歸檔腳本執行成功后再執行清理腳本。
4 歸檔平臺的實際應用
目前歸檔平臺已在山西移動公司實際部署使用,目前已接入20個生產庫與10個備份庫,每月歸檔表5000張以上,數據量10TB左右。備份任務在10個小時之內可全部完成,相比之前的歸檔方式歸檔效率提高一倍以上。
參考文獻
[1]林樹澤,盧芬,柳冬青.Oracle DBA 高可用、備份恢復與性能優化[M].清華大學出版社,2015.
[2]張婷婷.Oracle數據庫備份恢復策略的研究與實現[J].計算機應用技術,2017,(3):49-51.
[3]何平.海量數據庫系統高性能備份的研究與實現[D].國防科學技術大學,2005.