#先运行全量备份,再运行增量备份
 
#!/bin/sh
#需求,对数据库进行全量备份
 
#备份日期
dumpDate=$(date "+%Y%m%d")
 
#三天前的日期
old=$(date -d"3 day ago" +"%Y%m%d")
 
#备份开始详细时间
startTime=$(date "+%Y%m%d %H:%M:%S")
 
# 判断备份目录是不是已经存在,如果不存在则创建
if [ ! -d "/mnt/zpcdata/mysqlBackUps/allBackUpDir" ]; then
mkdir -p /mnt/zpcdata/mysqlBackUps/allBackUpDir
fi
 
bakDir=/mnt/zpcdata/mysqlBackUps/allBackUpDir
 
#当天的备份文件,压缩文件和三天前的备份文件,压缩文件
dumpFile=allDatabasesBackUp_$dumpDate.sql
gzDumpFile=allDatabasesBackUp_$dumpDate.sql.tgz
 
oldDumpFile=allDatabasesBackUp_$old.sql
oldGzDumpFile=allDatabasesBackUp_$old.sql.tgz
 
#判断备份操作记录日志是否存在
if [ ! -f "$bakDir/backups.log" ]; then
touch $bakDir/backups.log
fi
 
bakLog=$bakDir/backups.log
 
# 进行全量备份,并删除前面的bin-log文件
docker exec -it mysql_zpc_master mysqldump --opt --extended-insert=true --single-transaction -R --flush-logs --master-data=2 --delete-master-logs -uhuichao -pOoGP62irDG7uQnFx --all-databases > $bakDir/$dumpFile
 
#跳转到备份目录对文件进行压缩
cd $bakDir
 
tar -zvcf $gzDumpFile $dumpFile
 
#删除被压缩的文件
rm -rf $bakDir/$dumpFile
 
#删除3天前的数据备份
rm -rf $bakDir/$oldDumpFile
rm -rf $bakDir/$oldGzDumpFile
 
#结束详细日期
endTime=$(date "+%Y%m%d %H:%M:%S")
 
#记录到backups.log文件当中
echo 开始:$startTime 结束:$endTime $gzDumpFile success >> $bakLog
 
#删除增量备份的bin-log日志
incrementalBackUpDir=/mnt/zpcdata/mysqlBackUps/incrementalBackUp
 
rm -rf $incrementalBackUpDir