使用shell定時自動備份mysql數據庫

#!/bin/bash

 

id="root" #用戶名

pwd="123456" #密碼

dbs="blog.ewsd.cn dangjian.ewsd.cn idc.ewsd.cn shangfa.ewsd.cn" #資料庫名字的列表,多個資料庫用空格分開

backuppath="/home/mysqlbackup" #保存備份的位置

day=30   #保留最近幾天的備份

[ ! -d $backuppath ] &&mkdir -p $backuppath  #判斷備份目錄是否存在,不存時新建目錄。

cd $backuppath   #轉到備份目錄,這句話可以省略。可以直接將路徑到命令的也行。

 

backupname=mysql_$(date +%Y-%m-%d)  #生成備份文件的名字的前綴,不帶後綴。

for db in $dbs;   #dbs是一個數據名字的集合。遍歷所有的數據。

do

 

mysqldump -u$id -p$pwd -S /tmp/mysql.sock $db >$backupname_$db.sql  #備份單個數據為.sql文件。放到當前位置

 

if [ "$?" == "0" ]  #$? 得到上一個shell命令的執行的返回值。0表示執行成功。其他表示錯誤。並將將結果寫入到日志中。

   then

       echo $(date +%Y-%m-%d)" $db  mysqldump sucess">>mysql.log

   else

      echo $(date +%Y-%m-%d)"  $db mysql dump failed">>mysql.log

      exit 0

   fi

done

tar -czf $backupname.tar.gz *.sql #壓縮所有sql文件

if [ "$?" == "0" ]

then

   echo $(date +%Y-%m-%d)" tar sucess">>mysql.log

else

   echo $(date +%Y-%m-%d)" tar failed">>mysql.log

   exit 0

fi

rm -f *.sql  #刪除所有的sql文件

 

delname=mysql_$(date -d "$day day ago" +%Y-%m-%d).tar.gz  #得到要刪除的太舊的備份的名字。

rm -f $delname  #刪除文件。

 

將以上腳本加入定時計劃crontab中即可,下載地址 註意腳本的執行權限設置。

You May Also Like