灾难恢复规划Skill planning-disaster-recovery

这个技能专注于灾难恢复的规划与实施,包括RTO/RPO定义、数据库备份策略、Kubernetes集群恢复、跨区域复制设置和混沌工程测试。适用于设计和实施备份系统、确保高可用性和数据安全。关键词:灾难恢复、备份策略、恢复测试、云原生、DevOps。

DevOps 0 次安装 2 次浏览 更新于 3/23/2026

name: 灾难恢复规划 description: 通过RTO/RPO规划、数据库备份、Kubernetes灾难恢复、跨区域复制和混沌工程测试,设计和实施灾难恢复策略。在实施备份系统、配置时间点恢复、设置多区域故障转移或验证灾难恢复程序时使用。

灾难恢复

目的

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

何时使用此技能

在以下情况调用此技能:

  • 定义恢复时间目标(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小时,RPO < 5分钟
→ 主动-主动复制,持续归档,自动故障转移
→ 工具:Aurora Global DB,GCS多区域,pgBackRest PITR
→ 成本:最高

RTO 1-4小时,RPO 15-60分钟
→ 热备用,增量备份,自动故障转移
→ 工具:pgBackRest,WAL-G,RDS多可用区
→ 成本:高

RTO 4-24小时,RPO 1-6小时
→ 每日全备份+增量备份,跨区域备份
→ 工具:pgBackRest,Velero,Restic
→ 成本:中等

RTO > 24小时,RPO > 6小时
→ 每周全备份+每日增量备份,单区域
→ 工具:pg_dump,mysqldump,S3版本控制
→ 成本:低

步骤2:按用例选择备份工具

用例 主要工具 替代工具 关键特性
PostgreSQL生产 pgBackRest WAL-G PITR,压缩,多仓库
MySQL生产 Percona XtraBackup WAL-G 热备份,增量
MongoDB Atlas备份 mongodump 持续备份,PITR
Kubernetes集群 Velero ArgoCD + Git PV快照,调度
文件/对象备份 Restic Duplicity 加密,去重
跨区域复制 Aurora Global DB RDS只读副本 支持主动-主动

数据库备份模式

PostgreSQL使用pgBackRest

用例: 生产PostgreSQL,RPO < 5分钟

快速开始: 参见examples/postgresql/pgbackrest-config/

配置持续WAL归档,将全/差异/增量备份到S3/GCS/Azure。安排每周全备份,每日差异备份。启用PITR使用pgbackrest --stanza=main --delta restore

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

MySQL使用Percona XtraBackup

用例: 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/

云特定灾难恢复模式

AWS

关键服务:

  • RDS:自动备份(30天保留),PITR,多可用区
  • Aurora Global DB:跨区域主动-被动,自动故障转移
  • S3 CRR:跨区域复制,15分钟SLA(复制时间控制)

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

GCP

关键服务:

  • Cloud SQL:PITR带有7天事务日志,30天保留
  • GCS多区域:自动跨100+英里分离复制
  • 区域高可用性:区域内同步复制

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

Azure

关键服务:

  • Azure备份:虚拟机备份,灵活保留(每日/每周/每月/每年)
  • Azure站点恢复:跨区域虚拟机复制,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全局数据库(主动-主动)
  • ASG扩展自动化(试点灯)

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

测试灾难恢复

混沌工程

目的: 通过控制故障注入验证灾难恢复程序。

测试场景:

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

工具: Chaos Mesh,Gremlin,Litmus,Toxiproxy

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

自动化灾难恢复演练

每月运行测试:

./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天→标准-IA,90天→Glacier,365天→深度归档

不可变备份: 使用S3对象锁或Azure不可变Blob存储进行勒索软件防护。

详细指南: 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)

灾难恢复运行手册步骤: 检测故障 → 验证次要 → 提升 → 更新DNS → 通知 → 文档化

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

与其他技能集成

相关技能

前提技能:

  • 基础设施即代码:提供备份基础设施,灾难恢复区域
  • Kubernetes操作:用于Velero的K8s集群设置
  • 秘密管理:备份加密密钥、凭证

并行技能:

  • 数据库-PostgreSQL:PostgreSQL配置和操作
  • 数据库-MySQL:MySQL配置和操作
  • 可观测性:备份监控、警报
  • 安全加固:安全备份存储、访问控制

消费者技能:

  • 事件管理:在事件期间调用灾难恢复程序
  • 合规框架:满足法规要求

技能链示例

基础设施即代码 → 秘密管理 → 灾难恢复 → 可观测性
       ↓                        ↓                   ↓                ↓
  创建S3桶        存储加密密钥在Vault   配置备份        监控作业
  提供数据库      管理凭证           设置复制       警报失败
  设置VPC         管理凭证           测试灾难恢复演练  跟踪指标

最佳实践

✓ 定期测试恢复(关键系统每月) ✓ 自动化备份监控和警报 ✓ 加密备份在静止和传输中 ✓ 实施3-2-1备份规则 ✓ 定义和测量RTO/RPO ✓ 运行混沌实验验证灾难恢复 ✓ 文档化恢复程序 ✓ 在不同区域存储备份 ✓ 使用不可变备份进行勒索软件防护 ✓ 在CI/CD中自动化灾难恢复测试

不做

✗ 假设备份有效而不测试 ✗ 将所有备份存储在单个区域 ✗ 跳过保留策略定义 ✗ 忘记加密敏感数据 ✗ 仅依赖云提供商备份 ✗ 忽略备份监控 ✗ 仅在高负载下从主数据库进行备份 ✗ 存储加密密钥与备份一起

参考文档

  • RTO/RPO规划: references/rto-rpo-planning.md
  • 数据库备份: references/database-backups.md
  • Kubernetes灾难恢复: references/kubernetes-dr.md
  • 云灾难恢复模式: 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.mdexamples/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.shexamples/chaos/region-failure-test.sh

脚本

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