Skip to content

数据事故复盘怎么写(时间线 → 影响面 → 根因 → 门禁回补) ​

难度与前置

难度:进阶
前置:有日批/准实时主题表与告警通道;能按 告警与值班 完成止血与销警。
读完能做什么:按「时间线 → 影响面 → 根因 → 门禁回补」填完一份可归档复盘单,并留下带数字的验收与防再发门禁(不是价值观课或空话 5Why)。

适用场景 ​

  • P0/P1 数据事故销警后 24~48h 内要写短复盘并进周报
  • 错误数已对外(看板/投放后台/合作方),需要影响面清单与纠正口径
  • 同类告警反复出现,需要把「临时重跑」升级为永久门禁
  • 补数/回刷后要证明「不会再以同样方式翻倍或漏出」

不适用:

  • 值班接警与即时处置步骤本身(见 告警与值班)
  • 日常 DQ 规则分级与认领闭环专文(见 质量闭环)
  • 5Why / 鱼骨图方法论课、文化口号与「问责秀」
  • 未发生数据错误、仅任务偶发超时且无下游影响的纯运维抖动(记值班笔记即可,不必套本模板)

真实场景(一条) ​

短剧投放组 ads_ad_daily_report_1d(投放日报 ADS)某日对外消耗金额比渠道后台高约 2.1 倍。业务按看板调预算,半日后发现异常。

现场还原(虚构通用例):

  1. 值班按 告警与值班 认领:量级告警曾响过,被「先看看」跳过;ADS 无发布门禁
  2. 止血:公告「看板数不可信」→ 切只读旧分区 / 停对外 API → 锁定可疑 dt
  3. 根因:补数窗口对 DWD 插了两遍分区(无 离线幂等 覆盖写),下游 DWS/ADS 按「追加」叠加;对账规则存在但差异超阈未阻断发布(见 对账、ADS 出数验收)
  4. 恢复:按 补数/重跑 幂等回刷可疑分区 → 与渠道对账 diff 落入阈内 → 重新发布 ADS → 业务确认

复盘后回补:补数必须覆盖写 + 发布前强制对账 PASS + 量级 P0 阻断。观察期 30 天:同类翻倍工单 0;MTTR 从「半日发现」降到「告警 20 分钟内止血」。

怎么做(步骤清单) ​

1. 先开单:最小字段(禁止只写「已重跑成功」) ​

text
数据事故复盘单(最小)
单号 / 级别:P0 □  P1 □     主题 owner:________  值班:________
对象:库.表 / ADS / 看板 / 对外接口 ________
业务日 / 分区:________     发现来源:□告警 □业务 □对账 □抽检
联动单:告警单号 ____  补数单号 ____  发布单号 ____
状态:□止血中 □已恢复待复盘 □复盘关闭(门禁已上)

级别与认领时效对齐 告警与值班;质量问题单粒度对齐 质量闭环(表 + 分区 + 规则)。

2. 时间线:发现 → 止血 → 恢复(必须带时刻) ​

按上海时区写墙钟,禁止「上午/下午」模糊词。

text
时间线(可复制)
T0 发现:____(谁 / 哪条告警或哪句业务反馈)
T1 认领:____(≤ 约定响应;多人时谁主责)
T2 止血:____(公告内容一句话;停写/切旧/熔断哪条链路)
T3 影响确认:____(见下节影响面初稿时刻)
T4 根因锁定:____(技术点一句话 + 证据链接:日志/SQL/diff)
T5 修复落地:____(回刷分区范围;是否幂等)
T6 恢复验收:____(对账/行数/看板抽检数字)
T7 业务销警公告:____
T8 复盘关闭:____(门禁 PR/规则 ID:________)

止血优先于完美根因:先让错误数停止扩散,再深挖。补数动作对接 补数/重跑;大规模或陌生窗口先对照 补数演练 的干跑清单,禁止无窗无验真补生产。

3. 影响面:表 / 看板 / 对外(可勾选清单) ​

影响面漏写 = 恢复后还有人在用脏数。

层勾选对象示例错误形态是否已纠正对外沟通
仓表□ODS/DWD/DWS 分区空/翻倍/口径错是/否内部
ADS□ads_* 日表发布脏分区是/否内部+看板
看板 / 报表□投放日报、ROI 板展示错数时段是/否业务群公告
对外 API / 导出□合作方拉取、邮件导出下游已消费是/否需撤回/更正函
决策动作□调预算、停投、结算不可逆动作评估中升级业务负责人

辅助动作:

  1. 用 改表前影响评估 的下游列表做事故后反向扫描(谁读了错误分区)
  2. 量级异常对照 行数/字节量监控;口径/金额对照 对账
  3. 对外出口纠正必须再走一遍 ADS 出数验收 门禁,禁止「修完表就当已发布」
text
影响面摘要(对外可用一句话)
错误窗口:从 ____ 到 ____(上海时区)
错误指标:________  偏差:约 ____% 或 ____ 倍
已消费方:________  已采取:□撤回 □更正公告 □重推正确分区
未覆盖风险:________(谁可能还缓存了旧数)

4. 根因:技术 + 流程(忌甩锅,要可验证) ​

根因写两行:技术机制(可复现)+ 流程缺口(为何门禁没拦住)。禁止只写人名。

根因桶(打标用)技术例子流程例子
写入非幂等 / 双跑分区追加两次补数无覆盖约定、无演练
依赖/调度上游未 READY 就跑依赖边缺失,见 调度依赖
口径/Join赠款未剔除、膨胀无对账原因码、无发布验收
门禁被跳过DQ 失败仍成功「赶 SLA」口头放行
监控盲区无量级/无对账告警未分级或无人认领
变更未评估改主键/改过滤无 lineage-impact 签字

证据最小集(复盘附件):

  1. 失败/成功实例 ID、重跑次数
  2. 分区行数前后、对账 diff 前后(数字)
  3. 相关 PR/配置 diff 或「无变更」声明
  4. 告警是否鸣响、是否被关闭/忽略

口诀:人的失误要落到「哪条门禁缺失」;改门禁,不改「下次注意」。

5. 门禁回补:永久防再发(可勾选,必须有负责人与到期日) ​

临时止血 ≠ 关闭;关闭条件 = 永久控制已上线或有明确豁免到期日。

text
门禁回补清单(最小)
□ 写入:[离线幂等](/warehouse/idempotent) 覆盖写 / 去重键;补数窗演练记录见 backfill-drill
□ 质量:P0 规则(行数翻倍、对账超阈)失败阻断下游;闭环见 closed-loop
□ 对账:源 vs 仓 / 层间差异原因码强制;见 reconciliation
□ 量级:分区行数/字节量阈值;见 volume-monitor
□ 发布:ADS 验收 PASS 才切流;见 ads-publish
□ 调度:依赖边补齐;失败告警分级;见 dependency / alert-oncall
□ 变更:破坏性改表走 lineage-impact
□ 演练:下一周期安排一次相关 backfill-drill 或值班桌面推演
负责人:________  到期:________  验证方式(数字):________

回补验收:用「若再出现同因,哪条门禁会在对外前拦住」一句话自测;答不上来 = 未关闭。

常见坑(至少这些) ​

  1. 复盘只写「已重跑成功」
    无时间线、无影响面、无门禁 → 下周同告警。

  2. 时间线用「上午发现」无墙钟
    MTTR 算不清,周报不可比。

  3. 影响面只写本表,漏看板/API/已调预算
    仓绿了,业务仍按错数决策。

  4. 根因写成「某某手滑」
    无法防再发;要写缺哪条幂等/对账/发布门禁。

  5. 门禁回补停留在群公告「以后注意」
    无规则 ID、无 PR、无到期日 = 未回补。

  6. 为赶 SLA 跳过对账/量级,事后用复盘自我感动
    跳过本身应进根因桶「门禁被跳过」。

  7. 补数未幂等又双跑,用第三次重跑「修」第二次事故
    对照 idempotent 与 backfill-drill。

  8. 把本篇写成 5Why 概念课或问责会纪要,清单字段全空

如何验收(带数字的前后对比) ​

项改前(示例)改后(目标)
复盘含完整四段(时间线/影响面/根因/门禁)口头或「已重跑」一句话100% P0/P1 事故有单
发现→止血墙钟(P0)如 > 2h 或未知≤ 约定(如 30min)且有记录
对外错误窗口时长如半日缩短;有公告时刻
同因重复事故(观察 30 天)≥ 10
门禁回补按期完成率未知100%;逾期升级
恢复后对账 / 行数验收无数字diff 入阈;有 SQL 记录
跳过门禁出数次数≥ 10
text
事故复盘验收记录(可复制)
单号:________  级别:P0/P1  分区/窗口:________
时间线:T0 ____ → T2 止血 ____ → T6 恢复 ____ → T8 关闭 ____
影响面:表 ____;看板 ____;对外 ____;决策动作:有/无
根因桶:________  证据:行数 ____→____;对账 diff ____→____
门禁:规则/PR ________  负责人 ____  验证日 ____
观察期:____ 天内同因工单数:____
签字(主题 owner):________  日期:________

Checklist:

  • [ ] 时间线含发现/止血/恢复墙钟(上海时区)
  • [ ] 影响面覆盖仓表 + ADS/看板 + 对外 + 已发生决策
  • [ ] 根因含技术机制 + 流程缺口,不单点点名
  • [ ] 门禁回补有负责人、到期日、验证数字
  • [ ] 链到 alert-oncall / 对账 / volume-monitor / closed-loop / ads-publish / backfill-drill / lineage-impact / rerun-catchup / dependency / idempotent,不重写专篇
  • [ ] 无未公开公司项目名与真实内部数据
  • [ ] 未写成 5Why 概念课或空话价值观

相关专篇(互链,不重写) ​

你要做的事看哪篇
接警、分级、公告、销警告警与值班
规则认领与同分区复验质量闭环
源仓/层间差异与原因码对账设计
行数翻倍/空分区监控行数/字节量监控
对外发布前验收ADS 出数验收
安全补数与演练补数/重跑、补数演练
下游谁被坑了改表前影响评估
依赖边与 READY调度依赖
写入覆盖与去重离线幂等
本篇只定事故复盘四段模板与门禁回补验收,不替代上述专篇

相关面试题 ​

题库小程序链接待定;先用站内锚点占位。

  • [ ] 题:P0/P1 复盘单四段最少要齐哪几块?(考察点:时间线/影响面/根因/门禁回补齐全)→ 占位:#todo-interview-incident-postmortem-four-parts
  • [ ] 题:时间线为何必须记发现→止血→恢复墙钟(上海时区)?(考察点:MTTR 可测;P0 发现→止血有记录)→ 占位:#todo-interview-incident-postmortem-timeline
  • [ ] 题:根因如何拆成技术机制 + 流程缺口,而不是只点名个人?(考察点:双根因 + 证据数字)→ 占位:#todo-interview-incident-postmortem-rootcause
  • [ ] 题:门禁回补怎样验收「同因不再发」?(考察点:负责人/到期日/验证数字;观察期同因=0)→ 占位:#todo-interview-incident-postmortem-gate

改写说明:清单体例对齐表生命周期 / 访问脱敏;主链为时间线 → 影响面 → 根因 → 门禁回补;刻意不写 5Why 概念课。虚构通用短剧投放 ADS 错误发例,无未公开公司数据。