如何检查 debezium 快照是不是完整

Posted

技术标签:

【中文标题】如何检查 debezium 快照是不是完整【英文标题】:How to check if debezium snapshot is complete如何检查 debezium 快照是否完整 【发布时间】:2021-04-24 11:59:12 【问题描述】:

我需要在 Debezium Postgres 连接器中向 table.whitelist 添加更多表。我找到了提到here 的方法。它表明:

快照完成后,使用更新的白名单表列表启动原始连接器

但是如何才能知道快照是否完整呢?

【问题讨论】:

【参考方案1】:

尾随 Connect 集群使用的 connect.offsets.storage 主题,并记下连接器中指定的 server.id

对于完整的初始快照,您应该会在快照完成后看到以下条目。

 
    "file":"my-database-bin.000004",
    "pos":143

在处理事件并赶上最新的二进制日志时,它将根据服务器 ID 更新偏移量的状态。


    "ts_sec": 1610704790,
    "file": "my-database-bin.000004",
    "row": 2,
    "pos": 134,
    "server_id": 2001186
    ...

它现在正在赶上主二进制日志并提交偏移量的事实确认快照已完成,因为只有在完成快照后,连接器才会监视源偏移量。

【讨论】:

【参考方案2】:

有多种方法可以做到这一点。您可以检查 Kafka Connect 日志,或者在收到的最新事件中读取 payload.source.snapshot 的布尔值,或者使用 JMX,其中每个连接器的 MBean 都具有 SnapshotCompleted 布尔属性。

【讨论】:

以上是关于如何检查 debezium 快照是不是完整的主要内容,如果未能解决你的问题,请参考以下文章

Debezium系列之:基于数据库信号表和Kafka信号Topic两种技术方案实现增量快照incremental技术的详细步骤

Debezium的基本使用(以MySQL为例)

带有 column.include.list 的 Debezium 连接器

Debezium 初始数据快照和相关实体顺序

ES Sink 连接器 debezium 因错误而停止

Debezium的增量快照