table.include.list配置参数在Debezium Postgres连接器中不起作用



我正在使用Debezium Postgres连接器来捕获Postgres表中的更改。

此连接器的文档https://debezium.io/documentation/reference/connectors/postgresql.html

提到配置参数

table.include.list

然而,当我将此参数的值设置为"config.abc"时。即使在那之后,配置架构中的两个表(即abc和def(的更改也会被流式传输。

我想这样做的原因是,我想为这两个表中的每一个创建2个单独的连接器,以拆分负载并更快地更改数据流。

这是一个已知的问题吗?无论如何要克服这一点?

这里也有同样的问题(Debezium版本:1.1.0.Final和postgresql:111.13.0(。下面是我的配置:

{
"connector.class": "io.debezium.connector.postgresql.PostgresConnector",
"transforms.unwrap.delete.handling.mode": "rewrite",
"slot.name": "debezium_planning",
"transforms": "unwrap,extractInt",
"include.schema.changes": "false",
"decimal.handling.mode": "string",
"database.schema": "partsmaster",
"transforms.unwrap.drop.tombstones": "false",
"transforms.unwrap.type": "io.debezium.transforms.ExtractNewRecordState",
"value.converter": "org.apache.kafka.connect.json.JsonConverter",
"key.converter": "org.apache.kafka.connect.converters.LongConverter",
"database.user": "************",
"database.dbname": "smartng-db",
"transforms.extractInt.type": "org.apache.kafka.connect.transforms.ExtractField$Key",
"database.server.name": "ASLog.m3d.smartng-db",
"database.port": "***********",
"plugin.name": "pgoutput",
"column.exclude.list": "create_date, create_user, change_date, change_user",
"transforms.extractInt.field": "planning_id",
"database.hostname": "************",
"database.password": "*************",
"name": "ASLog.m3d.source-postgres-smartng-planning",
"transforms.unwrap.add.fields": "op,table,lsn,source.ts_ms",
"table.include.list": "partsmaster.planning",
"snapshot.mode": "never"
}

另一个表partsmaster.basic中的更改导致此连接器失败,因为属性planning_id在表partsmaster.basic中不可用。

我需要为每张桌子单独的连接器。table.include.list不起作用。table.exclude.list都没有。

我最后的办法是为每个连接器使用一个单独的Postgres出版物。但我仍然希望我能在这里找到一个即时的配置解决方案,或者被指出我缺少的东西。在以前的版本中,我使用了table.whitelist,没有遇到任何问题。

解决方案:

  1. 为每个表创建单独的发布:

    为表格部件创建出版物dbz_planning master.planning;

  2. 删除以前的复制插槽:

    选择pg_drop_replication_slot('debezium_planning'(;

  3. 更改连接器配置:

    {"slot.name":"dbz_planning";,"publication.name":"计划出版";}

等等!

Debezium文档显示

因此,除非连接器在同一组表上工作,否则每个连接器都需要一个唯一的发布

最新更新