首页/数据/数据工程与 ETL 速查/Debezium 位点存储与重置
CDC 与同步53 条

Debezium 位点存储与重置

Debezium 的消费位点存在 Kafka Connect 的 offset 存储主题(connect-offsets)里,包含 binlog 文件名与位点或 GTID,连接器重启后从该点继续;位点按源端实例标识区分,换 server.id 会被当作新环境触发重新快照。

Debezium 位点存在哪

Debezium 的消费位点存在 Kafka Connect 的 offset 存储主题(默认 connect-offsets)里,内容包括 binlog 文件名与偏移,或 GTID 与事务信息。连接器重启后从该位点继续消费,不会重新做快照。位点按源端实例标识区分,所以更换实例标识会被当作新环境处理,直接触发一次新的快照。

基本信息

存储位置Kafka Connect 的 offset.storage.topic,默认 connect-offsets
内容连接器位点:文件名与偏移、或 GTID 与事务信息
重启行为从上次位点继续,不重新做快照
重置方式删除连接器后重建并选择快照模式,或按官方工具调整位点

典型使用场景

  • 连接器重启验证:确认是位点续传而不是重新快照
  • 误删位点:评估是全量重来还是能找回原来的位点
  • 更换实例标识:确认是否会被当成新环境触发快照
  • 迁移演练:把位点主题一起迁移并验证续传
  • 故障排查:通过 REST 接口查看连接器与任务状态

查看状态与位点主题

查看状态与位点主题
# 查看连接器与任务状态
curl -s http://kafka-connect:8083/connectors/mysql-cdc-orders/status

# 查看 offset 主题内容(只读排查,不要手改生产)
kafka-console-consumer.sh --bootstrap-server kafka1:9092 \
  --topic connect-offsets --from-beginning --property print.key=true | head

位点相关行为

操作结果风险
重启连接器从已提交位点续读不会跳过数据
删除并重建连接器按新配置重新开始可能重做快照或重复消费
删除 offset 记录位点丢失退化为重新快照
更换源端实例标识被当作新环境触发一次新的快照流程
直接手改 connect-offsets 很容易写坏 JSON 结构,导致连接器无法启动;需要重置时优先走「删除并重建连接器加选择快照模式」的标准路径。
重建连接器时如果不清理旧位点,它会自动续跑到原位,想着重放历史却往往得不到预期结果;重建前先明确是「续传」还是「重来」。
位点主题里同时保存着多个连接器的记录,按连接器名与源端标识分组;迁移环境时如果只复制了业务主题而漏掉位点主题,新环境会从启动模式重新开始,表现为一次意外的全量快照。

易错点

  • 重建连接器时保留旧位点,本想重放却直接续跑,白等一场
  • 误删 offset 记录,把「续传」变成了重新快照
  • 手改 connect-offsets 的 JSON 写错格式,连接器起不来且报错难懂
  • 更换源端实例标识却没意识到会触发新快照,造成一次意外的全量导出

数据来源与参考

  • Kafka Connect 官方文档(offset storage)
  • Debezium 官方文档(How Debezium connectors work:offsets)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌