apache-kafka - 在 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 集群中,但只有一个实际运行的工作者/容器。)
解决方案
推荐阅读
- python - How to implement user permission assignment module in Django template?
- heroku - In Heroku, is it possible to assign one env var to another env var?
- java - Is there a way to distinguish fat jar from thin jar?
- javascript - 如何在猫鼬模式中使用异步默认值?
- c - 函数声明问题,K&R问题1-15
- javascript - 检测 window.location.assign() 是否收到响应
- ios - iOS奇怪行为的通用链接
- tensorflow.js - 使用 Tensorflow.js 自定义模型访问标签和置信度值?
- c# - 按接口中定义的顺序对实现类方法进行排序
- regex - 在 Elixir 中,如何将字符串拆分为非单词字符是分隔符,但还允许使用 +、- 等数学运算符?