#!/bin/bash
dateBackup=$(date +%Y-%m-%d_%H:%M:%S)
dir=/data/mysql/backup/${dateBackup}
# 宿主机新建目录,通过挂载会自动添加到容器
if [ ! -d "${dir}" ]
then
mkdir -p ${dir}
echo "创建文件夹 ${dir} 成功" >> ${dir}/error.log
else
echo "创建文件夹 ${dir} 失败,文件夹已存在" >> ${dir}/error.log
fi
# 需要备份的数据库名
dbNames=(db1 db2 db3)
for dbName in ${dbNames[@]}
do
echo "-----------------> 备份 ${dbName} 数据库 <-----------------" >> ${dir}/error.log
docker exec -i mysql_compose01 sh -c "mysqldump -uroot -pRivamed@2018 ${dbName} 1>> ${dir}/${dbName}.sql 2>> ${dir}/error.log"
gzip ${dir}/${dbName}.sql
done
echo -e " \n ----------------> 删除过期文件 <---------------------------" >> ${dir}/error.log
# 判断文件夹数量是否大于7,防止程序意外停止,删除所有备份
dirCount=`ls -l /data/mysql/backup/|grep "^d"|wc -l`
if [ ${dirCount} -gt 7 ]
then
# 删除超过七天的带"_"的目录
find /data/mysql/backup/ -mtime +6 -name "*_*" -exec rm -rf {} \;
echo -e " 删除过期文件成功" >> ${dir}/error.log
else
echo "删除过期文件失败,文件数量小于 7 " >> ${dir}/error.log
fi
PS:${dir}需要挂载到容器中