作項目有時候要備份數據庫,手動備份太麻煩,因此找了一下定時備份數據庫的方法mysql
Linux裏有一個 crontab 命令被用來提交和管理用戶的須要週期性執行的任務,就像Windows裏的定時任務同樣,用這個就能夠設置定時任務去執行相應的操做。sql
因此,咱們經過建立一個shell文件,把執行的命令放在裏面,而後再用crontab去定時執行就能夠達到咱們想要的效果了。shell
接下來咱們一步一步作。數據庫
Linux系統裏,home文件夾通常空間比較充足,能夠用來存放咱們的備份文件bash
cd /home
mkdir backup
假設爲 bk_mydatabase.sh測試
vi bk_mydatabase.sh
注意:-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
添加好後記得保存
chmod u+x bk_數據庫名.sh
./bk_數據庫名.sh
執行後去backup文件夾裏看看,是否有導出來的文件
先看看crontab是否安裝了,通常都是安裝好的,若是沒安裝,就先安裝一下唄,安裝命令以下(已安裝的就不用管了)
安裝: yum -y install vixie-cron yum -y install crontabs CentOS中添加開機自動啓動: chkconfig --level 345 crond on
輸入如下命令進入crontab任務設置
crontab -e
在裏面添加如下命令
59 23 * * * /home/bk_數據庫名.sh
保存後,你的shell文件就會被定時執行了
解釋一下剛纔添加的命令
「 59 23 * * * 」是crontab的時間規則,即執行週期,我寫的這句解析後就是天天的 23:59 執行一次 home目錄下的那個bk_數據庫名.sh文件
執行週期能夠按照本身的需求來設定
到此,咱們就完成了天天23:59備份一次數據庫到咱們的home下的backup文件夾中的操做
它的格式共分爲六個字段,前五個字段是時間設定段,第六段是要執行的命令段,格式以下:
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