1,關於Oracle,由於我需要備份的Oracle數據庫較小,所以采用exp方式,腳本如下
#環境變量
exportORACLE_BASE=/home/Oracle
exportORACLE_HOME=$Oracle_BASE/product/10.2.0/db
exportORA_CRS_HOME=$Oracle_BASE/product/10.2.0/crs
exportPATH=$PATH:$Oracle_HOME/bin:$ORA_CRS_HOME/bin
exportOracle_SID=test1
exportLD_LIBRARY_PATH=$Oracle_HOME/lib32
exportLD_LIBRARY_PATH_64=$Oracle_HOME/lib
exportCLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$Oracle_HOME/rdbms/jlib
#進行備份
exp test/test@test1 file=/data/bakup/test_15day.dmp direct=y
#由於exp未主動覆蓋備份文件,這裡就采用mv重命名
mv-f test_15day.dmp test.dmp
#將備份進行壓縮存檔
gzip-c/data/bakup/test.dmp >/data/bakup/test_`date +%y%m%d%H%M`.gz
若是Oracle備份,在遠端主機,可以用scp拖回本地,這裡采用expect工具自動登錄
#!/usr/bin/expect -f#定義密碼
set passWord Oracle
#下載過程
spawn scp [email protected]:/data/backup/test.dmp /data/Oracle_backup_test/
set timeout 200
expect
set timeout 200
send "$passWord\r"
set timeout 200
send "exit\r"
expect eof
2,關於MySQL,這裡采用MySQLdump工具進行導出,命令較為簡單
#命令中包含地址,用戶名密碼,數據庫名稱,其中數據庫名稱可以為多個
mysqldump -h 10.0.0.9 -ubackup-p123456test>/data/MySQL_backup/test.sql
#這裡通過拷貝進行歸檔
cp/data/mysql_backup/test.sql /data/MySQL_backup/backup-`date +%y%m%d%H%M`.sql
3,備份的壓縮歸檔,通過壓縮可以減少存儲空間的占用
#壓縮命令,這裡加上參數p,是為了保留原始文件信息,便於恢復
tar-zcvpf/data/NAME.tgz file1 file2
#file1,file2可以為多個,中間用空格隔開,可以是目錄,可以是文件
4,將備份上傳到FTP服務器
#這是一個將數據庫備份壓縮歸檔並上傳FTP服務器的sh腳本
#!/bin/sh
#定義日期,最小到天,並對數據庫進行壓縮打包
DATE=`date +%Y%m%d`
tar -zcvpf /data/FTP/db_$DATE.tgz /data/MySQL/test.sql /data/other/ /data/Oracle/
#定義FTP服務器地址,用戶,密碼信息
host="10.0.0.21"
id="admin"
pwd="666666"
#定義本地文件路徑
basedir="/data/FTP"
#上傳過程
FTP -n "$host" <<EOC
user $id $pwd
binary
prompt
lcd $basedir
cd backup
mput db_$DATE.tgz
bye
EOC
5,添加為系統任務自動執行
采用crontab方法
crontab文件的一些例子:
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
#表示每晚的21:30重啟。
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
#表示每月1、10、22日的4 : 45重啟。
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
#表示每周六、周日的1 : 10重啟。
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
#表示在每天18 : 00至23 : 00之間每隔30分鐘重啟。
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
#表示每星期六的11 : 00 pm重啟。
* */1 * * * /usr/local/etc/rc.d/lighttpd restart
#每一小時重啟
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
#晚上11點到早上7點之間,每隔一小時重啟
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
#每月的4號與每周一到周三的11點重啟
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
#一月一號的4點重啟