一、在實際生產環境中遇到需要備份資料庫,防止伺服器或資料庫崩潰資料損壞時,無法挽救的情況,一種情況我們可以部署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」,比如我2023年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/ -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點之間,每隔一小時重啟伺服器
linux定時任務 at定時任務
at命令是一次性定時計畫任務,at的守護程序atd會以後臺模式執行,檢查作業佇列來執行作業。atd守護程序會檢查系統上的乙個特殊目錄來獲取at命令的提交的作業,預設情況下,atd守護程序每60秒檢查一次目錄,有作業時,會檢查作業執行時間,如果時間與當前時間匹配,則執行此作業。注意 at命令是一次性定...
Odoo定時任務 自動任務)
odoo中內建了乙個定時任務模型 ir.cron 它定義了一套 定時 自動 執行的規則。我們可以建立 ir.cron 的模型記錄,一條記錄就是乙個定時任務。1 前置準備 在業務模型中定義要定時執行的函式 這個就是一般資料模型的函式定義,沒什麼不同的。2 通過data檔案,建立一條定時任務記錄 往ir...
linux定時任務
crontab 設定定時任務 crontab 可以根據分鐘 小時 日期 月份 星期的組合來設定定時任務的自動執行 要使用該服務必須啟動 crond 服務,檢視 crond 服務有沒有啟動,執行命令 servicecrond status 一些任務事例,幫助理解 3020 root back.sh 每...