Mysql 自動備份資料庫 shell指令碼
在我們平時的工作中。 有時需要定期去備份資料庫。當然備份資料庫有很多種方式。樓主這裡只簡單給大家說下如何編寫定期備份資料庫的shell 指令碼。
建立備份目錄
cd /opt
mkdir backup
cd backup/
建立備份 Shell 指令碼:
vim DatabaseName.sh
#!/bin/bash
mysqldump -uusername -ppassword DatabaseName > /home/backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sql
對備份進行壓縮:
#!/bin/bash
mysqldump -uusername -ppassword DatabaseName | gzip > /home/backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sql.gz
注意:
把 username 替換為實際的使用者名稱;
把 password 替換為實際的密碼;
把 DatabaseName 替換為實際的資料庫名;
新增可執行許可權
chmod u+x DatabaseName.sh
新增計劃任務
crontab -e
01 5***opt/backup/DatabaseName.sh
表示每天 5點鐘執行備份
Crontab 的格式
第 1列分鐘 1~59
第 2列小時 1~23(0表示子夜)
第 3列日 1~31
第 4列月 1~12
第 5列星期 0~6(0表示星期天)
第 6列要執行的命令
下面是 crontab 的格式:
分 時 日 月 星期 要執行的命令
這裡有 crontab 檔案條目的一些例子:
3021***/usr/local/apache/bin/apachectl restart
上面的例子表示每晚的 21:30重啟 apache。
4541,10,22**/usr/local/apache/bin/apachectl restart
上面的例子表示每月 1、10、22日的 4: 45重啟 apache。
101**6,0/usr/local/apache/bin/apachectl restart
上面的例子表示每週六、週日的 1: 10重啟 apache。
0,3018-23***/usr/local/apache/bin/apachectl restart
上面的例子表示在每天 18: 00至 23: 00之間每隔 30分鐘重啟 apache。
023**6/usr/local/apache/bin/apachectl restart
上面的例子表示每星期六的 11: 00pm 重啟 apache。
0*/1***/usr/local/apache/bin/apachectl restart
每一小時重啟 apache
#20160912 修正,感謝 @張瓊的指正,之前寫錯了,*/1 和 * 表示的同樣的意思,對於 / 的用法,可以參考另一篇文章 Crontab 中的除號到底怎麼用?
023-7/1***/usr/local/apache/bin/apachectl restart
晚上 11點到早上 7點之間,每隔一小時重啟 apache
0114*mon-wed /usr/local/apache/bin/apachectl restart
每月的 4號與每週一到週三的 11點重啟 apache
041jan */usr/local/apache/bin/apachectl restart
一月一號的 4點重啟 apache
此指令碼為樓主在centos7.0 mysql5.7下親測。其他環境應該都是類似的。