# cat dbback.sh
#!/bin/bash
#This mysql backup script for daily
#environment:linux
#定义要备份的数据库名
dbname=test
#定义备份数据库时使用的用户名和密码
dbuser=root
dbpasswd=123456
dbhost=localhost
#数据库备份的路径
backuppath=/opt/dbbak/
#数据库备份日志文件存储的路径
logfile=/opt/dbbak/db.log
#以当前的时间作为备份的数据库命名。
dumpfile=${dbname}$(date +%y%m%d%H%M)
#这个函数用来备份数据库
back_db()
{
#将备份的时间、数据库名存入日志
echo $(date +%y%m%d%H%M)" Beginning database "${dbname}" backup-----------------------------------" >>${logfile}
#备份数据库,如果有错误信息也记入日志。
mysqldump -h${dbhost} -u${dbuser} --default-character-set=utf8 -p${dbpasswd} ${dbname} >${backuppath}${dumpfile}.sql 2>> ${logfile}
#将备份数据库文件库压成ZIP文件,并删除先前的SQL文件。如果有错误信息也记入日志。
tar zcvf ${dumpfile}.tar.gz ${dumpfile}.sql && rm ${dumpfile}.sql 2>> ${logfile}
#将压缩后的文件名存入日志。
echo "backup file name:"$(date +%y%m%d%H%M)".tar.gz" >>${logfile}
echo -e "------------------------------\n" >>${logfile}
}
#这个函数用来删除七天前的数据,注意,这个脚本会删除当前目录下所有的早于七天前的文件,如果把目录搞错了。。。。。。。。。
#rm_oldfile()
#{
# #查找出当前目录下七天前生成的文件,并将之删除
# find ./ -type f -mtime +7 -exec rm {} \;
#}
#
#切换到数据库备份的目录。如果不做这个操作,压缩文件时有可能会错误
cd ${backuppath}
#运行备份数据函数
back_db
#运行删除文件函数
#rm_oldfile