1. 程式人生 > >centOS下資料庫自動備份及清理備份sql

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