用shell指令碼自動化備份資料庫

來源:互聯網
上載者:User

標籤:Database Backup   database   shell   backup   

由於個人建站不能保證比較高的可用性,可能存在資料容易的問題,所以就要實現備份資料庫的需求,於是本人在網上找了一些資料,結合本人實際情況,通過使用指令碼實現每天淩晨12點備份資料庫,每周日定時刪除七天以前的Database Backup檔案。下面,本人就本人的備份資料庫的指令碼貼出來供大家學習以及借鑒。

首先,這是備份資料庫的指令碼。

cat /usr/local/script/BackupDatabase #!/bin/bash     #Shell Command For Backup MySQL Database Everyday Automatically By Crontab     #time 2015-5-20     #name huxianglin    USER=root    PASSWORD=xxxxxxxx    DATABASE1=zblog    DATABASE2=zabbix    BACKUP_DIR=/data/backup/database/  #備份資料庫檔案的路徑    LOGFILE=/data/backup/database/data_backup.log    #備份資料庫指令碼的記錄檔    DATE=`date +%Y%m%d-%H%M -d -3minute`     #擷取當前系統時間-3分鐘    DUMPFILE1=$DATE-zblog.sql                #需要備份的資料庫名稱    DUMPFILE2=$DATE-zabbix.sql    ARCHIVE1=$DUMPFILE1-tar.gz                #備份的資料庫壓縮後的名稱    ARCHIVE2=$DUMPFILE2-tar.gz     if [ ! -d $BACKUP_DIR ];                 #判斷備份路徑是否存在,若不存在則建立該路徑    then     mkdir -p "$BACKUP_DIR"    fi      echo -e "\n" >> $LOGFILE      echo "------------------------------------" >> $LOGFILE     echo "BACKUP DATE:$DATE">> $LOGFILE     echo "------------------------------------" >> $LOGFILE      cd $BACKUP_DIR                           #跳到備份路徑下    /usr/local/mysql/bin/mysqldump -u$USER -p$PASSWORD $DATABASE1 > $DUMPFILE1    #使用mysqldump備份資料庫    if [[ $? == 0 ]]; then    tar czvf $ARCHIVE1 $DUMPFILE1 >> $LOGFILE 2>&1                               #判斷是否備份成功,若備份成功,則壓縮備份資料庫,否則將錯誤記錄檔寫入記錄檔中去。    echo "$ARCHIVE1 BACKUP SUCCESSFUL!" >> $LOGFILE     rm -f $DUMPFILE1    else     echo “$ARCHIVE1 Backup Fail!” >> $LOGFILE     fi    /usr/local/mysql/bin/mysqldump -u$USER -p$PASSWORD $DATABASE2 > $DUMPFILE2    if [[ $? == 0 ]]; then    tar czvf $ARCHIVE2 $DUMPFILE2 >> $LOGFILE 2>&1    echo "$ARCHIVE2 BACKUP SUCCESSFUL!" >> $LOGFILE    rm -f $DUMPFILE2    else    echo “$ARCHIVE2 Backup Fail!” >> $LOGFILE    fi

然後,要寫刪除備份檔案的指令碼了。

[[email protected] database]# cat /usr/local/script/CleanDatabase #!/bin/bash#time 2015-05-21#name huxianglinBACKUPDIR="/data/backup/database/"                                     #定義備份檔案路徑KEEPTIME=7                                                             #定義需要刪除的檔案距離當前的天數DELFILE=`find $BACKUPDIR -type f -mtime +$KEEPTIME -exec ls {} \;`     #找到天數大於7天的檔案for delfile in ${DELFILE}                                              #迴圈刪除滿足天數大於七天的檔案dorm -f $delfiledone

最後,需要在crontab裡面寫上自動執行指令碼的時間。

cat /etc/crontab SHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=root# For details see man 4 crontabs# Example of job definition:# .---------------- minute (0 - 59)# |  .------------- hour (0 - 23)# |  |  .---------- day of month (1 - 31)# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat# |  |  |  |  |# *  *  *  *  * user-name  command to be executed  01 00 * * * root /usr/local/script/BackupDatabase              #定義每天淩晨0點01分執行備份資料庫指令碼  02 00 * * 0 root /usr/local/script/CleanDatabase               #定義每周日淩晨0點02分執行刪除Database Backup檔案

以上就是本人整理的關於備份資料庫以及定時刪除資料庫的指令碼,希望大家能夠給予意見以及建議。


本文出自 “檸檬” 部落格,請務必保留此出處http://xianglinhu.blog.51cto.com/5787032/1653452

用shell指令碼自動化備份資料庫

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.