mcpField
P
planning-disaster-recovery

planning-disaster-recovery

github.com/ancoleman云与 DevOps52574 次安装46 周前更新
代码仓库

关于 planning-disaster-recovery

planning-disaster-recovery 是面向基础设施与数据库团队的灾难恢复规划技能,提供备份、复制、故障切换和恢复测试指导。内容覆盖数据库、Kubernetes 与云环境,并包含 RTO/RPO 规划及自动化脚本示例。

主要功能

  1. 01RTO/RPO 目标与恢复策略规划
  2. 02数据库备份及时间点恢复
  3. 03Kubernetes 集群备份与恢复
  4. 04跨区域复制和故障切换模式
  5. 05混沌实验与恢复演练
  6. 06备份监控、保留与合规检查

适用场景

  1. 01制定关键系统的恢复目标
  2. 02配置数据库备份和时间点恢复
  3. 03演练 Kubernetes 或区域故障恢复
  4. 04检查备份完整性与保留策略

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/ancoleman/ai-design-components --skill planning-disaster-recovery

安装后在 Claude Code 中输入/planning-disaster-recovery确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

outputs.yaml
examples/chaos/
db-failover-test.sh
region-failure-test.sh
examples/postgresql/pgbackrest-config/
README.md
examples/runbooks/
database-failover.md
region-failover.md
references/
chaos-engineering.md
cloud-dr-patterns.md
compliance-retention.md
cross-region-replication.md
database-backups.md
kubernetes-dr.md
rto-rpo-planning.md
runbook-automation.md
scripts/
check-retention.sh
dr-drill.sh
generate-dr-report.sh
test-restore.sh
validate-backup.sh

详细介绍

灾难恢复

目的

提供全面指导,帮助设计灾难恢复(DR)策略、实施备份系统,并验证数据库、Kubernetes 集群和云基础设施的恢复流程。帮助团队定义 RTO/RPO 目标、选择合适的备份工具、配置自动故障转移,并通过混沌工程测试 DR 能力。

何时使用此技能

在以下情况下调用此技能:

  • 定义恢复时间目标(RTO)和恢复点目标(RPO)
  • 实施支持时间点恢复(PITR)的数据库备份
  • 设置 Kubernetes 集群备份和恢复工作流
  • 配置跨区域复制以实现高可用性
  • 通过混沌实验测试灾难恢复流程
  • 满足合规要求(GDPR、SOC 2、HIPAA)
  • 自动化备份监控和告警
  • 设计多云灾难恢复架构

核心概念

RTO 和 RPO 基础知识

恢复时间目标(RTO): 灾难发生后,可接受的最长停机时间;超过此时间后,业务影响将变得不可接受。

恢复点目标(RPO): 以时间衡量的最大可接受数据丢失量。定义恢复必须回溯到多早之前。

关键性等级:

  • 第 0 级(任务关键型): RTO < 1 小时,RPO < 5 分钟
  • 第 1 级(生产环境): RTO 1-4 小时,RPO 15-60 分钟
  • 第 2 级(重要): RTO 4-24 小时,RPO 1-6 小时
  • 第 3 级(标准): RTO > 24 小时,RPO > 6 小时
3-2-1 备份规则

在 2 种不同类型的介质上保留数据的 3 个副本,其中 1 个副本存放在异地。

实施示例:

  • 主副本:生产数据库
  • 次级副本:本地备份存储
  • 第三副本:云备份(S3/GCS/Azure)
备份类型

完整备份: 所有数据的完整副本。创建速度最慢,恢复速度最快。

增量备份: 仅备份自上次备份以来的更改。创建速度最快,但恢复时需要完整备份和所有增量备份。

差异备份: 自上次完整备份以来的更改。在存储需求和恢复速度之间取得平衡。

持续备份: 通过 WAL/binlog 归档实现实时或近实时备份。RPO 最低。

快速决策框架

步骤 1:根据 RTO/RPO 选择策略
RTO < 1 hour, RPO < 5 min
→ Active-Active replication, continuous archiving, automated failover
→ Tools: Aurora Global DB, GCS Multi-Region, pgBackRest PITR
→ Cost: Highest

RTO 1-4 hours, RPO 15-60 min
→ Warm standby, incremental backups, automated failover
→ Tools: pgBackRest, WAL-G, RDS Multi-AZ
→ Cost: High

RTO 4-24 hours, RPO 1-6 hours
→ Daily full + incremental, cross-region backup
→ Tools: pgBackRest, Velero, Restic
→ Cost: Medium

RTO > 24 hours, RPO > 6 hours
→ Weekly full + daily incremental, single region
→ Tools: pg_dump, mysqldump, S3 versioning
→ Cost: Low
步骤 2:根据使用场景选择备份工具
使用场景主要工具替代方案主要功能
PostgreSQL 生产环境pgBackRestWAL-GPITR、压缩、多存储库
MySQL 生产环境Percona XtraBackupWAL-G热备份、增量备份
MongoDBAtlas Backupmongodump持续备份、PITR
Kubernetes 集群VeleroArgoCD + GitPV 快照、调度
文件/对象备份ResticDuplicity加密、重复数据删除
跨区域复制Aurora Global DBRDS Read Replica支持主动-主动

数据库备份模式

使用 pgBackRest 备份 PostgreSQL

使用场景: RPO < 5 分钟的生产 PostgreSQL 环境

快速入门: 参见 examples/postgresql/pgbackrest-config/

配置持续 WAL 归档,并将完整、差异和增量备份存储到 S3/GCS/Azure。安排每周完整备份、每日差异备份。启用 PITR:pgbackrest --stanza=main --delta restore。

详细指南: references/database-backups.md#postgresql

使用 Percona XtraBackup 备份 MySQL

使用场景: 需要热备份的 MySQL 生产环境

快速入门: 参见 examples/mysql/xtrabackup/

执行完整备份(xtrabackup --backup --parallel=4)和增量备份,并归档二进制日志以支持 PITR。恢复需要依次完成解压、准备、应用增量备份和回拷操作。

详细指南: references/database-backups.md#mysql

MongoDB 备份

快速入门: 使用 mongodump --gzip --numParallelCollections=4 进行逻辑备份,或使用 MongoDB Atlas 实现支持 PITR 的持续备份。

详细指南: references/database-backups.md#mongodb

Kubernetes 灾难恢复

用于集群备份的 Velero

快速开始: velero install --provider aws --bucket my-backups

配置定时备份(每日完整备份,每小时备份生产命名空间),并创建 PV 快照。使用 velero restore create --from-backup <name> 进行恢复。支持选择性恢复(命名空间映射、存储类重新映射)。

示例: examples/kubernetes/velero/ 详细指南: references/kubernetes-dr.md

etcd 备份

快速开始: ETCDCTL_API=3 etcdctl snapshot save /backups/etcd/snapshot.db

定期创建 etcd 快照,以便在控制平面故障时恢复。恢复时需要使用快照数据重新创建集群。

示例: examples/kubernetes/etcd/

特定云平台的 DR 模式

AWS

关键服务:

  • RDS:自动备份(保留 30 天)、PITR、多可用区
  • Aurora Global DB:跨区域主动-被动部署,支持自动故障转移
  • S3 CRR:跨区域复制,SLA 为 15 分钟(Replication Time Control)

示例: examples/cloud/aws/ 详细指南: references/cloud-dr-patterns.md#aws

GCP

关键服务:

  • Cloud SQL:支持 PITR,保留 7 天事务日志,数据保留 30 天
  • GCS Multi-Regional:在相距 100 英里以上的区域间自动复制
  • 区域高可用:在区域内进行同步复制

详细指南: references/cloud-dr-patterns.md#gcp

Azure

关键服务:

  • Azure Backup:灵活设置保留期限的 VM 备份(每日/每周/每月/每年)
  • Azure Site Recovery:跨区域 VM 复制,每 4 小时创建一次应用一致性快照
  • 地理冗余存储:自动复制到次要区域

详细指南: references/cloud-dr-patterns.md#azure

跨区域复制模式

模式RTORPO成本用例
主动-主动< 1 分钟< 1 分钟高两个区域均承载流量
主动-被动15-60 分钟5-15 分钟中用作故障转移备用区域
试点灯10-30 分钟5-15 分钟低次要基础设施规模最小化
温备5-15 分钟5-15 分钟中高次要区域缩减规模运行

实现示例:

  • PostgreSQL 流复制(主动-被动)
  • Aurora Global Database(主动-主动)
  • ASG 自动扩容(试点灯)

详细指南: references/cross-region-replication.md

灾难恢复测试

混沌工程

目的: 通过受控注入故障来验证 DR 流程。

测试场景:

  • 数据库故障转移(停止主节点,测量提升耗时)
  • 区域故障(阻断网络,触发 DNS 故障转移)
  • Kubernetes 恢复(删除命名空间,使用 Velero 恢复)

工具: Chaos Mesh、Gremlin、Litmus、Toxiproxy

示例: examples/chaos/db-failover-test.sh、examples/chaos/region-failure-test.sh 详细指南: references/chaos-engineering.md

自动化 DR 演练

每月运行测试:

./scripts/dr-drill.sh --environment staging --test-type full
./scripts/test-restore.sh --backup latest --target staging-db

合规性和保留期限

法规保留期限要求
GDPR1-7 年欧盟数据驻留、被遗忘权
SOC 21 年以上安全删除、访问控制
HIPAA6 年加密、PHI 保护
PCI DSS3 个月-1 年安全删除、季度审查

使用 S3/GCS 生命周期策略实现: 30 天→Standard-IA、90 天→Glacier、365 天→Deep Archive

不可变备份: 使用 S3 Object Lock 或 Azure Immutable Blob Storage 防范勒索软件。

详细指南: references/compliance-retention.md

监控和告警

关键指标: 备份成功率、耗时、距上次备份的时间、RPO 违规、存储利用率

Prometheus 告警: VeleroBackupFailed、VeleroBackupTooOld、BackupSizeTrend

验证脚本:

./scripts/validate-backup.sh --backup latest --verify-integrity
./scripts/check-retention.sh --report-violations
./scripts/generate-dr-report.sh --format pdf

自动化和运行手册

**自动化备份计划:**使用 Cron 为 pgBackRest 设置计划(每周完整备份、每日差异备份),为 Velero 设置计划(K8s)

**DR 运行手册步骤:**检测故障 → 验证备用环境 → 提升为主环境 → 更新 DNS → 通知 → 记录

详细指南:references/runbook-automation.md

与其他技能集成

相关技能

前置条件:

  • infrastructure-as-code:预配备份基础设施和 DR 区域
  • kubernetes-operations:为 Velero 设置 K8s 集群
  • secret-management:备份加密密钥和凭据

并行技能:

  • databases-postgresql:PostgreSQL 配置和运维
  • databases-mysql:MySQL 配置和运维
  • observability:备份监控和告警
  • security-hardening:保护备份存储安全并进行访问控制

使用方技能:

  • incident-management:在事件期间调用 DR 流程
  • compliance-frameworks:满足法规要求
技能串联示例
infrastructure-as-code → secret-management → disaster-recovery → observability
       ↓                        ↓                   ↓                ↓
  Create S3 buckets      Store encryption     Configure backups   Monitor jobs
  Provision databases    keys in Vault        Set up replication  Alert failures
  Setup VPCs             Manage credentials   Test DR drills      Track metrics

最佳实践

应该做

✓ 定期测试还原(关键系统每月一次) ✓ 自动化备份监控和告警 ✓ 对静态和传输中的备份进行加密 ✓ 实施 3-2-1 备份规则 ✓ 定义并衡量 RTO/RPO ✓ 运行混沌实验以验证 DR ✓ 记录恢复流程 ✓ 将备份存储在不同区域 ✓ 使用不可变备份防范勒索软件 ✓ 在 CI/CD 中自动化 DR 测试

不应该做

✗ 未经测试就假定备份有效 ✗ 将所有备份存储在同一区域 ✗ 跳过保留策略的定义 ✗ 忘记加密敏感数据 ✗ 仅依赖云服务提供商的备份 ✗ 忽略备份监控 ✗ 在负载较高时仅从主数据库执行备份 ✗ 将加密密钥与备份存储在一起

参考文档

  • RTO/RPO 规划:references/rto-rpo-planning.md
  • 数据库备份:references/database-backups.md
  • Kubernetes DR:references/kubernetes-dr.md
  • 云 DR 模式:references/cloud-dr-patterns.md
  • 跨区域复制:references/cross-region-replication.md
  • 混沌工程:references/chaos-engineering.md
  • 合规要求:references/compliance-retention.md
  • 运行手册自动化:references/runbook-automation.md

示例

  • 运行手册:examples/runbooks/database-failover.md、examples/runbooks/region-failover.md
  • PostgreSQL:examples/postgresql/pgbackrest-config/、examples/postgresql/walg-config/
  • MySQL:examples/mysql/xtrabackup/、examples/mysql/walg/
  • Kubernetes:examples/kubernetes/velero/、examples/kubernetes/etcd/
  • 云:examples/cloud/aws/、examples/cloud/gcp/、examples/cloud/azure/
  • 混沌:examples/chaos/db-failover-test.sh、examples/chaos/region-failure-test.sh

脚本

  • scripts/validate-backup.sh:验证备份完整性
  • scripts/test-restore.sh:自动化还原测试
  • scripts/dr-drill.sh:运行完整 DR 演练
  • scripts/check-retention.sh:验证保留策略
  • scripts/generate-dr-report.sh:生成合规报告

评论

支持 Markdown