Debezium 心跳表未更新

Posted

技术标签:

【中文标题】Debezium 心跳表未更新【英文标题】:Debezium heartbeat table not updating 【发布时间】:2021-10-24 19:46:56 【问题描述】:

已经有一个问题Debezium Heartbeat Action not firing,但它没有解决我的问题。

这是我的 postgres 源连接器配置。它每 5 秒后生成一次心跳事件。我已经通过检查 kafka 主题确认了这一点,但问题是它没有更新数据库心跳表中的行。有什么建议吗?


    "name": "postgres-localdb-source-connector",
    "config": 
        "connector.class": "io.debezium.connector.postgresql.PostgresConnector",
        "tasks.max": "1",
        "database.hostname": "postgres",
        "database.port": "5432",
        "slot.name":"debezium",
        "database.user": "postgres",
        "database.password": "postgres",
        "database.dbname" : "postgres",
        "database.server.name": "dbserver2",
        "database.history.kafka.bootstrap.servers": "kafka:9092",
        "database.history.kafka.topic": "schema-changes.dbserver2",
        "schema.include": "inventory",
        "tables.include": "customers,heartbeat",
        "publication.autocreate.mode" : "filtered",
        "max.batch.size":"20480",
        "max.queue.size":"81920",
        "poll.interval.ms":"100",
        "heartbeat.interval.ms": "5000",
        "heartbeat.action.query" :"INSERT INTO heartbeat (id, ts) VALUES (1, NOW()) ON CONFLICT(id) DO UPDATE SET ts=EXCLUDED.ts;"
     

【问题讨论】:

【参考方案1】:

尝试与 DDL 共享您的 heartbeat 表。你的heartbeat 表有主键吗?如果表定义了 PK,Debezium 只会跟踪更新和删除。还要尝试分享您的 debezium 版本,因为此属性会因版本而异。

尝试不带 WHERE 的 UPDATE 来测试问题是否出在您的查询中。检查您的模式中的心跳是公共的还是库存的,并在查询中添加为前缀。

UPDATE inventory.heartbeat SET ts = NOW();

在您的tables.include 上为每个表添加一个带有架构的前缀。

"tables.include": "inventory.customers,inventory.heartbeat",

tables.include 上尝试更改为tables.include.list。来源:https://debezium.io/documentation/reference/1.6/connectors/mysql.html#:~:text=connector%20configuration%20property.-,table.include.list,-empty%20string

"tables.include.list": "inventory.customers,inventory.heartbeat",

【讨论】:

以上是关于Debezium 心跳表未更新的主要内容,如果未能解决你的问题,请参考以下文章

Debezium系列之:把多个数据库中多张表的数据发送到一个Kafka topic中

使用 debezium 确定交易的结束

Debezium kafka 连接连接器未成功更新

使用表白名单选项更新 Debezium MySQL 连接器

Debezium系列之:基于Debezium实现高可靠性高实时性秒级别的数据响应系统

Debezium的增量快照