在我們平時(shí)的工作中馏慨。 有時(shí)需要定期去備份數(shù)據(jù)庫澜汤。當(dāng)然備份數(shù)據(jù)庫有很多種方式傅寡。樓主這里只簡(jiǎn)單給大家說下如何編寫定期備份數(shù)據(jù)庫的shell 腳本廊敌。
創(chuàng)建備份目錄
cd /opt
mkdir backup
cd backup/
創(chuàng)建備份 Shell 腳本:
vim DatabaseName.sh
#!/bin/bash
mysqldump -uusername -ppassword DatabaseName > /home/backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sql
對(duì)備份進(jìn)行壓縮:
#!/bin/bash
mysqldump -uusername -ppassword DatabaseName | gzip > /home/backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sql.gz
注意:
把 username 替換為實(shí)際的用戶名;
把 password 替換為實(shí)際的密碼因妙;
把 DatabaseName 替換為實(shí)際的數(shù)據(jù)庫名痰憎;
添加可執(zhí)行權(quán)限
chmod u+x DatabaseName.sh
添加計(jì)劃任務(wù)
crontab -e
01??? 5***opt/backup/DatabaseName.sh
表示每天 5點(diǎn)鐘執(zhí)行備份
Crontab 的格式
第 1列分鐘 1~59
第 2列小時(shí) 1~23(0表示子夜)
第 3列日 1~31
第 4列月 1~12
第 5列星期 0~6(0表示星期天)
第 6列要運(yùn)行的命令
下面是 crontab 的格式:
分 時(shí) 日 月 星期 要運(yùn)行的命令
這里有 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
每一小時(shí)重啟 apache
#20160912 修正鳄乏,感謝 @張瓊的指正,之前寫錯(cuò)了棘利,*/1 和 * 表示的同樣的意思,對(duì)于 / 的用法朽缴,可以參考另一篇文章 Crontab 中的除號(hào)到底怎么用善玫?
023-7/1***/usr/local/apache/bin/apachectl restart
晚上 11點(diǎn)到早上 7點(diǎn)之間,每隔一小時(shí)重啟 apache
0114*mon-wed /usr/local/apache/bin/apachectl restart
每月的 4號(hào)與每周一到周三的 11點(diǎn)重啟 apache
041jan */usr/local/apache/bin/apachectl restart
一月一號(hào)的 4點(diǎn)重啟 apache
此腳本為樓主在centos7.0 mysql5.7下親測(cè)。其他環(huán)境應(yīng)該都是類似的茅郎。