前提
在Docker中安装了Mysql容器,并且已经有数据表
新建定时任务
-
打开控制面板,找到任务计划,点击新增
-
设置任务名称,用户账号使用root
-
设置任务计划执行时间
-
任务设置中,用户自定义脚本,添加以下内容
#当前日期
DATE=$(date +%Y%m%d)
MYSQL_PWD=mysql密码
DOCKERID=926fe034bb2920ae330275f1656ce2303125c3a65bfe7be42891f530bbcc61da
mkdir -v /volume1/file/BackUp/mysql/$DATE
#查询所有数据库
DATABASES=$(docker exec -i $DOCKERID mysql -uroot -p$MYSQL_PWD -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 ----------/volume1/file/BackUp/mysql/$DATE/${db}_$DATE.sql.gz----------
docker exec -i $DOCKERID mysqldump -uroot -p$MYSQL_PWD --default-character-set=utf8 -q --lock-all-tables --flush-logs -E -R --triggers -B ${db} | gzip > /var/tmp/${db}_$DATE.sql.gz
mv /var/tmp/*.sql.gz /volume1/file/BackUp/mysql/$DATE
echo ${db}
fi
done
rm -rf /volume1/file/BackUp/mysql/$(date -d -3day +"%Y%m%d")
echo "done"
MYSQL_PWD: 数据库密码
DOCKERID:docker中mysql的容器id,ssh登陆到群晖,执行docker ps -aqf "name=mysql容器名"
查询id
/volume1/file/BackUp/mysql/$DATE:备份文件保存路径,创建当天的日期为文件夹名
总结
通过上述方法,可以在每天指定时间执行定时脚本对mysql容器中的数据表进行自动备份,生成压缩包,并且在最后设置了每次自动备注了最新的后删除三天前的备份文件。
评论区