Linux 环境下定时备份MySQL 数据库脚本

#!/bin/bash
#
# 基于操作系统《CentOS 6.5_x64最小化安装》的安全和优化脚本
#
# CentOS/RadHat 6+ Debian 7+ and Ubuntu 14+
#
#  Copyright © 2015年10月1日  Email:service@fooher.com
#
#    个人博客: http://www.fooher.com by 运维天涯
#

# 备份目标目录
backup_dir=/data/mysql
# 数据库备份名称
DBname=mysql
# 设置删除备份文件天数
expired_days=30
mysql_install_dir=/usr/local/mysql
# 数据库用户名
dbrootname=root
# 数据库密码
#dbrootpwd=`< /dev/urandom tr -dc A-Za-z0-9 | head -c8`
dbrootpwd='123456'
dbhost=localhost
db_prot=3306

LogFile=${backup_dir}/db.log
DumpFile=${backup_dir}/DB_${DBname}_$(date +%Y%m%d_%H).sql
NewFile=${backup_dir}/DB_${DBname}_$(date +%Y%m%d_%H).tgz
OldFile=${backup_dir}/DB_${DBname}_$(date +%Y%m%d --date="${expired_days} days ago")*.tgz

[ ! -d "${backup_dir}" ] && mkdir -p ${backup_dir}

DB_Command=`${mysql_install_dir}/bin/mysql -u${dbrootname} -p${dbrootpwd} -e "show databases\G" | grep ${DBname}`
[ -z "${DB_Command}" ] && { echo "[${DBname}] 不存在" >> ${LogFile} ;  exit 1 ; }

if [ -n "`ls ${OldFile} 2>/dev/null`" ]; then
    rm -rf ${OldFile}
    echo "[${OldFile}] 删除 ${expired_days} 天前备份文件成功" >> ${LogFile}
else
    echo "[${OldFile}] 删除 ${expired_days} 天前备份文件" >> ${LogFile}
fi

if [ -e "${NewFile}" ]; then
    echo "[${NewFile}] 备份文件存在,无法备份" >> ${LogFile}
else
    ${mysql_install_dir}/bin/mysqldump -u${dbrootname} -p${dbrootpwd} --databases ${DBname} > ${DumpFile}
    pushd ${backup_dir} > /dev/null
    tar czf ${NewFile} ${DumpFile##*/} >> ${LogFile} 2>&1
    echo "[${NewFile}] 备份成功 ">> ${LogFile}
    rm -rf ${DumpFile}
    popd > /dev/null
fi