今天写个centos上mysql每天按时备份数据库到qq邮箱,下面记录下备份流程:
通过126邮箱进行发送邮件 发送到qq邮箱,主要流程如下:
sudo yum install nss-tools
mkdir -p /root/.certs/
echo -n | openssl s_client -connect smtp.126.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/126.crt
certutil -A -n "GeoTrust SSL CA" -t "P,P,P" -d ~/.certs -i ~/.certs/126.crt
certutil -A -n "GeoTrust Global CA" -t "P,P,P" -d ~/.certs -i ~/.certs/126.crt
certutil -L -d /root/.certs
上面完成126证书认证功能,下面是测试下功能:
echo "Hello" | mail -v -s "test" *******@qq.com
这个时候以为没有设置mail会报错:
send-mail: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
设置下mail.rc:
vi /etc/mail.rc
set bsdcompat
set smtp=smtps://smtp.126.com:465
set from=****@126.com #换成你自己的邮箱地址
set smtp-auth=login
set smtp-auth-user=*****@126.com #换成你自己的邮箱地址
set smtp-auth-password=******# 你的授权码,使用smtp需要打开授权,不能使用原来的密码
set ssl-verify=ignore
set nss-config-dir=/root/.certs
此时测试就可以正常发送了:
echo "Hello" | mail -v -s "test" *****@qq.com
下面是对mysql创建一个sql_back.sh脚本定时备份数据库
vi mysql_back/sql_back.sh
#!/bin/sh
d=`date "+%Y-%m-%d_%H:%M:%S"`
/usr/local/mysql/bin/mysqldump -uroot -p***** 【数据库名】> /root/mysql_back/back.sql
tar zcvfP /root/mysql_back/db_${d}.sql.tar.gz /root/mysql_back/back.sql
echo 'email content' | mail -a /root/mysql_back/db_${d}.sql.tar.gz -s ${d}+'客户端数据库备份' *******@qq.com
rm -rf /root/mysql_back/db_${d}.sql.tar.gz
保存好之后执行发送命令看是否能发送邮件.
sh mysql_back/sql_back.sh
可以了。。
在定时器中设置每天零点发送任务:
crontab -e
0 0 * * * /root/mysql_back/sql_back.sh
完美实现发送邮件,备份下
评论区