首页 > 解决方案 > 在 Kafka Connect 间歇性从源读取问题期间,我如何知道我是否遭受数据丢失?

问题描述

我们正在使用Confluent JDBC Source Connector运行 Kafka Connect,以从DB2数据库中读取数据。我们会定期在 Kafka Connect 日志中看到这样的问题:

kafkaconnect-deploy-prod-967ddfffb-5l4cm 2021-04-23 10:39:43.770 ERROR Failed to run query for table TimestampIncrementingTableQuerier{table="PRODSCHEMA"."VW_PRODVIEW", query='null', topicPrefix='some-topic-prefix-', incrementingColumn='', timestampColumns=[UPDATEDATETIME]}: {} (io.confluent.connect.jdbc.source.JdbcSourceTask:404)
com.ibm.db2.jcc.am.SqlException: DB2 SQL Error: SQLCODE=-668, SQLSTATE=57007, SQLERRMC=1;PRODSCHEMA.SOURCE_TABLE, DRIVER=4.28.11
    at com.ibm.db2.jcc.am.b7.a(b7.java:815)
    ...
    at com.ibm.db2.jcc.am.k7.bd(k7.java:785)
    at com.ibm.db2.jcc.am.k7.executeQuery(k7.java:750)
    at io.confluent.connect.jdbc.source.TimestampIncrementingTableQuerier.executeQuery(TimestampIncrementingTableQuerier.java:200)
    at io.confluent.connect.jdbc.source.TimestampIncrementingTableQuerier.maybeStartQuery(TimestampIncrementingTableQuerier.java:159)
    at io.confluent.connect.jdbc.source.JdbcSourceTask.poll(JdbcSourceTask.java:371)

这似乎是连接到 DB2 的间歇性问题,并且是半预期的;由于这个问题范围之外的原因,我们知道两者之间的网络是不可靠的。

但是,我们试图确定的是在这种情况下是否可能发生数据丢失。我发现这篇文章讨论了 Kafka Connect 中的错误处理,但它仅指由于消息损坏而导致的错误,而不是 Kafka Connect 和数据源之间的实际连接。

在这种情况下,我们如何知道连接失败是否导致数据丢失?(即我们的数据源中没有针对目标主题处理的记录)。Kafka Connect 日志中会出现错误吗?Kafka Connect 在出现连接问题时是否总是无限期重试?对其重试是否有任何控制?

(如果重要的话,Kafka Connect 是 2.5 版;它以分布式模式部署在 Kubernetes 集群中,但只有一个实际运行的工作者/容器。)

标签: apache-kafkadb2apache-kafka-connectconfluent-platform

解决方案


推荐阅读