侧边栏壁纸
博主头像
恪晨博主等级

前端程序员

  • 累计撰写 143 篇文章
  • 累计创建 41 个标签
  • 累计收到 17 条评论

目 录CONTENT

文章目录

群晖Nas定期备份Docker中的mysql数据库

恪晨
2023-08-29 / 0 评论 / 0 点赞 / 78 阅读 / 396 字 / 正在检测是否收录...

前提

在Docker中安装了Mysql容器,并且已经有数据表

新建定时任务

  • 打开控制面板,找到任务计划,点击新增
    image-1693449601296

  • 设置任务名称,用户账号使用root

  • 设置任务计划执行时间
    image-1693449660821

  • 任务设置中,用户自定义脚本,添加以下内容

#当前日期
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容器中的数据表进行自动备份,生成压缩包,并且在最后设置了每次自动备注了最新的后删除三天前的备份文件。
image-1693450080822

0

评论区