游戏还没有上线,对于清数据库库,大家也很随意,但有时,也会清掉一些有用的数据,boss决定做一个backup,以防万一,本来这事是属于运营维护类的工作,但公司体量比较小,程序就兼职运维了。
在网上查资料,决定用crontab来实现,主要流程是,写一个定时任务,系统定时调用这个任务的command部分,而backup功能可以放入这个command中来实现。既然知道了流程,那就开搞了!
#添加定时任务
crontab -e
#在打开的编辑框里写入任务内容(比如下面任务,在每天的1点整执行当前目录下的backup.sh脚本)
0 1 * * * backup.sh
上面5位分别代表分,时,日,月,年 (执行用户,上面省略了)command
#比如我的command是一个shell脚本,用来执行备份数据库,下面是backup.sh的代码
#!/bin/bash
#备份数据库
#backup日志 邮件内容 备份目录 发送邮件地址
log=/var/flyer/log/backup.log
email=/var/flyer/log/email.txt
dir=/var/flyer/backup
email_addr=flyer@126.com
#数据库的host account passwd 需要备份的数据库
host=127.0.0.1
user=flyer
passwd=123456
db=[db1,db2]
#记录备份时间
date=`date -d "now" +%Y%m%d`
echo `date -d "now " "+%Y-%m-%d %H:%M:%S"` > ${email}
#开始备份
for table in ${db[*]}
do
dump=${dir}/${table}-${date}.sql.gz
mysqldump -h${host} -u${user} -p${passwd} ${table} | gzip > ${dump}
echo ${dump} >> ${email}
done
#判断备份结果
if [[ $? == 0 ]];then
echo "backup success !" >> ${email}
else
echo "backup fail !" >> ${email}
fi
#追加到日志 发送邮件
cat ${email} >> ${log}
echo "--------------------------------------" >> ${log}
cat ${email} | mail -s "backup mysql" ${email_addr}
到此备份脚本完毕,执行发现不能发送邮件,原来没有安装对应软件包
#安装sendmail包
yum install -y sendmail
#启动sendmail
service sendmail start
之后配置mail
vim /etc/mail.rc,添加代理发送邮箱配置
#代理发送邮箱
set from=proxy@126.com
#邮箱服务器类型
set smtp=smtp.126.com
#代理发送邮箱
set smtp-auth-user=proxy@126.com
#第三方登陆密码(在邮箱中设置)
set smtp-auth-password=123
set smtp-auth=login
ok,到此结束,整个backup功能算是完成!第一次接触运维方面的东西,也是蛮有趣的!
网友评论