CentOS7下mysql定时备份并发送邮件到指定邮箱脚本
网上有对应的教程,但是使用的mutt发送的邮件。
我从昨晚九点开始搞,搞到凌晨三点都没弄好,早上又搞了一早上也没弄好。因为网上的教程太老,或者使用的gmail邮箱,在使用gmail邮箱的时候,需要开启应用授权。但这还不是最致命的,在我配置好了一切之后,发觉smtp.gmail.com是被墙掉的(服务器环境,平常自己电脑都是默认开启vpn的,所以对墙没墙不是很敏感),所以无法使用,上面的所有步骤主要参照以下两个文档。(我本人能力有限,没有成功)
使用mutt发送邮件:
http://www.jianshu.com/p/bebbf2db2cd8
google使用应用专用密码登录:
https://support.google.com/accounts/answer/185833
发觉smtp.gmail.com 被墙之后很自然的想法就是mutt+163,但是我尝试了很久,没有弄好(真的是能力有限,水平一般)。
后来发现linux自带有mail,和mutt对比之后,发觉mutt的那些所谓的优点对于我这个功能都不是必须的,mail玩完全可以满足我的需求,所以最后选用的就是mail发送邮件。
以下介绍的就是如何让mysql定时备份并使用mail发送邮件到指定邮箱
首先确保你的mail是安装好的了,参照以下文档
How To Send E-Mail On CentOS 7 :
https://gist.github.com/ilkereroglu/aa6c868153d1c5d57cd8
需要注意的是最后的配置阶段,需要按照如下的配置来(163邮箱)
- vim /etc/mail.rc
set smtp=smtps://smtp.163.com:465
set from=qpwchina@163.com #换成你自己的邮箱地址
set smtp-auth=login
set smtp-auth-user=qpwchina@163.com #换成你自己的邮箱地址
set smtp-auth-password=yourpassword # 你的授权码,使用smtp需要打开授权,不能使用原来的密码
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
- 创建sh脚本 vim /yourpath/sql_back.sh
DATE=`date+%Y%m%d`
mysqldump -uroot -pyourPassword --all-databases > /yourpath/back.sql
tar zcvfP /yourpath/db_${DATE}.sql.tar.gz /yourpath/back.sql
echo 'email content' | mail -a /yourpath/db_${DATE}.sql.tar.gz -s 'back sql' qupengwei2008@qq.com
rm -rf /yourpath/db_${DATE}.sql.tar.gz
以上代码简单解释一下。
- 声明了一个变量(之后会作为备份文件的名称)
- 使用mysqldump备份数据库,我这里备份的是所有的数据库(–all-databases)
- 压缩数据库备份文件(不是必须的,备份文件为文本压缩率会很高,节省空间和流量的效果很明显,所以选择了压缩)
- 发送邮件(邮件正文为’email content’,添加压缩好的sql备份为附件(-a attachment),邮件主题(-s subject)为‘back sql’,发送给
qupengwei2008@qq.com
) -
删掉本地的备份文件(非必需)
- 设置定时任务
crontab -e
然后在打开的界面中添加一行
0 1 * * * /yourpath/sql_back.sh
保存这个定时任务的含义是 每天凌晨一点整执行sql_back.sh脚本。
你可以通过
crontab -l
查看所有定时任务,对crontab不熟悉的请自行百度。
- 设置定时任务