標籤: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指令碼自動化備份資料庫