linux 每天自動備份mysql
這個裡的自動備份是在mysql所安裝的linux伺服器上進行的
1、檢查有沒安裝crond,如果沒有,先安裝
yum -y install vixie-cron
如果執行yum -y install vixie-cron 報No package vixie-cron available錯誤的話,建議直接下載vixie-cron原始碼包進行安裝(不報錯忽略此處)
#使用vixie-cron原始碼包安裝
#首先下載原始碼包
wget -c http://down1.chinaunix.net/distfiles/vixie-cron-4.1.tar.bz2
#解壓
tar -jxvf vixie-cron-4.1 .tar.bz2
#編譯安裝(先進入解壓資料夾cd vixie-cron-4.1)
make && make install
安裝vixie-cron後,再安裝crontabs(如果在安裝vixie-cron之前安裝了crontabs,先解除安裝再安裝crontabs;解除安裝命令:yum -y remove crontabs)
yum -y install crontabs
2、建立儲存備份檔案的路徑/mysqldata(我這裡是在根目錄建立了mysqldata的資料夾)
mkdir /mysqldata
3、切換到/usr/sbin目錄,建立bakmysql.sh指令碼:
touch bakmysql.sh
4、開啟檔案
vi bakmysql.sh
5、輸入以下命令內容(
-uusername 對應是 -u+資料庫使用者名稱,比如root(-u+root):-uroot
-ppassword 對應是 -u+資料庫密碼,比如123(-p+123):-p123
database 對應是資料庫名字
/mysqldata/uptrydate +%Y-%m-%d_%H%M%S
.sql.gz 對應是備份檔案 的存放的位置,/mysqldata 是前面建立 的資料夾,uptrydate +%Y-%m-%d_%H%M%S
.sql.gz 是檔案的名字
):
/mysqldata/uptry`date +%Y-%m-%d_%H%M%S`.sql.gz" data-snippet-id="ext.1cd69df66556921cef9a4817db31728c" data-snippet-saved="false" data-codota-status="done">mysqldump -uusername -ppassword database | gzip > /mysqldata/uptry`date +%Y-%m-%d_%H%M%S`.sql.gz
6、修改檔案屬性,使其可以執行
chmod +x /usr/sbin/bakmysql.sh
7、在/usr/sbin目錄下執行下面的命令,測試指令碼是否成功(如果失敗,一般由於資料庫的許可權問題引起的,具體根據錯誤提示進行修改):
./bakmysql.sh
8、然後新建crontab 任務:
crontab -e
9、新增下面一行命令:(按i鍵進入編輯模式,編輯完成按ESC鍵退出編輯模式,再輸入:wq退出並儲存檔案)具體引數解析看文章最後
#分鐘 小時 幾號 月份 星期幾 要執行的指令碼(或命令)
00 17 * * * /usr/sbin/bakmysql.sh # (root使用者不需要指定執行的使用者名稱 )
或者
00 17 * * * username /usr/sbin/bakmysql.sh #(usetname 為使用者名稱)
儲存退出。
重啟服務:
/etc/rc.d/init.d/crond restart
或者
service crond start 啟動
service crond restart 重啟
service crond stop 停止
service crond status 查詢狀態
首先檢視一下crontab的任務列表:
crontab -l
crontab 基本格式 :
* * * * * command
分 時 日 月 周 命令
第1列表示分鐘1~59 每分鐘用或者 /1表示
第2列表示小時1~23(0表示0點)
第3列表示日期1~31
第4列表示月份1~12
第5列標識號星期0~6(0表示星期天)
第6列要執行的命令
crontab檔案的一些例子:
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重啟apache。
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重啟apache。
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每週六、週日的1 : 10重啟apache。
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之間每隔30分鐘重啟apache。
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重啟apache。
* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小時重啟apache
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11點到早上7點之間,每隔一小時重啟apache
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4號與每週一到週三的11點重啟apache
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一號的4點重啟apache