GH GambleHub

Backaps和灾难恢复

Bacaps和Disaster Recovery

1)定义和目标

备份是用于后续恢复的数据/配置的统一副本(来自随机删除,错误,密码处理器,灾难)。
DR(灾难恢复)是在发生重大事故(火灾,区域损失,大规模破坏)后将基础设施/服务恢复到SLO工人的过程。
RPO(恢复点目标)-时间允许的最大数据丢失(例如15分钟)。
RTO(恢复时间目标)-服务恢复时间目标(例如30分钟)。

关键原则:复制≠备份。复制可以快速"涂抹"所有副本的错误和加密。备份是一个孤立的,经过验证的,可能不变的副本。

2)数据分类和临界水平

将资产分为以下几类:
  • Tier-0(重要):交易数据库、付款、资产负债表会计、秘密/PKI。
  • Tier-1(关键):服务组合,队列,CI/CD工件,容器注册表。
  • Tier-2(重要):分析、报告、次索引、日志归档。
  • Tier-3(辅助):缓存、时间数据(可以通过重建恢复)。

对于每个类,定义RPO/RTO、保留期、不变性要求和位置。

3)存储策略: 规则3-2-1-1-0

3份数据副本(prod+2备份)。
2种不同的介质/存储类型。
1份官方站点副本(其他区域/云)。

1 immutable/air-gap (WORM/Object Lock/Tape).

恢复检查(常规测试)中有0个错误。

4)备用类型

Full是完整副本。缓慢/昂贵,但所有策略的基础。
Incremental-与最后一个备份的区别。最佳体积。
Differential-与最后一个完全不同。恢复速度更快,空间更多。
Snapshot是卷/磁盘的即时映射(EBS/ZFS/LVM)。需要App consistent snapshots (quiesce)。
PITR(点对点恢复)是用于回滚到精确时间/LSN的基本备份+杂志(WAL/binlog)。
对象/文件/图形-适用于特定数据类型(VM映像、S3对象、DB转储)。

5)备用的一致性

Crash-consistent:突然关闭后如何-适合无状态/可日志化的FS。
应用程序一致性:应用程序"冻结"操作(fsfreeze/pre-post scripts) →保证完整性。
DB一致性:备份工具API (pgBackRest, XtraBackup),热备份模式,检查点冻结。

6)加密、密钥和访问

对所有副本进行at rest和in transit加密。
KMS/HSM中的密钥,按策略轮换(90/180天),按周围环境分开的密钥。
职责划分:谁创建/删除备份≠谁可以解密/读取它们。
不要在与目标副本相同的信任域中保留解密密钥。

7)不可更改的副本和ransomware保护

Object Lock/WORM (Compliance/Governance)带有还原和法律保留。
空中差距:隔离/离线存储(磁带、离线云/帐户)。
"延迟激活"删除策略,MFA-Delete,备份箱的独立帐户,禁止公众访问。
在安装前对恶意软件/损害指标进行验证。

8)频率,时间表和重播

GFS(Grandfather-Father-Son):白天增量,每周满员/多夫,每月满员,长期存储。
RPO规定了增量和WAL/binlog存档的频率(例如,每5-15分钟)。
存储:关键-≥ 35-90天+每月12-36个月(法律要求)。
季节性高峰是单独的控制点(在促销/发行之前)。

9) DR模型和脚本

Active-Active:两个区域都为流量服务。最小的RTO,数据捕获需要严格的冲突策略。
Active-Passive(热/热):热-展开和同步(RTO分钟),热-部分准备(RTO时钟)。
冷:存储副本和Terraform/Ansible/映像,我们按需提起(RTO 24+)。
DRaaS:其他区域的VM/网络/地址提供商编排。

10)failover编排和恢复优先事项

启动优先级:网络/VPN/DNS → 秘密/KMS →基地/群集→ 队列/kesh →应用程序→ 外围/CDN →分析。
自动化:脚本/运行手册操作,Terraform/Ansible/Helm/ArgoCD的DR环境配置文件。
数据:DB PITR → reindex/replica → warm缓存→启动带有电路兼容性标志的服务。
DNS/GSLB:提前TTL降级,验证切换方桉。

11)恢复测试(备份验证)

定时还原测试:N%后备样本、"沙箱"部署、电路自动验证/不变量。
完整的DR-drill(游戏日):禁用区域/AZ、RTO/RPO检查实时流量(或阴影流量)。
完整性测试:哈希目录、校验和,尝试读取所有图层(full+chain)。
基准报告:时间、步骤、异常、目标差距大小、修复。

12)核心技术的实践

数据库

PostgreSQL:基于backup+WAL归档(PITR),pgBackRest/Barman工具;复制插槽,"lsn"控制。
MySQL/MariaDB:Percona XtraBackup/Enterprise Backup,binlog存档。
MongoDB:用于逻辑拷贝+大型集合snapshot的"mongodump";PITR的Oplog。
Redis:关键的RDB/AOF(如果Redis不仅是kesh),而且更常见的是从原点+snapshot进行逻辑重建以应对事故。
Kafka/Pulsar:元数据备份(ZK/Kraft/BookKeeper),磁盘快照,拓扑/标志镜像。

Kubernetes

用于资源/卷的etcd snapshot+Velero(CSI snapshots)。
秘密备份/PKI分开(Vault snapshot)。
单独的映像注册表:文物存储策略(immutable tags)。

VM和文件系统

ZFS:"zfs snapshot"+"zfs send | zstd | send-recv"增量,检查"scrub"。
LVM/EBS快照,带有前/后脚本(app-consistent)。
对象存储:版本+对象锁。

13)对备份版本进行编目和控制

目录(元数据编目):何处、何时完成哈希、KMS密钥、所有者、保留期。

Метки/теги: `env=prod|stage`, `system=db|k8s|vm`, `tier=0|1|2`, `retention=35d|1y`.

金色检查点(Gold): 在迁移/DDL/大规模发布之前。

14)可观察性和指标

工作成功率:成功率/被淹没率,原因。
备份/恢复时间,窗口宽度。
RPO事实:期刊档案(WAL/binlog)p95。
完整性:验证链的比例,哈希对账错误。
成本:按类存储量、重复数据消除/压缩比。
DR准备:演习的频率和结果(通过/失败)。

15)访问策略和合规性

备用存储的单独帐户/项目;基于NaC原理的访问(不允许从prod帐户中删除/加密)。
访问/更改逻辑(audit trail),大规模删除/重复更改的差异。
法规遵从性:GDPR(删除权vs归档),PCI DSS(加密,密钥和细分),本地监管机构。

16)反模式

"有复制品-这意味着不需要备份。"

没有immutable/air-gap: 一个错误/verodonos擦除一切。
Backaps与prod位于同一帐户/区域。
从不检查恢复(备份"在验证之前就已死亡")。
没有编目和版本控制→事故中的溷乱。
所有环境共享加密密钥。
没有DB应用程序一致模式的snapshots。
后备窗口与峰重叠(影响p99和SLO)。

17)实施清单(0-60天)

0-10天

系统/数据清单,临界类。
按等级列出RPO/RTO目标。
启用full+incremental for Tier-0/1,WAL/binlog存档。
释放备份:一个单独的区域/帐户+启用KMS加密。

11-30天

为关键副本配置可变性(Object Lock/WORM)。
输入编目,标签,报告;等于日记的失误和失误。
第一个DR-drill:在孤立的环境中恢复单独的后备服务。

31-60天

自动化运行手册:Terraform/Ansible/Helm DR配置文件。
定期还原测试(每周/每月)+季度full DR脚本。
优化成本:重复数据消除/压缩/存储生命周期。

18)成熟度量

还原测试:≥ 1/ned for Tier-0(有选择),≥ 1/mes-完整脚本。

Immutable coverage для Tier-0/1 = 100%.

RPO实际p95 ≤目标(例如,≤ 15分钟)。
DR演习≤目标的RTO实际(例如,≤ 30分钟)。
编译目录=100%(描述并验证了每个备份)。
事件恢复:从检测到启动恢复的时间。

19)示例(snippets)

PostgreSQL-PITR策略(想法):
bash base backup once a day pgbackrest --stanza = prod --type = full backup archive WAL every 5 minutes pgbackrest --stanza = prod archive-push restore to time pgbackrest --stanza = prod restore --type = time --target =" 2025-11-03 14:00:00 + 02"
MySQL是一个增量循环:
bash xtrabackup --backup --target-dir=/backup/full-2025-11-01 xtrabackup --backup --incremental-basedir=/backup/full-2025-11-01 --target-dir=/backup/inc-2025-11-02 xtrabackup --prepare --apply-log-only --target-dir=/backup/full-2025-11-01 xtrabackup --prepare --target-dir=/backup/full-2025-11-01 --incremental-dir=/backup/inc-2025-11-02
Kubernetes-Velero(宣言思想):
yaml apiVersion: velero. io/v1 kind: Backup metadata: { name: prod-daily }
spec:
includedNamespaces: ["prod-"]
ttl: 720h storageLocation: s3-immutable
S3对象锁(生命周期策略示例):
json
{
"Rules": [{
"ID": "prod-immutable",
"Status": "Enabled",
"NoncurrentVersionExpiration": { "NoncurrentDays": 365 }
}]
}

20)通信和运营角色

Incident Commander, Comms Lead, Ops Lead, DB Lead, Security.

Stakholder/调节器/用户的消息模板。
后遗症与动作:他们失去了分钟,在哪里可以改善自动化。

21)结论

可靠的备份和DR回路不是"复制",而是循环:RPO/RTO的分类→目标→多级和可修改的副本→自动运行手册",并→定期的恢复和练习。坚持3-2-1-1-0,将复制与备份分开,加密和隔离密钥,记录和验证。然后,即使是"黑天鹅"也将变成一个可控制的过程,可预测的停机时间和最低的数据丢失。

Contact

联系我们

如需任何咨询或支持,请随时联系我们。我们随时准备提供帮助!

开始集成

Email — 必填。Telegram 或 WhatsApp — 可选

您的姓名 可选
Email 可选
主题 可选
消息内容 可选
Telegram 可选
@
如果填写 Telegram,我们也会在 Telegram 回复您。
WhatsApp 可选
格式:+国家代码 + 号码(例如:+86XXXXXXXXX)。

点击按钮即表示您同意数据处理。