Debezium或JDBC跳过没有主键的表



我在一个容器中有Debezium,用于捕获PostgeSQL数据库记录的所有更改。此外,还有一个融合JDBC容器,用于将所有更改写入另一个数据库。

在源连接器中,定义允许捕获多个表,因此一些表具有主键,而另一些表没有主键。

在接收器连接器中,定义指定pk.mode,如下所示:

"insert.mode": "upsert",
"delete.enabled": "true",
"pk.mode": "record_key",

但是,当源数据库中有一些表上没有键时,接收器连接器会抛出以下消息:

Caused by: org.apache.kafka.connect.errors.ConnectException: PK mode for table 'contex_str_dealer_branch_address' is RECORD_KEY, but record key schema is missing

通常应该有几个选项

  1. 从源中排除没有主键的表
  2. 从接收器中排除没有主键的表
  3. 为具有主键的表指定主键,或为没有主键的表使用所有其他列

有什么方法可以从任何操作中跳过这些表吗?

在debezium中,没有一个参数可以过滤没有主键的表。

如果您事先知道该表,则可以在debeziun连接器源中使用database.exclude.list

在JDBC接收器连接器中,您有两个选项:

忽略,因为没有字段用作主键。

"pk.mode": "none"

或者将使用值结构中的所有字段

"pk.mode": "record_value"

最新更新