Crontab可以定期執行工作 , 包含每天 / 每小時 / 特定時間 / 特定區間
最近剛好遇到資料庫偶爾需要刪減資料 , 而系統流程尚未新增此工作項目
為了確保資料不會被誤刪 , 確定搭配Mysqldump , 做每小時定期備份資料
經過測試 , 目前每小時備份的檔案大小 , 約3.8MB
24 * 3.8 = 91 MB
大概還不到Web開一天Debug模式所產生的Log量 (普通網站約600MB / 天)
共有兩個環節需要注意 , 此外 , 建立過程可能會遇到權限不足 , 記得用su切換到root權限 , 但是僅限於建立檔案/資料夾 , 其他時間請切回普通帳號
1.使用非root帳號作為執行者
根目錄直接執行crontab -e , 會根據帳號 , 建立一個獨立的工作檔案 , 存放路徑會在這
/var/spool/+帳號
所以, 當檔案被建立成功後 , 理論上 , 應該會有一個跟著帳號的資料被同時建立
至於crontab -e該存些什麼呢?
其實就直接放你準備跑得頻率+要被執行Script的位置 , 順便是否要輸出執行後的Log , 用來偵錯很方便
我這邊存放的是下列這句
0 * * * * /mysqlbackup/script.sh 2>&1 > /mysqlbackup/backup.log
每一小時定期跑一次我放在/mysqlbackup資料夾下的script.sh語法
2.建議將執行的Script額外放
script.sh的語法 , 其實直接就是下列這行 , 我這邊以照護雲為例 , 所以指定資料庫為DemoDB1
後面會根據執行時間 , 產出一個有時間戳記的檔案名稱 : DemoDB1.2016-06-27.17:00:01.sql
mysqldump -u帳號 -p密碼 –opt DemoDB1 > “/mysqlbackup/DemoDB1.$(date +%Y-%m-%d.%H:%M:%S).sql”
當script.sh被建立以後 , 記得執行下列語法
chmod +x ./script.sh
跟系統說 , 這個檔案是可以被執行的 , 特別注意 , 這段記得要切回普通帳號 (Ctrl+D)
由於我都把檔案放在/mysqlbackup
所以記得 , 這個資料夾也要設定允許可以被普通帳號寫入的權限 , 就大功告成
建議 , su到root權限 , 執行service crond restart , 讓系統確實載入我們新加的工作排程
並且 , 單獨執行一次backupscript.sh , 確定語法真的可以產出檔案