Linux下使用crontab自動備份資料庫
這裡使用到crontab定時任務的添加及mysqldump執行簡單的資料庫備份,具體步驟如下:
1. 編寫一個腳本: /serverBack/autobackmysql.sh
内容如下:
方法一:
##使用mysqldump備份資料庫erms
/usr/local/mysql/bin/mysqldump -uroot -ppwd erms >> /serverBack/mysql_back/erms_$(date+"%Y_%m_%d").sql
##找到/serverBack/mysql_back/下檔案名稱以erms_開頭,以 .sql 結尾的檔案,并且是7天前系統修改過的檔案,将其删除
find /serverBack/mysql_back/ -mtime +7-name "erms_*.sql" -exec rm -rf {} \;
方法二:
/usr/local/mysql/bin/mysqldump -uroot -ppwd dbname > dir/db_`date +%F`.sql
##保留近一周的備份檔案,更早的删除
find /dir -mtime +7 -name"db_*.sql" -exec rm -rf {} \;
方法三:
filename='date +%y%m%d'
/usr/local/mysql/bin/mysqldump -uroot-proot erms >>/serverBack/mysql/$filename.sql
較全的shell腳本内容如下:
echo "---------------------------------------------------" >> /serverBack/dbBack/dbBackLog.log
echo $(date +"%Y-%m-%d %H:%M:%S") "erms Database backup start" >> /serverBack/dbBack/dbBackLog.log
/usr/local/mysql/bin/mysqldump -uroot -ppwd erms >> /serverBack/dbBack/erms_$(date +"%Y-%m-%d").sql
if [ 0 -eq $? ];then
if [ -f "/serverBack/dbBack/erms_$(date +"%Y-%m-%d").sql" ];then
echo $(date +"%Y-%m-%d %H:%M:%S") "erms Database backup success!" >> /serverBack/dbBack/dbBackLog.log
else
echo $(date +"%Y-%m-%d %H:%M:%S") "erms Database backup fail!" >> /serverBack/dbBack/dbBackLog.log
fi
else
echo $(date +"%Y-%m-%d %H:%M:%S") "erms Database backup error!" >> /serverBack/dbBack/dbBackLog.log
fi
echo "---------------------------------------------------" >> /serverBack/dbBack/dbBackLog.log
find /serverBack/mysql_back/ -mtime +7 -name "erms_*.sql" -exec rm -rf {} \;
注意:a.這裡的mysqldump最好是使用絕對路徑,若直接使用mysqldump有可能備份成空檔案
b.為了確定該腳本内容準确無誤,可以單獨運作每個指令,如執行mysqldump指令:/usr/local/mysql/bin/mysqldump -uroot -ppwd erms >> /serverBack/mysql_back/erms_$(date+"%Y_%m_%d").sql
c.find指令中,結尾處的 ; 分号不能省略
2. 添加一個定時任務
crontab –e ##編輯定時任務
添加定時任務内容:
00 15 * * * /serverBack/autobackmysql.sh ##每天定時15:00:00 執行腳本 /serverBack/autobackmysql.sh
指令:
crontab –e ##編輯定時任務
crontab –r 删除所有定時任務
crontab –l 列出所有定時任務