全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-21 6 分钟 ✍️ juanwangdev

备份与灾难恢复

容器化应用需要完整备份和恢复策略,下面介绍实施方案。

备份对象

需要备份的内容

  1. 数据卷 (Volumes):数据库、缓存、应用数据
  2. 配置文件:Compose 文件、环境变量
  3. 镜像:自定义镜像保存到仓库
  4. 密钥:TLS 证书、密码

数据卷备份

完整备份

Bash
# 备份数据卷
docker run --rm \
  -v my-data:/data:ro \
  -v $(pwd):/backup \
  alpine \
  tar czf /backup/my-data-$(date +%Y%m%d).tar.gz -C /data .

增量备份

Bash
# 使用 rsync 增量
docker run --rm \
  -v my-data:/data:ro \
  -v $(pwd):/backup \
  alpine/rsync \
  -av --delete /data/ /backup/latest/

配置文件备份

Bash
# 备份 Compose 文件
cp docker-compose.yml backup/docker-compose-$(date +%Y%m%d).yml

# 备份环境变量
cp .env.backup backup/.env-$(date +%Y%m%d)

# 版本控制
git add backup/
git commit -m "Backup $(date +%Y%m%d)"

镜像备份

Bash
# 保存镜像到文件
docker save my-app:latest > my-app-$(date +%Y%m%d).tar

# 推送到备用仓库
docker tag my-app:latest backup-registry.com/my-app:latest
docker push backup-registry.com/my-app:latest

恢复流程

数据恢复

Bash
# 创建新卷
docker volume create my-data-restored

# 从备份恢复
docker run --rm \
  -v my-data-restored:/data \
  -v $(pwd):/backup \
  alpine \
  tar xzf /backup/my-data-20240101.tar.gz -C /data

# 启动应用
docker compose up -d

完整恢复

Bash
# 1. 恢复配置文件
cp backup/docker-compose.yml .
cp backup/.env .

# 2. 恢复数据卷
docker volume create db-data
docker run --rm -v db-data:/data -v $(pwd):/backup alpine \
  tar xzf /backup/db-data.tar.gz -C /data

# 3. 启动应用
docker compose up -d

# 4. 验证恢复
docker compose ps
curl http://localhost:8080/health

RTO/RPO

定义

  • RTO (Recovery Time Objective):恢复时间目标(系统中断到恢复的最大时间)
  • RPO (Recovery Point Objective):恢复点目标(可接受的最大数据丢失时间)

策略

级别RTORPO备份频率成本
关键<1h<5min持续
重要<4h<1h每小时
一般<24h<24h每天

灾难演练

Bash
#!/bin/bash
# disaster-recovery-test.sh

echo "=== 灾难恢复演练 ==="

# 1. 停止所有容器
docker compose down -v

# 2. 删除所有数据
docker volume prune -f

# 3. 从备份恢复
echo "从备份恢复..."
./restore.sh

# 4. 启动应用
docker compose up -d

# 5. 验证服务
sleep 30
curl -f http://localhost:8080/health
if [ $? -eq 0 ]; then
  echo "✅ 恢复成功"
else
  echo "❌ 恢复失败"
  exit 1
fi

要点总结

  • 备份对象:数据卷、配置文件、镜像、密钥
  • 数据卷使用 tar 打包备份,支持完整和增量备份
  • 恢复流程:恢复配置 → 恢复数据 → 启动 → 验证
  • RTO 定义恢复时间目标,RPO 定义可接受数据丢失
  • 定期灾难演练验证备份有效性,确保 RTO/RPO 达标

📝 发现内容有误?点击此处直接编辑

← 上一篇 健康检查与自愈
下一篇 → 故障排查工具箱
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库