linux 定時備份資料庫

來源:互聯網
上載者:User

#可以將這個指令碼放進/etc/crontab,01 0 * * * mysqlbackup.sh  
#好了,每周天淩晨 00:01 系統就會自動運行 backup.sh 檔案備份 MySQL 資料庫了。
#自動備份這個指令碼每天最多隻執行一次,而且只保留最近五天的備份在伺服器上。  
#代碼:

#!/bin/bash  
#Setting  
#設定資料庫名,資料庫登入名稱,密碼,備份路徑,日誌路徑,資料檔案位置,以及備份方式  
#預設情況下備份方式是mysqldump,還可以是mysqldump,mysqldotcopy,如果注釋掉第
#18行,則預設以tag的方式備份
#預設情況下,用root(空)登入mysql資料庫,備份至/root/dbxxxxx.tgz  
DBName=mysql
DBUser=root
DBPasswd=123456
BackupPath=/home/wang/www/backup/mysql/mysqlbackup
LogFile=/home/wang/www/backup/mysql/db.log
DBPath=/var/lib/mysql/
#BackupMethod=mysqldump
#BackupMethod=mysqlhotcopy
#BackupMethod=tar
#Setting End

NewFile="$BackupPath"db$(date +%y%m%d).tgz  
DumpFile="$BackupPath"db$(date +%y%m%d)  
OldFile="$BackupPath"db$(date +%y%m%d --date='5 days ago').tgz  
echo "-------------------------------------------" >> $LogFile  
echo $(date +"%y-%m-%d %H:%M:%S") >> $LogFile  
echo "--------------------------" >> $LogFile  
#Delete Old File
if [ -f $OldFile ]  
then  
   rm -f $OldFile >> $LogFile 2>&1  
   echo "[$OldFile]Delete Old File Success!" >> $LogFile  
else  
   echo "[$OldFile]No Old Backup File!" >> $LogFile  
fi  
if [ -f $NewFile ]  
then  
   echo "[$NewFile]The Backup File is exists,Can’t Backup!" >> $LogFile  
else  
   case $BackupMethod in  
   mysqldump*)
      if [ -z $DBPasswd ]
      then  
         mysqldump -u $DBUser --opt $DBName > $DumpFile  
      else  
         mysqldump -u $DBUser -p$DBPasswd --opt $DBName > $DumpFile  
      fi  
      tar czvf $NewFile $DumpFile >> $LogFile 2>&1  
      echo "[$NewFile]Backup Success!" >> $LogFile  
      rm -rf $DumpFile  
      ;;  
   mysqlhotcopy*)  
      rm -rf $DumpFile  
      mkdir $DumpFile  
      if [ -z $DBPasswd ]  
      then  
         mysqlhotcopy -u $DBUser $DBName $DumpFile >> $LogFile 2>&1  
      else  
         mysqlhotcopy -u $DBUser -p $DBPasswd $DBName $DumpFile >>$LogFile 2>&1  
      fi  
      tar czvf $NewFile $DumpFile >> $LogFile 2>&1  
      echo "[$NewFile]Backup Success!" >> $LogFile  
      rm -rf $DumpFile  
      ;;  
   *)  
      /etc/init.d/mysqld stop >/dev/null 2>&1  
      tar czvf $NewFile $DBPath >> $LogFile 2>&1  
      /etc/init.d/mysqld start >/dev/null 2>&1  
      echo "[$NewFile]Backup Success!" >> $LogFile  
      ;;  
   esac
fi
echo "-------------------------------------------"
echo

#lftp -f lftp.sh 如果有FTP可同時上傳ftp中。

 

 

 再利用crontab命令產生/var/spool/cron/root 檔案

 

crontab –e   (就會開啟一個編輯視窗,第一行會有內容格式的提示,在此輸入命令)

 

 m h  dom mon dow   command  (具體意義表示:分鐘 小時 日期 月份 星期 命令,在某月(mon)的某天(dom)或者星期幾(dow)的幾點(h,24小時制)幾分(m)執行某個命令(command))

 

如: 10 02 * * * /home/backup/autobackupmysql.sh  (表示零晨二點十分執行備份指令碼)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.