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

brtdzjyr  于 2023-06-29  发布在  PostgreSQL
关注(0)|答案(2)|浏览(186)

我正在使用Debezium Postgres连接器来捕获postgres表中的更改。
此连接器https://debezium.io/documentation/reference/connectors/postgresql.html的文档
提到一个配置参数

table.include.list

但是,当我将此参数的值设置为'config.abc'时。即使在这之后,配置模式中的两个表(即abc和def)的更改也会被流式传输。
我这样做的原因是,我想为两个表中的每个表创建两个单独的连接器,以分割负载并更快地更改数据流。
这是已知问题吗?无论如何要克服这?

tkqqtvp1

tkqqtvp11#

同样的问题在这里(Debezium版本:1.1.0.Final和postgresql:11.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. exclusion.list都没有。
我最后的办法是为每个连接器使用单独的Postgres Publication。但我仍然希望我能在这里找到一个立即的配置解决方案,或者被指出我错过了什么。在以前的版本中,我使用table.whitelist没有问题。
解决方案:
1.为每个表创建单独的发布:
CREATE PUBLICATION dbz_planning FOR TABLE partsmaster.planning;
1.删除上一个复制插槽:
选择pg_drop_replication_slot('debezium_planning');
1.更改连接器配置:
{“slot.name“:“dbz_planning”,“publication.name“:“planning_publication”}
瞧!

lb3vh1jj

lb3vh1jj2#

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

相关问题