关于 planning-disaster-recovery
planning-disaster-recovery 是面向基础设施与数据库团队的灾难恢复规划技能,提供备份、复制、故障切换和恢复测试指导。内容覆盖数据库、Kubernetes 与云环境,并包含 RTO/RPO 规划及自动化脚本示例。
主要功能
- 01RTO/RPO 目标与恢复策略规划
- 02数据库备份及时间点恢复
- 03Kubernetes 集群备份与恢复
- 04跨区域复制和故障切换模式
- 05混沌实验与恢复演练
- 06备份监控、保留与合规检查
适用场景
- 01制定关键系统的恢复目标
- 02配置数据库备份和时间点恢复
- 03演练 Kubernetes 或区域故障恢复
- 04检查备份完整性与保留策略
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ ancoleman/ ai-design-components --skill planning-disaster-recovery安装后在 Claude Code 中输入/planning-disaster-recovery确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
outputs.yamlexamples/chaos/db-failover-test.shregion-failure-test.shexamples/postgresql/pgbackrest-config/README.mdexamples/runbooks/database-failover.mdregion-failover.mdreferences/chaos-engineering.mdcloud-dr-patterns.mdcompliance-retention.mdcross-region-replication.mddatabase-backups.mdkubernetes-dr.mdrto-rpo-planning.mdrunbook-automation.mdscripts/check-retention.shdr-drill.shgenerate-dr-report.shtest-restore.shvalidate-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 生产环境 | pgBackRest | WAL-G | PITR、压缩、多存储库 |
| MySQL 生产环境 | Percona XtraBackup | WAL-G | 热备份、增量备份 |
| MongoDB | Atlas Backup | mongodump | 持续备份、PITR |
| Kubernetes 集群 | Velero | ArgoCD + Git | PV 快照、调度 |
| 文件/对象备份 | Restic | Duplicity | 加密、重复数据删除 |
| 跨区域复制 | Aurora Global DB | RDS 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
跨区域复制模式
| 模式 | RTO | RPO | 成本 | 用例 |
|---|---|---|---|---|
| 主动-主动 | < 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
合规性和保留期限
| 法规 | 保留期限 | 要求 |
|---|---|---|
| GDPR | 1-7 年 | 欧盟数据驻留、被遗忘权 |
| SOC 2 | 1 年以上 | 安全删除、访问控制 |
| HIPAA | 6 年 | 加密、PHI 保护 |
| PCI DSS | 3 个月-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:生成合规报告