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参数说明
个人博客地址