Postgresql 带TimescaleDB扩展的Debezium连接器

Postgresql 带TimescaleDB扩展的Debezium连接器,postgresql,apache-kafka,apache-kafka-connect,debezium,timescaledb,Postgresql,Apache Kafka,Apache Kafka Connect,Debezium,Timescaledb,我在检测Postresql hyper tableTimescaleDB扩展上的更改时遇到问题 设置: 我已经安装了PostResqlver11.10,带有TimeScaledBver1.7.1扩展。 我有两个表,我想用安装在Kafka Connect上的Debeziumver 1.3.1连接器来监视它们,以便捕获数据更改 表是table1和table2hyper,但table2hyper是超表 在Kafka Connect中创建Debezium连接器后,我可以看到每个表的两个主题created

我在检测Postresql hyper tableTimescaleDB扩展上的更改时遇到问题

设置:

我已经安装了PostResqlver11.10,带有TimeScaledBver1.7.1扩展。 我有两个表,我想用安装在Kafka Connect上的Debeziumver 1.3.1连接器来监视它们,以便捕获数据更改

表是table1和table2hyper,但table2hyper是超表

在Kafka Connect中创建Debezium连接器后,我可以看到每个表的两个主题createdone:

A kconnect.public.table 1 B kconnect.public.table2hyper 当使用kafka console consumer为主题A消费消息时,我可以在表1中看到行更新后的消息

但当使用来自主题Btable2hyper表更改的消息时,例如在table2hyper表中的行更新之后,不会发出任何消息

Initialy Debezium connector对table2hyper表中的行进行快照,并将其发送到主题BI。使用kafka console consumer时,BI可以查看主题B中的消息,但在初始快照之后所做的更改不会发出

为什么在table2hyper的初始快照之后,我无法看到后续的更改

连接器创建有效负载:

{
    "name": "alarm-table-connector7",
    "config": {
        "connector.class": "io.debezium.connector.postgresql.PostgresConnector",
        "tasks.max": "1",
        "database.hostname": "xxx",
        "database.port": "5432",
        "database.user": "xxx",
        "database.password": "xxx",
        "database.dbname": "xxx",
        "database.server.name": "kconnect",
        "database.whitelist": "public.dev_db",
        "table.include.list": "public.table1, public.table2hyper",
        "plugin.name": "pgoutput",
        "tombstones.on.delete":"true",
        "slot.name": "slot3",
        "transforms": "unwrap",
        "transforms.unwrap.type":"io.debezium.transforms.ExtractNewRecordState",
        "transforms.unwrap.drop.tombstones":"false",
        "transforms.unwrap.delete.handling.mode":"rewrite",
        "transforms.unwrap.add.fields":"table,lsn,op"
    }
}

提前谢谢

尝试了一段时间后,我没有成功地使用connector从hyper table流式传输数据。我使用的是1.3.1版。并升级至最新的1.4.1。没有帮助

然而,我确实成功了

就我的研究和测试而言,这是结论,如有必要,请随时纠正我:

Debezium在插入、更新和删除普通表时工作 删除事件 Confluent connector仅捕获插入事件,无需组合 用于检测更改的某些列以及在普通和 hyperTimescaleDB表。
我们从未用TimescaleDB测试过Debezium。我建议您检查TimescaleDB更新是否存在于逻辑rpelication插槽中。如果是的话,在技术上应该可以让Debezium处理这些事件。如果没有,则根本不可能。

在当前活动的复制插槽上摆弄pg_waldump后,我发现WAL日志中存在更改。更新超表中的行列导致日志:。。。rmgr:Heap len rec/tot:262/7326,tx:431132,lsn:7/DF86DA70,prev 7/DF86DA38,desc:HOT_UPDATE off 31 xmax 431132;新关闭32 X最大0,blkref 0:rel 1663/100256/100315 blk 1 FPW。。。在列更新之后,当使用select*from pg_replication_slots检查活动复制插槽时,*_lsn列增加;所以我想说Debezium没有选择超表更新。如果使用pg_Recvlologic工具,您会看到什么?首先,我在两个表上创建了连接器。一个是超表格,另一个不是。超表格上的更新不会传播到主题。然后我删除了连接器,并使用相同的复制槽debezium3和连接器创建的相同发布dbz_发布来获取数据。但两个表的更新都没有给出任何输出。有没有关于我做错了什么的建议?pg_recvlogical-d XXX-U YYY-W-slot debezium3-start-o proto_version=1-o publication_names=dbz_publication-P pgoutput-f-上面说没有proto_version=1,但我们只支持协议1或更高版本这是更详细的输出@吉里佩切尼