Debezium PostgresConnector 实例化主题,因为表中没有数据

Posted

技术标签:

【中文标题】Debezium PostgresConnector 实例化主题,因为表中没有数据【英文标题】:Debezium PostgresConnector instantiate topics as there is no data in tables 【发布时间】:2021-10-05 19:38:59 【问题描述】:

我正在创建一个 CDC Postgres.source --> Kafka / Debezium --> Postgres.sink。

源主题创建良好,但仅当表有数据时。 即使没有数据,有没有办法实例化所有主题。 因为我想用 maven 命令下载所有 AVRO 模式:

mvn schema-registry:download

我的配置:


  "name": "postgres-source",
  "config": 
    "connector.class":"io.debezium.connector.postgresql.PostgresConnector",
    "tasks.max":"1",
    "database.hostname": "postgres-source",
    "database.port": "5432",
    "database.user": "postgres",
    "database.password": "postgres",
    "database.dbname" : "postgres",
    "database.server.name": "postgres",
    "database.history.kafka.bootstrap.servers": "kafka:9092",
    "database.history.kafka.topic": "schema-changes.customers",
    "key.converter": "org.apache.kafka.connect.storage.StringConverter",
    "value.converter": "io.confluent.connect.avro.AvroConverter",
    "key.converter.schemas.enable": "false",
    "value.converter.schemas.enable": "true",
    "value.converter.schema.registry.url": "http://schema-registry:8081",
    "transforms": "unwrap",
    "transforms.unwrap.type": "io.debezium.transforms.ExtractNewRecordState"
  

【问题讨论】:

【参考方案1】:

主题不与模式关联,关系是另一种方式,因此没有什么可以单独从数据库中“实例化”它们。

如果您想在启动管道之前创建 Kafka 主题,则需要其他一些执行方法

【讨论】:

【参考方案2】:

如果我可以添加来自 OneCricketeer 的答案,则模式附加到记录,而不是主题。您可以拥有一个 Kafka 主题,其中包含具有不同模式的记录(在某些方面理想地兼容)。

由于模式依赖于记录,因此需要先将数据发布到 debezium。我建议首先使用其他工具创建架构,或者如果您有单独的环境可用于通过编写虚拟行而不污染主题来生成架构。

【讨论】:

以上是关于Debezium PostgresConnector 实例化主题,因为表中没有数据的主要内容,如果未能解决你的问题,请参考以下文章

debezium postgres 找不到`io/debezium/util/IoUtil`

SQL Server 的 Debezium 连接器,并希望在 debezium 层进行过滤

Debezium系列之:debezium把sqlserver数据库多张表的数据发送到一个kafka topic

Debezium 简介入门引导系列

debezium - 模式注册表问题

Debezium 发件箱模式 |如果我们使用 debezium,架构是用 SMT/发件箱表固定的吗