如何记录混沌实验的 RTO/RPO 结果?
解读
面试官问“如何记录”,不是让你背定义,而是想看你在真实故障演练闭环里,能否把 Cloud SQL 的可观测性体系、混沌工程平台、国内合规要求三件事串起来,给出一条可落地、可审计、可复盘的链路。回答必须体现:
- 用什么原生工具抓指标;
- 如何把 RTO/RPO 算出来;
- 记录存在哪、格式怎样、谁签字、谁审计;
- 符合等保/银监/证监对日志留存≥180 天的硬性要求。
知识点
- RTO:故障发生到业务重新可用的时间;RPO:故障发生到可接受数据丢失的时间点。
- Cloud SQL 的point-in-time recovery依赖连续归档日志(WAL/Redo),粒度最短 5 分钟,决定 RPO 理论下限。
- Cloud Monitoring 默认采集database/up、replication lag、failover_request等 18 项黄金指标,可用于计算实际 RTO。
- Cloud Audit Logs 的DATA_WRITE事件包含每一次 failover 的operation_id、timestamp、region、target_instance,是法律认可的电子证据。
- 国内账号体系必须使用Cloud Organization + 集团结算账号,否则个人账号无法出具有效审计报告。
- 混沌实验平台(ChaosMesh、Gremlin 或阿里 AHAS)需通过Pub/Sub把实验元数据(实验ID、注入类型、开始/结束时间)同步到BigQuery 中国站(shanghai-region),实现跨云时间轴对齐。
- 最终记录格式要满足等保2.0 第8.2.4 条:“日志字段不可篡改、不可删除、不可人工修改”,因此必须启用Bucket Lock(WORM,保留期 1 年)。
答案
分五步落地,每一步都给出国内云环境可直接复制的配置:
- 实验前:基线快照
在 Cloud SQL 实例开启自动备份窗口(北京时间 02:00–04:00),并通过gcloud sql backups create --async手动触发一致性快照,记录backupId与startTime作为RPO=0的基线。 - 实验中:实时流式打点
把混沌平台发出的故障注入事件通过Pub/Sub topicchaos-event推到Dataflow 中国站作业,作业逻辑:- 解析
injection_start、injection_end; - 调用Monitoring API拉取实例的
failover_completed事件; - 计算RTO = failover_completed.timestamp – injection_start;
- 计算RPO = 最新可用WAL时间戳 – injection_start(WAL 时间戳通过
pg_last_wal_replay_lsn()或mysql-binlog-index拿到)。
结果以Avro格式写入BigQuery 表chaos_rto_rpo.raw,分区字段experiment_id+DATE。
- 解析
- 实验后:不可篡改归档
24 小时内把chaos_rto_rpo.raw导出为Parquet,上传到Cloud Storage 中国多区域桶gs://audit-logs-china,并启用Bucket Lock策略(保留 365 天,ComplianceType = “Governance”),确保等保审计无法删除。 - 出具报告
用Data Studio 国内版模板自动生成PDF 报告,包含:- 实验场景、RTO、RPO、失败原因、改进项;
- SHA256 校验值与Bucket Lock 策略 ID,供第三方审计机构抽查。
- 权责分离
报告经SRE 负责人 + 业务负责人 + 合规专员三签后,存入集团内部 Confluence 审计空间,并同步在腾讯云安骑士或阿里云日志审计做跨云双备,满足证监科技局〔2020〕41 号文“数据多重备份”要求。
拓展思考
- 如果实例跨北京/上海双区域,BigQuery 表需使用CMEK 中国密钥加密,否则数据出境合规会被监管挑战。
- 对SQL Server 企业版,Always On 的分布式可用性组RPO 可能<10 秒,但故障转移群集 IP 需备案,记得在工信部域名备案系统提前申请VIP 变更豁免。
- 未来想自动化,可把Dataflow 作业封装成 Terraform 模块,通过Cloud Build 中国触发器实现“混沌实验即代码”,每次 MR 自动跑 RTO/RPO 回归,0 人工干预。