作为程序员一定要保持良好的睡眠,才能好编程

定时任务备份数据库并发送邮箱

发布时间:2016-05-23

定时备份数据库文件、并发送到邮箱中。

使用 crontab   定时任务,执行sh脚本备份现有的数据库,

并通过mutt 这个软件发送到邮箱中。


上面是使用原理。  来看看操作步骤:

第一、建立sh脚步,并赋予执行的权限。


第二、编写sh脚本内容,保存。


第三、安装mutt软件,发送邮件


第四、建立crontab 定时任务。


先来看第一步:

vim mysql_back.sh

e10.png


chmod a+x mysql_back.sh

给mysql_back.sh 赋予执行的权限。


第二步:


#!/bin/sh
echo "mysql backup start..."
/usr/bin/mysqldump --opt aa -u root -psong >aa1.sql
/usr/bin/mysqldump --opt tts -u root -psong >tts.sql
         
#压缩好以后,把文件发送到邮箱
#echo "mysql_data" | mutt -s "数据库备份" -a ./sqldata.tar.gz
        
date=$(date +"%Y%m%d")
#定义昨天的日期
yester_date=$(date -d yesterday +"%Y%m%d")
tarName=sqldata_$date.tar.gz
sendToEmail="574482856@qq.com"
ip="127.0.0.1"
    
#开始压缩
tar -czf $tarName ./*.sql
echo "$ip 数据库自动备份,请查看附件" | mutt -s "${ip} _ $date数据库备份" $sendToEmail  -a ./$tarName
    
#删除sql文件 防止占用空间
rm ./*.sql
    
#判断昨天是否存在压缩包,如果存在就删除
yesterday_file="./sqldata_$yester_date.tar.gz"

if [ -f "$yesterday_file" ]; then
   rm -rf $yesterday_file
fi
echo "mysql backup success!"

e11.png


保存退出

back.sh.txt

下载文件,直接执行


如果你是自己安装的数据库,需要指定一下 mysqldump 这个路径。不然可能会不能执行。


第三、安装mutt


首先查看是否有安装mutt


rpm -q mutt

r24.png


发现没有安装,那就执行命令安装

yum install -y mutt


r25.png


下一步:要使用哪个帐号发送邮件,比如:

            echo "邮件内容" | mutt -s "邮件标题" 574482856@qq.com -a /a/root.txt

            比如使用  xiaosong 这个用户,那就进入  /home/xiaosong 这个文件夹

            vim  .muttrc

            粘贴以下内容:

            r23.png

            

            set charset="utf-8"
            set rfc2047_parameters=yes
             #如果你想自定义发件人信息,需要进行如下设置
            set envelope_from=yes
            set use_from=yes
            set from=574482856@qq.com
            set realname="xiaosong_server"


            把以上代码复制粘贴到这个文件里,保存,退出


            执行发送邮件的命令:

                

            echo "test" | mutt -s "subject" 574482856@qq.com

            r27.png

            

            如果这里不报任何错误,则发送成功,发送邮件有一定的延迟,请等待,如果长时间没有收到,请检测邮箱是否拦截!

            

            问题:如果没有报错,请跳过此步骤

            e1.png


            sendmail: warning: inet_protocols: IPv6 support is disabled: Address family not supported by protocol
            sendmail: warning: inet_protocols: configuring for IPv4 support only
            postdrop: warning: inet_protocols: IPv6 support is disabled: Address family not supported by protocol
            postdrop: warning: inet_protocols: configuring for IPv4 support only
            postdrop: warning: unable to look up public/pickup: No such file or directory
            

            解决方案:       

                (1)修改# /etc/postfix/main.cf 这个文件
                (2)修改内容: 把inet_protocols = all 修改为inet_protocols = ipv4
                (3)报存退出 wq!
                (4)重新启动# /etc/init.d/postfix restart使修改生效  或使用  service postfix  restart



            执行完命令以后,在这个 /home/xiaosong 文件夹下有一个 sent 的文件

            r28.png

            

             使用 vim sent 看看是不是记录下来了。

             r29.png     


            看看邮箱是不是收到内容:


            r32.png

第四步:建立定时任务

        

    crontab -e   编辑定时任务

    

    * * * * * /root/back.sh


    e12.png    

    

    00 00 * * * /root/back.sh           每一天执行一次.


    e13.png