centOS下資料庫自動備份及清理備份sql
要自動備份mysql一般是通過mysqldump來執行的,下面用到的命令會有mysqldump、date、find、rm
先上完整shell script
mysqldump -uroot -pyourpassword database_name >>/your/path/$(date +%Y_%m_%d)_$(date +%s).sql;
/usr/bin/find /your/path/ -mtime +7 -exec rm -rf {} \; ;
(注意:執行多個shell指令碼要以分號作為分隔符!命令最好要寫全路徑,否則系統會找不到命令從而導致執行失敗,例如我要補全find的路徑但是我不清楚全路徑是什麼,那就先在linux用 which find 找出find的全路徑
其中紅色字型的部分需填寫你自己的資料庫賬號、密碼、資料庫名稱、備份路徑,如我有一個名為test的資料庫需要備份,賬號為root,密碼為123456,則:
mysqldump -uroot -p123456 test >> /backup/test/$(date +%Y_%m_%d)_$(date +%s).sql;
find /backup/test/ -mtime +7 -exec rm -rf {} \;
這裡我用的結構為根目錄下建立一個backup資料夾,該資料夾下建立需要備份的資料庫名稱,然後直接以日期作為sql語句的命名,自動清理超過七天的sql語句。
語句寫好後儲存,如我儲存為test.sh,儲存到backup檔案目錄下
然後用crontab定時器設定任務
執行命令:crontab -e
定時器的編寫操作是跟vi操作一樣的,按a新增
crontab前五個時間引數分別為:minute hour dayOfMonth month dayOfWeek
需要注意的是第五個引數是0-6,0代表週日
如我想每天的十二點定時備份,則應寫為
00 00 * * * /backup/test.sh #*為萬用字元,時間引數後為需要執行的shell命令語句,也可以執行一個.sh檔案,這裡執行的就是一個sh檔案
如果是要每週的星期三的晚上十二點備份,則為:
00 00 * * 3 /backup/test.sh
這樣子就完成了資料庫的自動備份以及清理過期的sql備份了
測試時可以讓定時器每分鐘備份一次,看看是否成功
* * * * * /backup/test.sh