Kafka Debezium 连接器没有为 Postgres 生成 CDC
No CDC generated by Kafka Debezium connector for Postgres
我在 Postgres 数据库中成功生成了 CDC。
今天,当我使用相同的步骤尝试为另一个 Postgres 数据库设置 Kafka Debezium 连接器时。
首先我运行
POST http://localhost:8083/connectors
与 body:
{
"name": "postgres-kafkaconnector",
"config": {
"connector.class": "io.debezium.connector.postgresql.PostgresConnector",
"tasks.max": "1",
"database.hostname": "example.com",
"database.port": "5432",
"database.dbname": "my_db",
"database.user": "xxx",
"database.password": "xxx",
"database.server.name": "postgres_server",
"table.include.list": "public.products",
"plugin.name": "pgoutput"
}
}
成功无误。
那我运行
获取 http://localhost:8083/connectors/postgres-kafkaconnector/status
查看状态。它returns这个结果没有任何错误:
{
"name": "postgres-kafkaconnector",
"connector": {
"state": "RUNNING",
"worker_id": "10.xx.xx.xx:8083"
},
"tasks": [
{
"id": 0,
"state": "RUNNING",
"worker_id": "10.xx.xx.xx:8083"
}
],
"type": "source"
}
然而,这一次,当我在 products
table 中更新任何内容时。没有生成 CDC。
有什么想法吗?任何帮助进一步调试的建议将不胜感激。谢谢!
找到问题了!这是因为我的 Kafka Connector postgres-kafkaconnector
最初指向一个 DB (stage1),然后我通过更新
切换到另一个 DB (stage2)
"database.hostname": "example.com",
"database.port": "5432",
"database.dbname": "my_db",
"database.user": "xxx",
"database.password": "xxx",
但是,他们在我最开始部署的 Kafka Connect 中使用相同的配置属性:
config.storage.topic
offset.storage.topic
status.storage.topic
由于此连接器与不同的数据库配置共享相同的上述 Kafka 配置属性,并且数据库 table 架构相同,
由于共享相同的 Kafka 偏移量,它变得一团糟。
一个简单的修复方法是在部署 Kafka 连接器以在不同的数据库上进行测试时,使用不同的名称(例如 postgres-kafkaconnector-stage1
和 postgres-kafkaconnector-stage2
以避免 Kafka 主题偏移混乱。
我在 Postgres 数据库中成功生成了 CDC。 今天,当我使用相同的步骤尝试为另一个 Postgres 数据库设置 Kafka Debezium 连接器时。
首先我运行
POST http://localhost:8083/connectors
与 body:
{
"name": "postgres-kafkaconnector",
"config": {
"connector.class": "io.debezium.connector.postgresql.PostgresConnector",
"tasks.max": "1",
"database.hostname": "example.com",
"database.port": "5432",
"database.dbname": "my_db",
"database.user": "xxx",
"database.password": "xxx",
"database.server.name": "postgres_server",
"table.include.list": "public.products",
"plugin.name": "pgoutput"
}
}
成功无误。
那我运行
获取 http://localhost:8083/connectors/postgres-kafkaconnector/status
查看状态。它returns这个结果没有任何错误:
{
"name": "postgres-kafkaconnector",
"connector": {
"state": "RUNNING",
"worker_id": "10.xx.xx.xx:8083"
},
"tasks": [
{
"id": 0,
"state": "RUNNING",
"worker_id": "10.xx.xx.xx:8083"
}
],
"type": "source"
}
然而,这一次,当我在 products
table 中更新任何内容时。没有生成 CDC。
有什么想法吗?任何帮助进一步调试的建议将不胜感激。谢谢!
找到问题了!这是因为我的 Kafka Connector postgres-kafkaconnector
最初指向一个 DB (stage1),然后我通过更新
"database.hostname": "example.com",
"database.port": "5432",
"database.dbname": "my_db",
"database.user": "xxx",
"database.password": "xxx",
但是,他们在我最开始部署的 Kafka Connect 中使用相同的配置属性:
config.storage.topic
offset.storage.topic
status.storage.topic
由于此连接器与不同的数据库配置共享相同的上述 Kafka 配置属性,并且数据库 table 架构相同,
由于共享相同的 Kafka 偏移量,它变得一团糟。
一个简单的修复方法是在部署 Kafka 连接器以在不同的数据库上进行测试时,使用不同的名称(例如 postgres-kafkaconnector-stage1
和 postgres-kafkaconnector-stage2
以避免 Kafka 主题偏移混乱。