Linux定時備份MySQL數據庫

作項目有時候要備份數據庫,手動備份太麻煩,因此找了一下定時備份數據庫的方法mysql

Linux裏有一個 crontab 命令被用來提交和管理用戶的須要週期性執行的任務,就像Windows裏的定時任務同樣,用這個就能夠設置定時任務去執行相應的操做。sql

因此,咱們經過建立一個shell文件,把執行的命令放在裏面,而後再用crontab去定時執行就能夠達到咱們想要的效果了。shell

接下來咱們一步一步作。數據庫

 

一. 新建一個backup文件夾,用於存放咱們的備份文件

     Linux系統裏,home文件夾通常空間比較充足,能夠用來存放咱們的備份文件bash

cd /home
mkdir backup

 

二. 建立一個shell文件,命名爲: bk_你的數據庫名.sh(或者你自定義也行,最好語義化,一眼看得懂)

     假設爲 bk_mydatabase.sh測試

vi bk_mydatabase.sh

 

三. 在這個shell文件裏添加要執行的命令,即備份mysql數據庫的命令,並保存

     注意:-u和-p後面接上你的mysql用戶名和密碼,不要帶空格,數據庫名就填你要備份的數據庫名稱spa

               這裏備份的名稱就是你的 數據庫名稱_備份的時間.sql ,方便查看是何時備份的code

              crontab執行命令必須加上命令的全路徑寫全,好比我就加上了 「/usr/local/mysql/bin/」 ,這裏是我踩過的坑,沒加全路徑導出來的文件都是0KB,踩過就記住了crontab

#!/bin/bash

/usr/local/mysql/bin/mysqldump -u用戶名 -p密碼 數據庫名 > /home/backup/數據庫名_$(date +%Y%m%d_%H%M%S).sql

    若是你要備份成壓縮文件的話,能夠寫成下面這個命令ip

#!/bin/bash

/usr/local/mysql/bin/mysqldump -u用戶名 -p密碼 數據庫名 | gzip > /home/backup/數據庫名_$(date +%Y%m%d_%H%M%S).sql.gz

    添加好後記得保存

 

四. 修改剛纔的shell文件的權限

chmod u+x bk_數據庫名.sh

 

五. 能夠測試一下這個shell是否能執行,輸入文件名便可直接執行

./bk_數據庫名.sh

    執行後去backup文件夾裏看看,是否有導出來的文件

 

六. 查看crontab是否安裝(若是已安裝則請略過

     先看看crontab是否安裝了,通常都是安裝好的,若是沒安裝,就先安裝一下唄,安裝命令以下(已安裝的就不用管了

安裝:

yum -y install vixie-cron
yum -y install crontabs


CentOS中添加開機自動啓動:

chkconfig --level 345 crond on

 

七. 在crontab中設置定時任務

    輸入如下命令進入crontab任務設置

crontab -e

    在裏面添加如下命令

59 23 * * * /home/bk_數據庫名.sh

   保存後,你的shell文件就會被定時執行了

   解釋一下剛纔添加的命令

   「 59 23 * * * 」是crontab的時間規則,即執行週期,我寫的這句解析後就是天天的 23:59 執行一次 home目錄下的那個bk_數據庫名.sh文件

   執行週期能夠按照本身的需求來設定

 

   到此,咱們就完成了天天23:59備份一次數據庫到咱們的home下的backup文件夾中的操做

 

 

八. crontab的格式(有興趣的能夠看看)

     它的格式共分爲六個字段,前五個字段是時間設定段,第六段是要執行的命令段,格式以下:

      minute   hour   day   month   week   command     按順序分別爲:分   時   日   月   周

      minute: 表示分鐘,能夠是從0到59之間的任意整數。
      hour:表示小時,能夠是從0到23之間的任意整數。
      day:表示日期,能夠是從1到31之間的任意整數。
      month:表示月份,能夠是從1到12之間的任意整數。
      week:表示星期幾,能夠是從0到7之間的任意整數,這裏的0或7表明星期日。
      command:表示要執行的命令,能夠是系統命令,也能夠是本身編寫的腳本文件。

     在以上的各個字段中,還可使用如下幾個特殊字符:

     星號(*):表明全部可能的值,例如month字段若是是星號,則表示在知足其它字段的條件後每月都執行該命令操做。
     逗號(,):用逗號隔開的值指定一個列表範圍,例如,「1,3,5,7」。
     中槓(-):用整數之間的中槓表示一個整數範圍,例如「3-7」表示「3,4,5,6,7」。
     正斜線(/):用正斜線指定時間的間隔頻率,例如「0-23/5」表示每五小時執行一次。

     同時正斜線能夠和星號一塊兒使用,例如*/1,若是用在minute字段,表示每分鐘執行一次。

     舉幾個栗子:

     1. 每分鐘執行一次home下的set.sh命令

* * * * * /home/set.sh

     2. 每一個星期日的上午6點到10點的第10和第30分鐘執行一次home下的set.sh命令

10,30 6-10 * * 0 /home/set.sh

     3. 每週一,週三,週五,週日的上午6點到10點的第10和第30分鐘執行一次home下的set.sh命令

10,30 6-10 * 1,3,5,7 0 /home/set.sh
相關文章
相關標籤/搜索