Linux利用定時任務自動備份數據庫並刪除n天前文件


一、在實際生產環境中遇到需要備份數據庫,防止服務器或數據庫崩潰數據損壞時,無法挽救的情況,一種情況我們可以部署MySQL主主互備來備份數據庫,在機器資源不足以我們部署MySQL主主互備,又不能采取以人工手動定時備份數據庫這種繁瑣的操作時,我們可以利用Linux的定時任務crontab來自動的備份數據庫

1、我們先來看我們的需求,比如現在需要在每天晚上的1點30分自動備份MySQL數據庫中的名字為mysql的庫到一個指定的目錄,比如root目錄下的mysql_backup文件夾,那么備份命令就是下面這樣

/usr/bin/mysqldump -uUsername -pPassword mysql > /root/mysql_backup/mysql_$(date +%Y%m%d_%H%M%S).sql
“Username”是我們數據庫的用戶

“Password”是這個用戶的密碼

“mysql”為我們需要備份的數據庫中的某個數據庫

因為我們每天晚上都會備份一下數據庫,所以備份之后我們以當時的備份時間來命名備份文件,即為“mysql_$(date +%Y%m%d_%H%M%S).sql”,比如我2019年1月30號晚上1點30分整備份的數據庫即為“mysql_20190130_013000.sql”。

2、我們的需求是在每天晚上都備份一下,那么每天都會生成一個文件,時間久了硬盤就會被塞滿,而且很早之前的數據也沒有太大的保留意義,那么我們可以在每天備份時同時刪除一段時間之前的備份數據,比如我們需要刪除30天之前的備份

find /root/mysql_backup/ -mtime +30 -type f | xargs rm -f
“/root/mysql_backup/”為我們備份文件的保存目錄

“-mtime +30”是設置時間為30天前

“-type f”表明查找的類型是文件

這行命令完成的操作是:查找/root/mysql_backup/目錄下30天之前的文件並且刪除。

3、備份跟刪除的命令我們都寫好了,那么我們可以通過crontab來讓系統每天自動的去執行這兩個任務

創建一個任務腳本mysql_autobackup.sh,寫入我們剛才的兩條命令並給於文件最高權限

#!/bin/bash
/usr/bin/mysqldump -uUsername -pPassword mysql > /root/mysql_backup/mysql_$(date +%Y%m%d_%H%M%S).sql
find /root/mysql_backup/ -name sdadmin'*.sql*' -mtime +30 -type f | xargs rm -f
crontab -e 寫入計划任務並保存

30 01 * * * /root/mysql_autobackup.sh
表示每天晚上1點30分會執行root目錄下的mysql_autobackup.sh腳本,就是我們上面編寫的備份跟刪除操作的腳本,這樣就可以完成系統每天自動備份數據庫並且會自動的去查找超過30天的備份並刪除

二、crontab 的格式

1、以我們剛才寫的計划任務為例

30 01 * * * /root/mysql_autobackup.sh
格式簡化之后是下面這樣

* * * * * *
第一列的“*”為分鍾 從1~59

第二列的“*”為小時 從0~23,0代表午夜12點

第三列的“*”為日 從1~31

第四列的“*”為月 從1~12

第五列的“*”為星期 從0~6,0代表星期天

第六列的“*”為要運行的命令

綜合起來就是下面的格式

分 時 日 月 星期 要運行的命令
2、舉一些例子

30 21 * * * reboot
上面的例子表示每晚的21:30重啟服務器。
45 4 1,10,22 * * reboot
上面的例子表示每月1、10、22號的4:45重啟服務器
10 1 * * 6,0 reboot
上面的例子表示每周六、周日的1:10重啟服務器
0,30 18-23 * * * reboot
上面的例子表示在每天18:00至23:00之間每隔30分鍾重啟服務器。
0 23-7/1 * * * reboot
晚上11點到早上7點之間,每隔一小時重啟服務器
 
————————————————
版權聲明:本文為CSDN博主「咖啡那么濃」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/ywd1992/article/details/81219091


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM