联系:手机/微信(+86 17813235971) QQ(107644445)
标题:mysql自动备份脚本
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
#!/bin/bash #定义有备份的数据库名 dbname=chengfei #定义备份数据库时使用的用户名和密码 dbuser=chengfei dbpasswd=chengfei #数据库备份的路径 backuppath=/home/chengfei/backup/mysql/ #数据库备份日志文件存储的路径 logfile=/home/chengfei/backup/log/mysql.log #以当前的时间作为备份的数据库命名。 dumpfile=$(date +%y%m%d%H%M) #这个函数用来备份数据库 back_db() { #将备份的时间、数据库名存入日志 echo "------"$(date +%Y-%m-%d%t%A%t%T)" Beginning database "${dbname}" backup--------" >>${logfile} #备份数据库,如果有错误信息也记入日志。 /usr/bin/mysqldump -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文件。如果有错误信息也记入日志。 tar zcvf ${dumpfile}.tar.gz ${dumpfile}.sql && rm ${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} #发送邮件 cat ${logfile} | mutt -s "Blog数据库备份" -a ${dumpfile}.tar.gz 8chf@163.com } #这个函数用来删除七天前的数据,注意,这个脚本会删除当前目录下所有的早于七天前的文件 rm_oldfile() { #查找出当前目录下七天前生成的文件,并将之删除 find /home/chengfei/backup/mysql -type f -mtime +7 -exec rm {} \; } #切换到数据库备份的目录。如果不做这个操作,压缩文件时有可能会错误 cd ${backuppath} #运行备份数据函数 back_db #运行删除文件函数 rm_oldfile
添加运行计划
crontab -e
00 05 * * * /home/chengfei/backup/script/backup_mysql.sh
#发送邮件
cat ${logfile} | mutt -s “Blog数据库备份” -a ${dumpfile}.tar.gz 8chf@163.com
邮件内容只要本次备份日志就好了:
tail -n 5 ${logfile} | mutt -s “Blog数据库备份” -a ${dumpfile}.tar.gz 8chf@163.com
删除七天前文件
find ./ -mtime +7 -name “*.*” | xargs rm -f
有些shell不支持
find ./ -type f -mtime +7 -exec rm -f {} \;