【MySQL】資料庫定時備份及刪除
阿新 • • 發佈:2018-12-25
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
以上內容有兩個作用:
- 備份資料庫:wms_prod。
- 刪除7天前
/backup/
目錄下字尾名為.sql.gz
的檔案。
4、新增可執行許可權
chmod u+x bkdb.sh
檢驗指令碼是否可用,執行命令:./bkdb.sh
。如果可用,則backup目錄下會生成備份檔案。
5、新增計劃任務
- 執行命令
crontab -e
。如果出現提示資訊:command not found
,可參考文章:安裝crontab,自行完成安裝。 - 這時就像使用vi編輯器一樣,可以對計劃任務進行編輯。輸入以下內容:
0 22 * * * /backup/bkdb.sh
意思是每天在22:00執行shell指令碼/backup/bkdb.sh
。