ECS Docker Compose 数据卷备份恢复 Runbook

简介: 本文记录阿里云ECS上用Docker Compose维护小型业务服务(app/mysql/redis/Nginx)的实战要点:固定镜像版本、规范数据卷、执行逻辑备份与恢复验证、预拉镜像避卡顿、做好回滚准备,确保升级安全可控。(239字)

这是一份 ECS 上维护 Docker Compose 基础服务的记录。场景是一个小型业务环境,使用 Compose 跑 appmysqlredis 和反向代理。

维护目标:

  • 固定数据库和缓存镜像版本。
  • 确认 MySQL 数据卷位置。
  • 做逻辑备份并恢复验证。
  • 升级前预拉镜像,避免窗口期卡在拉取。

1. 检查最终配置

docker compose config

MySQL 服务建议明确写命名卷:

services:
  mysql:
    image: docker.1ms.run/mysql:8.4
    environment:
      MYSQL_ROOT_PASSWORD: change-me
      MYSQL_DATABASE: app
    volumes:
      - mysql-data:/var/lib/mysql

volumes:
  mysql-data:

2. 检查 volume

docker volume ls
docker volume inspect 项目名_mysql-data

如果项目目录改过,需要特别注意 Compose 项目前缀是否变化。项目前缀变化后,新卷名字也会变化。

3. 备份 MySQL

docker compose exec mysql sh -c 'mysqldump -uroot -p"$MYSQL_ROOT_PASSWORD" app' > mysql-app.sql

恢复验证:

cat mysql-app.sql | docker compose exec -T mysql sh -c 'mysql -uroot -p"$MYSQL_ROOT_PASSWORD" app'

如果恢复失败,先处理用户、密码、数据库名、字符集和版本差异,不要进入升级步骤。

4. 检查 Redis

如果 Redis 只是缓存,重建影响有限。如果 Redis 承载队列或会话,需要挂载 /data 并确认持久化策略:

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

云服务器上还要检查安全组和端口暴露,不要把 Redis 直接暴露到公网。

5. 预拉镜像

docker pull docker.1ms.run/mysql:8.4
docker pull docker.1ms.run/redis:7
docker pull docker.1ms.run/nginx:1.27-alpine

预拉通过后,再执行升级:

docker compose pull
docker compose up -d

6. 回滚准备

维护前记录:

  • 旧镜像 tag。
  • 当前 compose.yaml
  • 数据库备份文件。
  • 关键 volume 名称。
  • 恢复验证结果。

小结

ECS 上跑 Compose 服务时,镜像、容器、数据卷要分开处理。容器可以重建,镜像可以重拉,数据卷必须先备份并验证恢复。维护窗口里要解决的是升级,不应该临时排查备份能不能用。

相关文章
|
开发工具
在 uniapp 上使用 mPaaS 的全屏扫码功能
在 uniapp 上使用 mPaaS 的全屏扫码功能
1292 1
|
小程序
uniapp如何分包 & 分包配置后无法读取static文件夹
uniapp如何分包 & 分包配置后无法读取static文件夹
1077 0
uniapp如何分包 & 分包配置后无法读取static文件夹
|
XML JSON 数据可视化
Etcd 可视化管理工具,GUI 客户端
Etcd 可视化管理工具,GUI 客户端
1394 0
|
2月前
|
前端开发 Java Nacos
Nacos 注解全解析:7 个核心注解 + 5 个生产踩坑清单(2026 实测)
Nacos 注解用错,是 90% 微服务 Bug 的根源。本文把注册发现、配置热更新的 7 个核心注解、动态刷新原理和 5 个生产踩坑一次讲透,附可运行代码。
447 2
Nacos 注解全解析:7 个核心注解 + 5 个生产踩坑清单(2026 实测)
|
2月前
|
Web App开发 人工智能 Cloud Native
一人买多用不完,多人分享被封号——"Key池化"破解 AI 订阅共享困局
Claude用户面临“独用浪费、共享封号”困局:Max 20x额度闲置,多人拼车却因IP跳变、指纹泄露等触发风控。Key池化方案通过本地代理+虚拟Key分发,实现额度共享而不共号,规避风控,降低成本(3人仅$200/月),提升安全与体验。
669 7
|
2月前
|
缓存 人工智能 调度
当 AI 从“对话”走向“协作”,谁来管理百万级 Token 的工作记忆?
系统性地拆解了多智能体时代面临的内存与延迟挑战,并深入展示了 Mooncake 作为 KVCache 数据基座的分离架构设计与大规模生产实践。
|
2月前
|
消息中间件 Linux Docker
Windows Docker Desktop 环境下 RabbitMQ 生产级部署完整指南
本文详解Windows下基于Docker Desktop部署RabbitMQ的标准化方案:避开Erlang配置痛点,推荐`rabbitmq:3.13-management-alpine`镜像;涵盖极简测试、持久化部署(必设`--hostname`)、自定义配置三类方案,并重点梳理Windows特有坑点(BOM编码、CRLF换行、guest远程限制等),助力快速搭建稳定本地开发环境。
374 7
|
2月前
|
存储 Kubernetes 监控
阿里云容器服务ACK从零到一:K8s集群配置与生产级应用部署完全指南
本文提供了一份从零开始的阿里云容器服务ACK(Kubernetes)集群配置与应用部署完全指南。首先解析ACK托管版、专有版与Serverless版的架构差异与选型策略,帮助读者根据业务场景做出合理决策。随后详细讲解通过控制台创建ACK托管集群的完整流程,涵盖网络规划(Terway与Flannel对比、CIDR配置)、节点池管理等关键环节。在应用部署层面,深入介绍Deployment、StatefulSet等核心工作负载的YAML编排实践,并通过Service与ALB Ingress实现服务暴露与七层负载均衡。存储管理部分系统讲解基于CSI的云盘动态存储卷与ossfs 2.0的使用方法。安全体
|
2月前
|
Ubuntu 关系型数据库 Docker
Docker 跑 Memos 镜像:私有 Markdown 笔记部署实测记录
Memos 是一款开源、可自托管的轻量笔记工具:镜像仅约20MB,SQLite默认存储,一条 `docker run` 即可启动;浏览器写Markdown、打#标签、按时间线浏览,手机电脑同步,数据完全掌握在自己服务器上。
346 0
Docker 跑 Memos 镜像:私有 Markdown 笔记部署实测记录
|
2月前
|
Shell iOS开发 MacOS
npm全局安装后提示codex command not found的7种解决方法(2026)
2026 年呼声最高的 Claude Code 功能,悄悄在 v2.1.169 上线了,多数人还不知道它切目录时能把提示缓存保住,不是清掉重来。 如果你以前每次想去 git worktree 或者隔壁仓库工作,都得退出 Claude Code 重启——这套仪式从 2026-06-08 起可以扔掉了。新出的 /cd 命令让会话中途切到任何目录,前缀缓存还能活着。对 Claude Opus 4.8(输入 5 美元/M token、缓存读 0.5 美元/M token)来说,这意味着原本要重发的那一堆上下文打了一折。 但”保住缓存”这句话带 3 个星号。这篇把可验证的机制、操作步骤、3 个会让缓