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