第 11 章 · 备份恢复与 RPO/RTO
本章目标:建立 demo-mall 可恢复的备份体系——Namespace 配置、MySQL 逻辑备份、PVC 快照;完成 季度恢复演练 并记录 RTO;与 ch05 周检、PaaS ch15 生产 HA 衔接。
学时建议:2.5~3 小时(含 2 小时跟练)
前置:ops-deploy ch05 日检备份项;PaaS ch15;小紫云计算 · 管理 → 备份恢复。
11.1 场景说明
| 项目 | 内容 |
|---|---|
| 背景 | 某次误操作 kubectl delete deployment demo-api -n staging-app;Git 有 YAML 但 DBA 不确定 DB 能否恢复到同一时间点 |
| 痛点 | 备份任务显示成功,但从没人做过 恢复演练 |
| 你的角色 | 运维,制定 RPO/RTO 台账并执行 drill |
| 本章任务 | prod-app 导出;staging MySQL 恢复演练 RTO<30min |
| 约束 | Secret 导出需加密存储;演练在隔离 Namespace |
11.2 学完你能
| 能力 | 验收标准 |
|---|---|
| RPO/RTO | 解释术语并填 demo-mall 目标表 |
| 备份矩阵 | 6 类对象的方式/频率/保留 |
| Namespace 导出 | CLI 与小紫界面两种方式 |
| MySQL 备份 | mysqldump 命令与校验 |
| 恢复演练 | 7 步 drill 并记录 RTO |
| 备份告警 | 3 条监控规则含义 |
11.3 核心概念
| 术语 | 含义 | demo-mall 目标 |
|---|---|---|
| RPO | 可接受 数据丢失 时间窗口 | DB ≤15min(binlog 增量) |
| RTO | 可接受 服务恢复 时间 | 核心 API ≤30min |
| 备份 | 时间点副本 | 每日全量+增量 |
| 演练 | 证明 能 恢复 | 每季一次 |
你应该看到:台账文档 docs/ops/backup-rpo-rto.md 被团队引用。
11.4 备份对象矩阵
| 对象 | 方式 | 频率 | 保留 |
|---|---|---|---|
| K8s YAML/Helm | Git + Namespace 导出 | 每次变更 + 日备 | Git 永久 |
| MySQL | mysqldump / xtrabackup | 每日 02:00 | 30 天 |
| Redis | RDB+AOF | 每日 | 7 天 |
| PVC 文件 | Longhorn 快照 | 每日 | 14 天 |
| 镜像 | Registry tag | 每次构建 | 90 天 |
| 配置 Secret | 加密 vault / Sealed | 变更时 | 按合规 |
11.5 逐步跟练 · 第一步:Namespace 导出(约 25 分钟)
小紫界面:
- 管理 → 备份恢复 → Namespace 导出
- 选择
prod-app→ 导出 YAML → 下载至加密存储
CLI 等价:
kubectl get all,cm,secret,ingress,pvc -n prod-app -o yaml \
> backup/prod-app-$(date +%F).yaml
注意:
- Secret 明文导出 禁止 存 Git 公开库
- 使用 GPG 加密或企业 vault
你应该看到:文件大小与昨日对比 ±20% 内(BackupSizeDrop 告警阈值 ch11.7)。
11.6 逐步跟练 · 第二步:MySQL 逻辑备份(约 30 分钟)
在 prod-middleware 或备份 Job Pod 执行:
mysqldump -h mysql.prod-middleware.svc -u backup -p \
--single-transaction --routines --triggers \
demo_mall > /backup/demo_mall_$(date +%F_%H%M).sql
| 参数 | 含义 |
|---|---|
--single-transaction | InnoDB 一致性快照,不锁表 |
--routines --triggers | 存储过程与触发器 |
校验:
ls -lh /backup/demo_mall_*.sql # 与昨日比
head -20 /backup/demo_mall_*.sql # 含 CREATE TABLE
你应该看到:管理 → 备份恢复 任务历史 Success;文件 > 几 MB(视数据量)。
11.7 逐步跟练 · 第三步:恢复演练(约 60 分钟)
7 步 drill(staging 隔离环境):