# 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