备份MySql数据库脚本

记录下参考其他博客重新梳理的MySql数据库备份脚本,待后续使用优化...

#!/bin/bash
#功能说明:备份MySql数据库
#编写日期:2019/10/24
#环境变量
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
export PATH
#数据库账号
dbuser='root'
#数据库密码
dbpasswd='root'
#需要备份的数据库名,多个数据库名用空格分开
dbnames='test'
#备份时间(注意不是单引号是键盘1前的)
baktime=`date +%Y%m%d%H%M%S`
#日志备份路径
logpath='/home/mysql/dbbak/baklog'
#数据备份路径
datapath='/home/mysql/dbbak/databak'
#路径不存在则创建
if [ ! -d ${logpath} ]; then
 mkdir ${logpath}
fi
if [ ! -d ${datapath} ]; then
 mkdir ${datapath}
fi
#备份开始
echo "备份时间为${baktime},备份数据库 ${dbnames} 开始"
#正式循环数据库名备份数据库
for dbname in $dbnames; do
#备份文件名
filename=${dbname}${baktime}
#备份MySql命令
source=`mysqldump -u ${dbuser} -p${dbpasswd} ${dbname} > ${datapath}/${filename}.sql` 2>> ${logpath}/${filename}.log 2>&1;
#备份成功后压缩备份文件为bz2压缩文件
if [ "$?" == 0 ];then
cd $datapath
#为节约硬盘空间,将数据库压缩
tar jcf ${filename}.tar.bz2 ${filename}.sql > /dev/null
#删除原始文件,只留压缩后文件
rm -f ${filename}.sql
#删除30天前备份(注意"rm -rf"别打错)
find $datapath -name "*.tar.bz2" -type f -mtime +30 -exec rm -rf {} \; > /dev/null 2>&1
echo "数据库 ${dbname} 备份成功!!"
else
#备份失败则进行以下操作
echo "数据库 ${dbname} 备份失败!!"
fi
done
#备份结束
echo "备份时间为${baktime},备份数据库 ${dbnames} 结束"

 

你可能感兴趣的:(MySql)