Mysql&Mariadb

Centos Mysql 实现自动备份发送到指定邮箱

2019-12-11  本文已影响0人  Miuson

Linux Mysql 实现自动备份

邮箱选择:mail 方式发送邮箱

邮箱应用场景

很多时候我们在使用shell监控脚本的时候(例如:Mysql,nginx,等等),当监控的服务出现问题的需要通过邮箱(当然也可以使用微信、短信或者钉钉)通知给管理员。

1.先判断本身系统是否有mail

which mail 

这种是有的

1.1 系统没有mail 安装命令 (需要连接外网)

yum install mailx -y

1.2 修改配置文件

vim  /etc/mail.rc

set smtp=smtps://smtp.163.com:465

set from=remake@163.com  换成你自己的邮箱地址

set smtp-auth=login

set smtp-auth-user= remake@163.com  换成你自己的邮箱地址 

set smtp-auth-password=yournumber   注意:你的授权码,使用smtp需要打开授权

set ssl-verify=ignore

set nss-config-dir=/etc/pki/nssdb/ 

1.3 打开授权(163邮箱)

点击红框 确保服务已经开启 按照步骤新增授权码

注意:别忘记你的授权码,只能看一次(记得保存)

授权码

把授权码复制到 配置文件 set smtp-auth-password=yournumber   

1.4测试发送

echo "测试邮件" | mail -s "测试"  remake@163.com

假如没有收到可以看看垃圾箱,有没有收到,有些会默认走到垃圾箱

1.5 mail常用命令

echo "测试邮件" | mail -s "测试"  remake@163.com

-s表示主题,"< mail.txt"表示把mail.txt里的内容作为邮件正文

也可以用cat mail.txt的输出作为mail命令的标准输入,作为邮件正文

-c表示抄送的地址 remake@126.com是直接发送的地址 


2.1.创建需要备份的文件夹

           名字可以随便创建

       mkdir /home/dbback   

      cd /home/dbback  

    2.2.创建 shell 脚本

        名字随便起

        vim bkDatabaseName.sh 

    2.2 .1   复制粘粘 内容 (这是备份为 sql 文件)!根据需要来选取

                注意: 

                把 username 替换为实际的用户名; 

                把 password 替换为实际的密码; 

                把DatabaseName 替换为实际的数据库名;

 #!/bin/bash

mysqldump -uusername -ppassword DatabaseName >/home/dbback/DatabaseName_$(date +%Y%m%d_%H%M%S).sql

     2.2.2  对备份进行压缩:(这是备份为 sql 压缩 文件)!根据需要来选取

                    注意 :mysql备份只能识别后缀sql.gz  文件,不能识别 sql.tar.gz     

#!/bin/bash

mysqldump -uusername -ppassword DatabaseName | gzip >/home/dbback/DatabaseName_$(date+%Y%m%d_%H%M%S).sql.gz

    2.3.添加可执行权限

              注意:名字对应脚本名字

            chmod u+x bkDatabaseName.sh  

            添加可执行权限之后先执行一下,看看脚本有没有错误,能不能正常使用;

./bkDatabaseName.sh

sh bkDatabaseName.sh

注意可能这里会报错:(可以忽略,因为邮件已经发送)

Warning: Using a password on the command lineinterface can be insecure.

   这是因为: 导出MySQL数据库的时候采用mysqldump命令,出现"Warning: Using a password on the command line interface can beinsecure."的错误提示,当然数据库肯定也没有能备份下来。这个问题应该是在MySQL5.6+版本的时候就有出现,可能是为了确保数据库的安全性采用的保护机制。

解决方法、修改数据库配置文件

我们需要修改数据库配置文件,这个要看我们数据库的配置的,有些是在/etc/my.cnf,有些是/etc/my.conf 

截图

           我们需要在[client]部分添加脚本:

host=localhost

user=数据库用户

password='数据库密码'


3. 加上邮件发送 完整脚本

我创建脚本  /home/dbback/ 

注意:里面根据自己的要求修改名字路径!

#!/bin/bash 

mysqldump -u'账号' -p'密码' '备份的数据库' | gzip >/home/dbback/test_$(date -d today +%Y%m%d).sql.gz

echo 'email 测试' | mail -a /home/dbback/test_$(date -d today +%Y%m%d).sql.gz -s 'mail sql' remake@163.com

rm -rf /home/dbback/test_$(date -d today +%Y%m%d).sql.gz 

3.1加上脚本权限

 chmod u+x bkDatabaseName.sh  

        4.添加计划任务

                也可以   查看这个: https://www.jianshu.com/p/847ec50a65c3     

              首先  输入代码检测是否安装 crontab

            rpm -qa | grep crontab

已经安装crontab截图

         如果没安装会显示:   -bash: crontab: commandnotfound  

        分别执行这两个命令。

        yum -y install vixie-cron

        yum -y install crontabs

简单说明:(偏一下题)

vixie-cron 是 cron 的主程序;

crontabs 是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。

service crond start //启动服务

service crond stop      //关闭服务

service crond restart  //重启服务

service crond reload    //重新载入配置

service crond status    //查看crontab服务状态

同样可以设置开机自启动:

chkconfig --level 345 crond on

正题

 输入命令:(这时候会打开类似 vim 的编辑器)

  crontab -e

            输入内容:(这个是一分钟执行一次备份)

*/1 * * * * /home/backup/bkDatabaseName.sh

  

  4.1测试任务是否执行

    很简单,我们就执行几次“ls”命令,看看一分钟过后文件有没有被创建就可以了!

     如果任务执行失败了,可以通过以下命令查看任务日志

    # tail -f /var/log/cron

    类似会出现这种:

测试结果
上一篇下一篇

猜你喜欢

热点阅读