1. 程式人生 > >【MySQL】資料庫定時備份及刪除

【MySQL】資料庫定時備份及刪除

1、檢視磁碟空間情況

  既然是定時備份,就要選擇一個空間充足的磁碟空間,避免出現因空間不足導致備份失敗、資料丟失的問題。檢視伺服器磁碟空間使用情況的命令為:df -h。(df,disk free;h,human;以人類易讀的形式展示可用磁碟)

這裡寫圖片描述

  這裡選擇根目錄(/)作為備份目錄。

2、建立備份目錄

這裡寫圖片描述

3、建立備份指令碼

  備份sql檔案指令碼格式:

#!/bin/bash
mysqldump -uusername -ppassword DBName > /backup/DBName_$(date +%Y%m%d_%H%M%S).sql

  備份sql壓縮檔案指令碼格式:

#!/bin/bash
mysqldump -uusername -ppassword DBName | gzip > /backup/DBName_$(date +%Y%m%d_%H%M%S).sql.gz

  刪除7天前的備份檔案:

workdir="/backup/"

do_delete()
{
    echo file name is $workdir 

        find $workdir -name '*.sql.gz' -and -mtime +7  -type f  -delete
        if [ $? -eq 0 ];then
            echo
$date delete $dir success! else echo $date delete $dir FAILD! fi } do_delete
  • username:資料庫使用者名稱
  • password:資料庫密碼
  • DBName :要備份的資料庫名

    在backup目錄下執行命令:vi bkdb.sh,並貼上寫好的備份和刪除指令碼,例如:

#!/bin/bash    
mysqldump -uroot -proot wms_prod | gzip > /backup/wms_prod_$(date +%Y%m%d_%H%M%S).sql.gz

workdir="/backup/"
do_delete() { echo file name is $workdir find $workdir -name '*.sql.gz' -and -mtime +7 -type f -delete if [ $? -eq 0 ];then echo $date delete $dir success! else echo $date delete $dir FAILD! fi } do_delete

以上內容有兩個作用:

  1. 備份資料庫:wms_prod。
  2. 刪除7天前/backup/目錄下字尾名為.sql.gz的檔案。

4、新增可執行許可權

chmod u+x bkdb.sh

檢驗指令碼是否可用,執行命令:./bkdb.sh。如果可用,則backup目錄下會生成備份檔案。

5、新增計劃任務

  1. 執行命令crontab -e。如果出現提示資訊:command not found,可參考文章:安裝crontab,自行完成安裝。
  2. 這時就像使用vi編輯器一樣,可以對計劃任務進行編輯。輸入以下內容:
0 22 * * * /backup/bkdb.sh

  意思是每天在22:00執行shell指令碼/backup/bkdb.sh