Docker中运行的MySql备份
Docker中运行的MySql需要结合Docker命令来获取执行结果
一、备份脚本
#!/bin/bash
#备份目录
BACKUP_ROOT=/data/mysql/backup
BACKUP_FILEDIR=$BACKUP_ROOT/data
#当前日期
DATE=$(date +%Y%m%d)
#清理七天前数据
echo ----------CLEAN BEGIN----------
find $BACKUP_FILEDIR -mtime +7 -name "*.gz" -exec rm -rf {} \;
echo ----------CLEAN COMPLETE---------
#查询所有数据库,并过滤掉系统数据库
DATABASES=$(docker exec -i mysql-llc mysql -uroot -p123456 -e "show databases" | grep -Ev "Database|sys|information_schema|performance_schema|mysql")
#循环数据库进行备份
for db in $DATABASES
do
echo
if [[ "${db}" =~ "+" ]] || [[ "${db}" =~ "|" ]];then
echo "jump over ${db}"
else
echo ----------$BACKUP_FILEDIR/${db}_$DATE.sql.gz BEGIN----------
docker exec -i mysql-llc mysqldump -uroot -p123456 --default-character-set=utf8mb4 -q --lock-all-tables --flush-logs -E -R --triggers -B ${db} | gzip > $BACKUP_FILEDIR/${db}_$DATE.sql.gz
echo ${db}
echo ----------$BACKUP_FILEDIR/${db}_$DATE.sql.gz COMPLETE----------
echo
fi
done
echo "done"
二、定时任务
执行 crontab -e
00 23 * * * /data/mysql/backup/backup.sh>/data/mysql/backup/backup.log 2>&1
每天晚上十一点执行指定路径脚本,并记录执行日志