在UNIX系統中,為了使數據備份變得輕松、容易、安全,最好的辦法就是自動(dòng)安排系統例行工作(系統調度),在系統空閑時(shí)間里自動(dòng)執行任務(wù)。如定期刪除一些流水文件、日志文件,定期完成數據的本地備份和異地備份等。這樣既發(fā)揮了UNIX系統的卓越功能,又減輕了系統管理員的工作量,使數據備份做到及時(shí)安全。 一、建立數據備份用戶(hù) 首先建立一個(gè)用戶(hù),如:userbk,將該用戶(hù)的屬主、屬組設定為Informix,權限為755。在該用戶(hù)下存放備份的各種數據,以便統一備份到磁帶上或異地機器上。 二、用系統例行工作安排作業(yè) UNIX系統有一個(gè)始終運行的守護進(jìn)程,該進(jìn)程可以在正常調度的間隙運行作業(yè),用戶(hù)可以在一個(gè)文件中指定crontab命令運行任務(wù),cron守護程序在初始化或該文件修改后自動(dòng)讀取其內容。crontab文件中指定的各個(gè)域為: 分鐘 小時(shí) 月 日 星期幾 命令 如文件/usr/spool/cron/crontabs/root存放超級用戶(hù)調度的命令,內容為: 17 5 0 /etc/cleanup>/dev/null 0 2 0,4 /usr/lib/cron/logchecker 3 3 /usr/lib/cleantmp>/dev/null 1 3 /etc/setclk-rd1800>/dev/null 2>&1 #5 18 1-5/usr/lib/sa/sa2 -s 8:00 -e 18:01-i 1200-A 0 4 0 /etc/custom -V symlinks;#CUSTOM -SYMLINK -REPORT 0 0 1-5 scosh cronsched-r 0 01 scosh cronsched-wr 第一行的作用是在每周星期日5:17執行/etc/cleanup來(lái)清除系統上的某些日志文件。第二行的作用是每周星期日和星期四2:00執行/usr/lib/cron/logchecker來(lái)檢查守護進(jìn)程cron的日志文件。第三行為每天3:03運行/usr/lib/cheantmp命令清除指定目錄中的臨時(shí)文件等。 用戶(hù)可以用命令crontab -u root -e來(lái)編輯此文件,在文件最后加入一行內容: 0 3 kill-user 此行內容為每天3:00運行kill-user,此命令文件的任務(wù)是終止某些用戶(hù)的進(jìn)程。 同樣,用命令crontab-u userbk -e來(lái)編輯userbk文件,安排userbk用戶(hù)的作業(yè)任務(wù),內容如下: 10 3 bdbf 30 5 0 ftp -inv<ydbf>ydbf.log 0 2 1 rm .log 第一行內容為每天3:10運行bdbf程序,使數據備份至/usr/userbk目錄下, 并拷貝到磁帶上。第二行內容為每周星期日5:30運行ydbf程序,將備份至/usr/userbk目錄下的數據通過(guò)網(wǎng)絡(luò )傳送到異地機器上存貯,并將備份信息寫(xiě)入 ydbf.log日志文件中。第三行內容為每月1日2:00刪除/usr/userbk下的日志文件。 三、本地數據備份 筆者使用的操作平臺為SCO Openserver5.04系統,數據庫為Informix4.0和Informix-Online7.3兩種版本。在Informix4.0上使用的業(yè)務(wù)有“人身保險”(用戶(hù)名rsbx)、“子女備用金保險”(用戶(hù)名zbbx)等。數據以字符串形式保存在各自的目錄下,備份時(shí)可用tar命令或cpio命令將整個(gè)用戶(hù)目錄備份即可。而在Informix-Online7.3上應用的有“綜合處理系統”(用戶(hù)名c4g1,庫名picc2.dbs),“會(huì )計記帳系統”(用戶(hù)名為claf,庫名account.dbs)等,數據存放在Online指定的設備上,平時(shí)采用ontape -s命令備份,但由于此命令實(shí)現自動(dòng)備份較困難,并且不能和其它數據備份到一盤(pán)磁帶上,會(huì )造成備份介質(zhì)的浪費。所以最好采用 dbexport命令備份數據。運行dbexport命令的前提是調用數據庫的相關(guān)用戶(hù)必須 退出,一旦有一個(gè)應用點(diǎn)沒(méi)有退出,備份就會(huì )失敗。為了確保數據的安全備份,需編制一個(gè)終止進(jìn)程的命令文件,即前述中由超級用戶(hù)調度的kill-user程序。 程序1:/usr/bin/kill-user ps -u rsbx >tmp-a ps -u zbbx >>tmp-a ps -u c4gl >>tmp-a ps -u claf >>tmp-a cut -cl-6 tmp-a >tmp-b while read a do kill-9 $a echo “kill alread$a”|cat>>/tmp/kill-user.log done <tmp-b rm tmp-a tmp-b 程序前5行為列用戶(hù)進(jìn)程,并將所要終止的進(jìn)程存放至/tmp/K-user2文件中,后面的循環(huán)語(yǔ)句是殺死進(jìn)程,并將運行信息存放至/tmp/kill-user.log日志文件中,以備查閱。此程序放在“/”下或“/usr/bin”下。 程序2:/usr/user/bdbf 本地數據備份程序 INFORMIXDIR=/user/informix PATH=$PATH:$HOME/bin:.:$INFORMIXDIR /bin INFORMIXSERVER=cbps-shm ONCONFIG=onconfig.cbps export PATH MAIL INFORMIXDIR INFORMIXSERVER ONCONFIG rm -r .Z find /usr/rsbx |cpio-oacvB>RSBX;compress RSBX find /usr/zbbx |cpio-oacvB>ZBBX;compress ZBBX … rm-r.exp dbexport -c picc2 -ss find ./picc2.exp | cpio-oacvB>PICC2;compress PICC2 dbexport -c account -ss find ./account.exp | cpio-oacvB>ACCOUNT;compress ACCOUNT … sleep 10 tar c8v .Z date | cat>>userbk.log echo“PICC2 ACCOUNT RSBX ZBBX...backup over”|cat>>userbk.log 程序中所設置的環(huán)境變量同Informix用戶(hù)的環(huán)境變量設置一樣,所有需要備份的數據用歸檔命令cpio拷貝至/usr/userbk目錄下,用戶(hù)可根據自已的實(shí)際情況自行添加,然后用tar命令統一將所有文件拷貝至磁帶上,最后將備份信息寫(xiě)到日志文件userbk.log中,這樣系統管理員只需每天早晨上班后檢查一下是否備份好,然后更換一般磁帶即可。 四、異地數據備份 熟悉網(wǎng)絡(luò )的人都知道FTP的功能十分強大,它主要用于網(wǎng)絡(luò )之間的文件傳輸。一般情況下,用戶(hù)傳輸多個(gè)文件時(shí),需登錄服務(wù)器逐一傳輸,只有等待一個(gè)文件傳送完畢之后才能傳輸下一個(gè),這樣用戶(hù)需花很長(cháng)時(shí)間守候在終端前等待一個(gè)文件傳輸結束。為了簡(jiǎn)化工作,在UNIX平臺上FTP支持非在線(xiàn)傳輸,即用戶(hù)只需把要輸入的命令逐條寫(xiě)進(jìn)shell腳本,FTP傳輸文件時(shí)調用腳本即可,例:對上述/usr/userbk目錄下的數據文件的異地備份,可用如下腳本來(lái)完成。 程序3:/usr/userbk/ydbf open hostgs user mybackup mypasswd mpt .Z bye 程序中的hostgs為異地的主機名。該主機名需在本地主機/etc/hosts文件中定義。mybackup、mypasswd是異地主機中為備份數據而建立的用戶(hù)名和口令字,當系統例行程序調用此程序時(shí),可將數據全部備份至異地的hostgs主機中mybackup用戶(hù)下。 五、數據恢復 本地備份到磁帶上的數據可用tar x8v命令將數據文件拷貝到/usr/userbk目錄下。異地備份的數據可用FTP命令傳輸至該目錄下,或者直接用/usr/userbk目錄下的數據,用uncompress.Z解壓。 對于Informix4.0版以字符串形式存放的數據,可直接用cpio命令來(lái)恢復。如:rsbx用戶(hù)數據可用如下命令來(lái)恢復: cpio -icduvB < RSBX 對于Informix-Online的數據恢復,需采用如下方法。如對picc2數據庫的恢復可用如下命令來(lái)恢復: cpio -icduvB < PICC2 dbimport picc2 -d workdbs 其中,workdbs為Online建立的數據空間,須注意的是恢復數據庫時(shí),原數據庫必須刪除。 |
聯(lián)系客服