linux上備份數據庫並自動刪除超過指定時間的舊數據

廢話不多說,直接上腳本

1.自動備份mysql上指定的數據庫,保留指定天數的數據。

#!/usr/bin/env bash

dbName="xMyDB"                    #定義要備份的數據庫名
xTime=`date "+%Y-%m-%d_%H:%M:%S"`
bakPath="/data/backup/${dbName}"  #備份路徑
saveDay=10          #設定保留多少天的數據

if [ ! -d $bakPath ];then
        mkdir -p $bakPath
fi

if [ -f /data/backup/${dbName}/${dbName}-${xTime}.sql ];then
        rm -rf /data/backup/${dbName}/${dbName}-${xTime}.sql
fi

# 備份zabbix的mysql數據庫
mysqldump -u root -pMysqlMiMa $dbName > /data/backup/${dbName}/${dbName}-${xTime}.sql

if [ $? -eq 0 ];then
        echo "$xTime dbname:$dbName backup_success" >> /data/backup/${dbName}/${dbName}.log
else
        echo "$xTime dbname:$dbName backup_failed" >> /data/backup/${dbName}/${dbName}.log
fi

# 只保留$saveDay天的備份數據,在此之前的備份都刪掉,以節約磁盤
find $bakPath -mtime +${saveDay} -type f -name \*.sql -exec rm -rf {} \;
#腳本註釋:刪除備份目錄下指定提案書的文件,文件名後綴是.sql的所有文件
#還可以這麼寫find $bakPath -mtime +${saveDay} -type f -name \*.sql |xargs rm -f

2.別忘記給腳本加上可執行權限。

chmod +x /data/script/xAutoBackupMysqlForMydb.sh

3.將腳本添加到計劃任務中

crontab -e

然後寫上下面的計劃 

#每天早上7.59點備份一次mysql
57 07 * * * sh /data/script/xAutoBackupMysqlForMydb.sh

--------------END------------------2020年5月10日22:17:09----------------------------

-------------------照例送上雞湯一碗:奔涌吧!後浪!-------------------------------

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章