失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Linux下使用crontab定时任务对MySQL数据库备份并将备份文件发送至邮箱

Linux下使用crontab定时任务对MySQL数据库备份并将备份文件发送至邮箱

时间:2018-08-05 00:54:25

相关推荐

Linux下使用crontab定时任务对MySQL数据库备份并将备份文件发送至邮箱

1.安装crontab

依次执行以下命令

yum -y install vixie-cronyum -y install crontabs

crontab相关命令

//启动服务service crond start //关闭服务service crond stop //重启服务service crond restart//重新载入配置 service crond reload//查看crontab服务状态 service crond status

设置开机自启动

chkconfig --level 345 crond on

2.mutt、msmtp安装

CentOs

# 更新所有的软件包yum update -y# 安装mutt、msmtpyum install mutt msmtp -y

Debian

apt update -yapt install mutt msmtp -y

3.配置.muttrc、.msmtprc文件

进入用户根目录

cd /root/

新建.muttrc文件

vim .muttrc

.muttrc内容

set sendmail="/usr/bin/msmtp"set use_from=yes#发件人名字set realname="Ryan Wang"#发件人地址set from=xxxxxxxxx@ set envelope_from=yesset charset="utf-8"set send_charset="utf-8"set content_type = "text/html\;charset=utf-8"

新建.msmtprc文件

vim .msmtprc

获取网易邮箱授权码

1.登录网易邮箱2.进入设置界面 3.开启POP3/SMTP服务,根据要求发送短信即可,然后网易会发送一个邮箱授权码(.msmtprc文件会使用到)

.msmtprc内容

1 account default2 #代理邮箱服务器,这里以163邮箱为例3 host 4 #端口5 port 4656 #同上发件人地址7 from xxxxxxxxx@8 tls_starttls off9 tls on10 tls_certcheck off11 #验证方式12 auth login13 #用户名14 user xxxxxxxxx@15 #邮箱授权码(网易提供邮箱授权码)16 password Sxxxxxxxxx

设置.msmtprc文件权限

chmod 600 .msmtprc

测试发送邮件

echo "test message"|mutt -s "test title" xxxxxxxxxx@

4.MySQL数据库备份脚本文件

新建一个sh备份文件

cd /home/cron.d

vim mysql-backup-solo.sh

mysl-backup-solo.sh内容如下

#!/bin/bash#定义需要备份的数据库名dbname=solo#数据库备份文件存放位置dbpath=/home/backup#定义备份数据库时使用的用户名和密码dbuser=usernamedbpasswd=password#数据库备份的路径backuppath=${dbpath}/mysql/${dbname}#日志文件目录logpath=${dbpath}/log/${dbname}#数据库备份日志文件存储的路径logfile=${logpath}/mysql.log#数据库IP地址dbhost=localhost#以当前的时间作为备份的数据库命名。dumpfile=${dbname}_$(date +%y%m%d%H%M)#这个函数用来备份数据库back_db(){#将备份的时间、数据库名存入日志echo "------"$(date +%Y-%m-%d%t%A%t%T)" Beginning database "${dbname}" backup--------" >>${logfile}#备份数据库,如果有错误信息也记入日志。(此处为MySQL自带的备份数据位置)/usr/local/mysql/bin/mysqldump -h${dbhost} -u${dbuser} -p${dbpasswd} ${dbname} >${backuppath}/${dumpfile}.sql 2>> ${logfile}#开始压缩数据文件echo $(date +%Y-%m-%d%t%A%t%T)" Beginning zip ${backuppath}/${dumpfile}.sql" >> ${logfile}#将备份数据库文件库压成ZIP文件,并删除先前的SQL文件。如果有错误信息也记入日志。cd ${backuppath} && tar -zcvf ${dumpfile}.tar.gz ${dumpfile}.sql && rm ${backuppath}/${dumpfile}.sql 2>> ${logfile}#将压缩后的文件名存入日志。echo "backup file name:"${dumpfile}".tar.gz" >>${logfile}echo -e "-------"$(date +%Y-%m-%d%t%A%t%T)" Ending database "${dbname}" backup-------\n" >>${logfile}#发送邮件tail -n 50 ${logfile} | mutt -s "Db BackUp" xxxxxxxxx@ -a ${backuppath}/${dumpfile}.tar.gzecho "tail -n 50 ${logfile} | mutt -s \"Db BackUp\" xxxxxxxxx@ -a ${backuppath}/${dumpfile}.tar.gz"}#这个函数用来删除30天前的数据,注意,这个脚本会删除当前目录下所有的早于30天前的文件rm_oldfile(){#查找出当前目录下30天前生成的文件,并将之删除find ${backuppath} -type f -mtime +30 -exec rm {} \;}if [ ! -d "${backuppath}" ]; thenecho "创建文件夹${backuppath}"mkdir -p ${backuppath}fiif [ ! -d "${logpath}" ]; thenecho "创建文件夹${logpath}"mkdir -p ${logpath}fi#切换到数据库备份的目录。如果不做这个操作,压缩文件时有可能会错误cd ${backuppath}#运行备份数据函数back_db#运行删除文件函数rm_oldfile

添加该文件的执行权限

chmod +x /home/cron.d/mysql-backup-solo.sh

测试脚本

./mysql-backup-solo.sh

如图表示测试成功,可以在网易邮箱和服务器备份文件目录查看有一条备份数据

5.编写定时任务

执行以下命令

crontab -e

在编辑器中输入以下内容

#每天0时0分执行该命令0 0 * * * /home/cron.d/mysql-backup-solo.sh

然后保存退出即可

使用命令查看定时任务是否存在

crontab -l

如图表示成功,每天的0时0分就会执行定时任务通过脚本备份数据库并将备份文件发送至邮箱了。

crontab参数说明

个人博客地址

如果觉得《Linux下使用crontab定时任务对MySQL数据库备份并将备份文件发送至邮箱》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。