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