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