Skip to content

补数演练 runbook ​

难度与前置

难度:中级
前置:已理解 rerun-catchup 里的互斥、级联、限流;本篇是演练操作手册,不重复展开原理。
读完能做什么:按清单跑完一次「干跑 → 小窗口真补 → 复盘」,证明团队能在不炸当日 SLA 的前提下补数。

适用场景 ​

  • 口径变更 / 埋点变更后,首次要回刷历史前
  • 新主题链路上线,值班从未做过级联补数
  • 故障后「敢不敢补」没把握,需要安全演练

不适用:

  • 替代 rerun-catchup 本身(原理与策略以专篇为准)
  • 生产上直接 30 天无限流真补当「演练」
  • 实时状态 rewind(走 Checkpoint / EOS 域)

真实场景(一条) ​

主题链路已按专篇配好幂等与依赖,但从未演练。首次真补 T-3 一天时:

  • 忘了暂停当日同 dt 实例 → 与补数并行写
  • 只补到 DWD,ADS current 未走门禁 → 看板短暂错数

事后补了本 runbook:先干跑清单,再只补 1 个非高峰 dt,全链路验收 + 切/不切 current 写清楚。第二次真补 7 天时,当日 P0 SLA 未违约,看板无脏读。

演练怎么做(步骤清单) ​

0. 声明:本篇 vs 专篇 ​

问题去哪
补数/重跑/追数怎么定义、互斥、级联、限流rerun-catchup
今天这场演练谁拍板、按什么顺序勾清单本 runbook
写是否幂等离线幂等
补完能不能给人看ADS 出数验收

1. 演练前:组班与范围(T-1 填完) ​

角色(可一人多岗,但名字要写上):

角色职责
指挥官开停演练、Go/No-Go
调度操作提交补数、限流、互斥暂停/恢复
数仓核对层间行数/金额、主键
出口守卫ADS/API 门禁与是否切 current
观察员集群队列、P0 任务延迟

范围卡(填空):

text
演练 ID:
窗口:单个 dt = ________(优先选非月末/非大促日)
链路:ODS → … → ADS(表清单附后)
限流:最大并行分区数 = __(建议先 1)
是否切对外 current:是 / 否(首演建议「否」,只写 candidate)
回滚条件:diff > __% 或 P0 延迟 > __ 分钟 → 立即停
值班群 / 记录文档链接:

2. 干跑(不写生产或只读检查) ​

按专篇策略口头/文档过一遍,不提交写任务:

  • [ ] 影响面血缘已列出(专篇 §划定窗口)
  • [ ] 与当日实例互斥方式已选:暂停同 dt / 独立队列 / 锁表约定
  • [ ] 每层写入模式确认为 overwrite/幂等(专篇 §幂等)
  • [ ] 限流与错峰窗口已定(专篇 §追数节奏)
  • [ ] 若涉及口径/埋点变更,变更单已关闭或标明「只补数不改义」

干跑失败 → 禁止进入真补。

3. 真补:最小窗口(建议 1 个 dt) ​

严格按 rerun-catchup 级联,一层一验收:

text
1) 打开互斥(暂停冲突实例或切入补数队列)
2) 补上游 → 验收行数/主键
3) 逐层下游 → 每层验收再往下
4) ADS:跑门禁;首演默认不切 current(只出 candidate)
5) 恢复日常调度 / 解除互斥
6) 记录耗时、队列使用率、是否触碰 P0

操作时禁止:

  • 扩大窗口「顺手多补几天」
  • 跳过某层验收
  • 门禁失败仍切 current

4. Go / No-Go 门闩 ​

检查GoNo-Go(停并回滚互斥)
本层 vs 上游 diff≤ 阈值超阈值
集群 / 队列P0 未告警P0 延迟或排队爆了
对外出口未误切或灰度正常已误切且 diff 差

指挥官口头下令「继续 / 停止」;停止后按专篇回滚策略恢复日常实例。

5. 演练后复盘(当天 30 分钟) ​

写进演练记录(可贴值班文档):

text
演练 ID / 日期 / 参与人:
窗口 dt:
总耗时:
是否触碰 P0 SLA:
层间最大 diff:
是否切 current:
异常与改进(流程/权限/脚本):
下次真补建议窗口与并行度:

改进项进 backlog;未复盘视为演练未完成。

6. 何时升级到「多日真补」 ​

仅当连续 ≥ 2 次 单日演练 Go,且复盘无阻断项:

  • 并行度按专篇限流阶梯上调(如 1 → 2 → 5)
  • 仍与日常互斥;大窗口避开出数高峰
  • 口径类回刷配合 埋点与口径变更 的「是否回刷」结论

常见坑(演练专用) ​

  1. 把生产大回刷当第一次演练
  2. 演练中临时改并行度/扩窗口
  3. 只练调度点击,不练核对与出口门禁
  4. 演练完不恢复互斥,当日任务一直停着
  5. 无指挥官,多人同时点重跑
  6. 复盘只说「成功了」,不定量耗时与 diff

如何验收(这场演练是否算过) ​

项达标标准
干跑清单全勾
真补窗口≤ 约定(首演 1 个 dt)
当日 P0 SLA未违约(或 No-Go 已及时停止)
层间验收每层有记录,diff ≤ 阈值
出口未误切;或灰度/回滚符合 ads-publish
复盘当天完成,改进项有负责人
text
演练通过签字:
指挥官:________  日期:________
「可进行多日真补」:是 / 否

相关面试题 ​

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

  • [ ] 题:首场演练真补窗口为什么限制在 1 个 dt?(考察点:真补窗口≤约定,当日 P0 SLA 不违约或 No-Go)→ 占位:#todo-interview-backfill-drill-window
  • [ ] 题:层间验收怎么才算过?(考察点:每层有记录,diff≤阈值)→ 占位:#todo-interview-backfill-drill-layer-check
  • [ ] 题:演练出口切流有什么红线?(考察点:未误切;或灰度/回滚符合 ads-publish)→ 占位:#todo-interview-backfill-drill-cutover
  • [ ] 题:演练当天复盘缺什么不算过?(考察点:复盘当天完成,改进项有负责人)→ 占位:#todo-interview-backfill-drill-retro

改写说明:操作型 runbook;策略细节一律指向 rerun-catchup,不重写专篇。无未公开公司队列名与表名。