apache-kafka - debezium 无法使用带有默认插件 pgoutput 的 postgres 11 访问文件“decoderbufs”
问题描述
我是 kafka 的新手,我正在尝试使用 debezium postgres 连接器。但即使将 postgres 版本 11 与标准插件一起使用,我也会收到此错误:org.apache.kafka.connect.errors.ConnectException: org.postgresql.util.PSQLException: ERROR: could not access file "decoderbufs": No such file or directory
要运行 kafka / debezium,我使用的是 fast-data-dev docker 的映像,如下所示
# this is our kafka cluster.
kafka-cluster:
image: landoop/fast-data-dev:latest
environment:
ADV_HOST: 127.0.0.1 # Change to 192.168.99.100 if using Docker Toolbox
RUNTESTS: 0 # Disable Running tests so the cluster starts faster
ports:
- 2181:2181 # Zookeeper
- 3030:3030 # Landoop UI
- 8081-8083:8081-8083 # REST Proxy, Schema Registry, Kafka Connect ports
- 9581-9585:9581-9585 # JMX Ports
- 9092:9092 # Kafka Broker
运行后我可以打开我的 localhost:3030 来选择 debezium 连接器,我是这样配置的:
我在 11.5 版中使用 aws postgres rds 我看到了几个使用 wal2json 的教程,但是我在 rds.extensions 中没有找到它,也没有看到添加它的方法。无论如何,从版本 10 开始,debezium 可以使用 pgoutput 并且显然不需要配置。
rds.logical_replication 属性在执行 SHOW wal_level 时设置为 1;在终端中,我看到它在文档中返回逻辑上说您必须将 max_wal_senders = 1 和 max_replication_slots = 1 放入 rds 中,最小值is 5, so I left the default that
为 10
我没有定义角色 REPLICATION 因为根据我在 rds 中的理解,没有办法
在这张图片中你可以看到使用的版本是 11.5
但我收到错误,如下所示
解决方案
您尚未在您已经弄清楚的 Debezium连接器属性中将“plugin.name”属性设置为“pgoutput” 。但是这个答案适用于那些不知道在哪里设置这个选项并且更清楚的人。
在以下连接器属性中:
由于您尚未设置plugin.name选项,因此它采用默认值decoderbufs,这就是您收到以下错误的原因:
将“plugin.name”显式设置为“pgoutput”应该可以解决问题。
{
"connector.class": "io.debezium.connector.postgresql.PostgresConnector",
"database.user": "postgres",
"database.dbname": "xxxxx",
"tasks.max": "1",
"database.hostname": "xxxx.rds.amazonaws.com",
"database.password": "xxxx",
"database.server.name": "database-1",
"database.port": "5432",
"plugin.name": "pgoutput" --> this property
}