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='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 2>/dev/null
fi