1. 程式人生 > >linux 每天自動備份mysql

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