天天看點

shell腳本備份資料庫

    剛寫了個shell腳本,用于每天淩晨2點30分備份項目中的一個庫。現做個簡單記錄,以備查用,也和廣大51cto午飯們分享。

1.先确定軟體包和crond服務運作情況:

   檢視是否安裝vixie-crom-4.1-44.EL4軟體包

#rpm -qa |grep vixie-cron 

vixie-crom-4.1-44.EL4

   檢視crond服務的運作狀态

#service crond status 

crond (pid 3065) is running...

2.編寫腳本:

#!/bin/sh    

USER="root" #DB使用者名 

PASSWORD="pwd" #DB密碼 

DATABASE="test"    #DB資料庫名 

BACKUP_DIR="/export/home/wwwroot/webapps/testScripting/Data_backup" #備份檔案存放目錄 

LOGFILE="/export/home/wwwroot/webapps/testScripting/Data_backup/data_backup.log"    #備份日志檔案 

DATE=`date +%Y%m%d-%H%M`    #目前年月日時分 

DUMPFILE=$DATE.sql    #目前年月日時分作備份檔案名 

ARCHIVE=$DATE.sql.tgz    #壓縮包名 

OPTIONS="-u$USER -p$PASSWORD --opt --extended-insert=false --triggers --routines --hex-blob $DATABASE"    #備份操作 

#判斷備份目錄是否存在,如果不存在則建立一個 

if [ ! -d $BACKUP_DIR ] ; 

then 

mkdir -p "$BACKUP_DIR" 

fi 

echo ----------------------------------------- >> $LOGFILE 

echo BACKUP DATE: `date +%Y-%m-%d-%H:%M:%S` >> $LOGFILE 

echo Backup Process    Begin >> $LOGFILE 

#更換目錄 

cd $BACKUP_DIR 

#執行備份操作 

mysqldump $OPTIONS > $DUMPFILE 

#判斷備份是否成功 

if [[ $? == 0 ]]; then 

#建立備份檔案壓縮包 

tar czvf $ARCHIVE $DUMPFILE >> $LOGFILE 2>&1 

echo [$ARCHIVE] Backup Successful! >> $LOGFILE 

#删除原備份檔案,隻留壓縮包 

rm -f $DUMPFILE 

#備份失敗,發送錯誤消息到郵箱(需要mailutils或者類似終端下發送郵件工具的支援) 

else 

echo “Database Backup Fail!” >> $LOGFILE 

#mail -s “Database:$DATABASE Daily Backup Fail” $WEBMASTER 

echo Backup Process    End >> $LOGFILE 

echo “Backup Process Done” 

echo ----------------------------------------- >> $LOGFILE

3.配置定時器:

  crontab中每一行代表一個任務,格式如下:

minute    hour    day    month    dayofweek    command

     本文轉自NightWolves 51CTO部落格,原文連結:http://blog.51cto.com/yangfei520/463035,如需轉載請自行聯系原作者