尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Docker Compose 数据卷备份恢复:MySQL/Postgres/Redis 升级前检查清单

Docker Compose 数据卷备份恢复:MySQL/Postgres/Redis 升级前检查清单
📅 发布时间:2026/7/1 17:55:01

本文记录一套 Docker Compose 基础服务升级前的检查流程,适用于开发环境、小团队测试机、自托管服务和轻量业务系统。核心对象是 MySQL、Postgres、Redis 这类有状态服务。

目标不是讲 Docker Compose 入门,而是避免这类事故:

  • Compose 项目换目录后,数据库像新装的一样。
  • 执行docker compose down -v后,命名卷也被移除。
  • 旧环境用了匿名卷,新环境没有挂回旧数据。
  • MySQL/Postgres 有备份文件,但没有恢复演练。
  • Redis 默认当缓存用,实际业务却依赖它的状态。

1. 先分清三类对象

对象典型命令升级时怎么处理
镜像docker pull固定 tag,提前预拉
容器docker compose up -d可重建,检查环境变量和端口
数据卷docker volume inspect先备份,再恢复验证

数据库容器最重要的不是容器 ID,而是数据目录背后的 volume。

2. down 和 down -v 的区别

docker compose down会停止并移除容器、网络等资源,但默认不会删除命名卷。带上-v后,会移除 Compose 文件中声明的命名卷和匿名卷。

建议维护脚本里不要随手写:

dockercompose down-v

除非你确认这是一次彻底销毁环境,并且数据已经备份、恢复也验证过。

3. 推荐写稳定命名卷

Postgres 示例:

services:db:image:docker.1ms.run/postgres:16environment:POSTGRES_USER:appPOSTGRES_PASSWORD:change-mePOSTGRES_DB:appvolumes:-db-data:/var/lib/postgresql/datavolumes:db-data:

MySQL 示例:

services:mysql:image:docker.1ms.run/mysql:8.4environment:MYSQL_ROOT_PASSWORD:change-meMYSQL_DATABASE:appvolumes:-mysql-data:/var/lib/mysqlvolumes:mysql-data:

Redis 示例:

services:redis:image:docker.1ms.run/redis:7command:["redis-server","--appendonly","yes"]volumes:-redis-data:/datavolumes:redis-data:

这里的重点是:数据库目录必须挂到稳定的命名卷或明确路径,不要靠匿名卷碰运气。

4. 升级前检查命令

查看最终配置:

dockercompose config

查看当前卷:

dockervolumels

查看卷详情:

dockervolume inspect 项目名_db-data

查看服务使用的挂载:

dockerinspect 容器名--format'{{json .Mounts}}'

如果看到数据库写在匿名卷里,先停下来处理迁移,不要直接升级。

5. MySQL 备份和恢复

备份:

dockercomposeexecdbsh-c'mysqldump -uroot -p"$MYSQL_ROOT_PASSWORD" app'>mysql-app.sql

恢复验证:

catmysql-app.sql|dockercomposeexec-Tdbsh-c'mysql -uroot -p"$MYSQL_ROOT_PASSWORD" app'

注意点:

  • 不要只备份 volume tar 包就结束。
  • 逻辑备份更容易跨环境验证。
  • 大版本升级前先在临时环境导入一次。

6. Postgres 备份和恢复

备份:

dockercomposeexec-Tdb pg_dump-Uapp app>pg-app.sql

恢复验证:

catpg-app.sql|dockercomposeexec-Tdb psql-Uapp app

注意点:

  • POSTGRES_USER、POSTGRES_DB、POSTGRES_PASSWORD要和恢复命令一致。
  • 跨大版本升级时,先看官方镜像关于PGDATA和数据目录的说明。
  • 生产大库需要更严肃的备份方案,本文只覆盖 Compose 小环境和轻量维护。

7. Redis 要先判断是不是状态服务

Redis 如果只是缓存,重建影响可能可控。如果承载队列、会话、任务状态,就要明确持久化策略。

建议检查:

dockercomposeexecredis redis-cli CONFIG GET appendonlydockercomposeexecredis redis-cli CONFIG GETdir

需要持久化时,至少确认:

  • /data已挂载到稳定卷。
  • RDB 或 AOF 策略符合业务预期。
  • 没有把无密码 Redis 暴露到公网。

8. 镜像预检放在恢复演练之后

维护窗口前可以先拉固定版本镜像:

dockerpull docker.1ms.run/postgres:16dockerpull docker.1ms.run/mysql:8.4dockerpull docker.1ms.run/redis:7dockerpull docker.1ms.run/adminer:latest

毫秒镜像(1ms.run)在这里解决的是镜像预检问题:数据库镜像、管理工具镜像和业务基础镜像别到维护窗口才开始拉。它不替代备份,也不替代恢复验证。

9. 最终检查表

步骤检查项通过标准
1docker compose config卷、端口、环境变量清楚
2docker volume ls关键数据卷有稳定名字
3docker volume inspect挂载点和项目标签确认
4逻辑备份MySQL/Postgres 有可迁移备份
5恢复演练临时环境能导入
6Redis 策略明确缓存还是状态服务
7镜像预拉固定 tag 能拉取
8回滚记录旧镜像 tag 和旧备份可用

总结

Docker Compose 让容器重建变得很轻,但有状态服务不能按无状态服务处理。升级前先确认数据卷、备份、恢复演练,再处理镜像预检和服务重启。这个顺序不复杂,但能避开很多低级事故。

相关新闻

  • 计算机毕业设计之基于深度学习的单尺度乳腺组织病理图像分类算法
  • LeetCode刷题 day26
  • 工业级机器学习系统:总体架构设计

最新新闻

  • 如何3分钟掌握智慧职教刷课脚本:免费自动化学习终极指南
  • 2026在线去除本地视频水印工具推荐:免费无水印、安全无广告不压缩
  • OECP性能优化秘籍:如何提升大规模ISO对比效率10倍
  • 揭秘openEuler/CCA:ARM机密计算架构如何彻底改变数据安全?
  • openEuler RISC-V SIG:构建环境配置与依赖解析完全指南
  • 2026Word文件压缩至10M以内完整实操指南

日新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

周新闻

  • Windows字体自定义终极方案:No!! MeiryoUI完全指南
  • Deepin Boot Maker:告别命令行,3分钟制作Linux启动盘的智能解决方案
  • Plain Craft Launcher 2:重新定义你的Minecraft游戏体验

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号