首页/数据/数据工程与 ETL 速查/回补与重放的设计要点
本包目录(311 条)
管道基础52 条Kafka64 条调度与编排40 条数仓建模52 条数据质量50 条
CDC 与同步53 条

回补与重放的设计要点

回补(backfill)是同步链路的常规操作:故障或口径调整后需要把某时间段数据重算或在目标端重放。设计要点是幂等(重放结果与执行一次一致)、限速(不压垮源与目标)、可观测(进度与差异可核对)、可中断续跑(大回补拆批并记录进度)。

按分区重写(幂等回补示例)

按分区重写(幂等回补示例)
-- 目标端按分区覆盖重写:先覆盖待回补分区,再校验行数
INSERT OVERWRITE TABLE dwd_trade_order_di PARTITION (dt = '2026-10-10')
SELECT ... FROM ods_trade_order_change_log
WHERE dt = '2026-10-10';
幂等重跑结果一致:覆盖写、upsert 或先删后写
顺序先回补历史,再让增量追平;或冻结该时段写入
限速拆批 + 并发上限,避免与在线业务抢资源
验收行数/校验和比对,并记录回补批次与结果
回补与增量同时写同一分区会造成结果不可预期:先冻结或明确先后顺序。

易错点

  • 回补任务不幂等,重跑一次数据翻倍
  • 大回补不做限速与拆批,跨库拉数把源库拖慢影响在线业务

数据来源与参考

  • Apache Airflow 官方文档(Backfill 概念)
  • Kimball《The Data Warehouse Toolkit》(重跑与幂等设计)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌