【问题标题】:Debezium Mysql Connector Failed with IllegalStateException for history topic with infinite retentionDebezium Mysql 连接器因 IllegalStateException 而失败,历史主题具有无限保留
【发布时间】:2020-11-30 17:30:15
【问题描述】:

我们运行了一个 Debezium MySQL 连接器,其中历史主题已经无限保留。但奇怪的是,连接器突然失败,出现以下异常

"org.apache.kafka.connect.errors.ConnectException: java.lang.IllegalStateException: 
The database history couldn't be recovered. 
Consider to increase the value for database.history.kafka.recovery.poll.interval.ms

我注意到的另一件事是,由于在被监控的数据库中创建和删除临时表(没有被 debezium 连接器跟踪),有大量消息被插入到历史主题中。这些消息会是连接器无法读取历史主题消息的原因吗?我们考虑为历史主题启用日志压缩,但注意到一些建议不要启用相同的问题。 https://issues.redhat.com/browse/DBZ-239

删除历史主题并以schema_recovery 模式重新启动连接器可以很好地重新启动连接器,但想知道可以采取哪些措施来避免这些类型的中断。是否有任何选项只允许为被监控的表存储 DDL 消息。

【问题讨论】:

    标签: mysql apache-kafka-connect cdc debezium


    【解决方案1】:

    我认为现在有一个选项取决于您使用的 Debezium 版本,database.history.store.only.captured.tables.ddl

    我自己没有尝试过,但我正在寻找类似的东西。该文档说明了以下内容;

    一个布尔值,指定连接器是否应记录所有 DDL 语句 true 仅记录那些与 Debezium 正在捕获其更改的表相关的 DDL 语句。设置为 true 时要小心,因为如果您更改捕获其更改的表,则可能需要丢失数据。 安全的默认值为 false。

    我猜如果您在连接器中以严格的方式控制您正在监控的表,将其设置为 true 是安全的。

    另一方面,为了恢复,您可能想尝试提高“database.history.kafka.recovery.poll.interval.ms”的值(默认为 100 毫秒)。

    祝你好运!

    【讨论】:

      猜你喜欢
      • 2019-06-15
      • 2020-08-09
      • 2019-01-10
      • 2023-02-11
      • 2019-02-16
      • 2020-11-03
      • 2023-03-14
      • 2020-01-05
      • 1970-01-01
      相关资源
      最近更新 更多