备份与恢复

本文介绍数据库备份策略与灾难恢复基线。

自动备份

PostgreSQL 备份

# 每日备份,保留 30 天
0 2 * * * pg_dump -h postgres -U eval752 eval752 | \
  gzip > /backups/eval752_$(date +%Y%m%d).sql.gz

# 清理旧备份
find /backups -name "eval752_*.sql.gz" -mtime +30 -delete

时间点恢复

如需启用 PITR,请开启 WAL 归档:

# postgresql.conf
wal_level = replica
archive_mode = on
archive_command = 'cp %p /archive/%f'

手动备份 / 恢复

Backup

# 完整数据库导出
docker compose exec postgres pg_dump -U eval752 eval752 > backup.sql

# 压缩版
docker compose exec postgres pg_dump -U eval752 eval752 | gzip > backup.sql.gz

Restore

# 从 SQL 文件恢复
docker compose exec -T postgres psql -U eval752 eval752 < backup.sql

# 从压缩文件恢复
gunzip -c backup.sql.gz | docker compose exec -T postgres psql -U eval752 eval752

灾难恢复

RTO(Recovery Time Objective):< 1 小时
RPO(Recovery Point Objective):< 24 小时

恢复流程

  1. 准备新的基础设施(约 10 分钟)
  2. 从备份恢复数据库(约 20 分钟)
  3. 部署应用(约 15 分钟)
  4. 完成验证与测试(约 15 分钟)

生产部署相关内容见 部署指南