debezium 无法使用带有默认插件 pgoutput 的 postgres 11 访问文件“decoderbufs”
Posted
技术标签:
【中文标题】debezium 无法使用带有默认插件 pgoutput 的 postgres 11 访问文件“decoderbufs”【英文标题】:debezium could not access file "decoderbufs" using postgres 11 with default plugin pgoutput 【发布时间】:2020-05-15 14:34:54 【问题描述】:我是 kafka 的新手,我正在尝试使用 debezium postgres 连接器。 但即使将 postgres 版本 11 与标准插件一起使用,我也会收到此错误: org.apache.kafka.connect.errors.ConnectException:org.postgresql.util.PSQLException:错误:无法访问文件“decoderbufs”:没有这样的文件或目录
要运行 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 属性设置为 1
执行 SHOW wal_level 时;在终端我看到它返回逻辑
在文档中说您必须设置 max_wal_senders = 1 和 max_replication_slots = 1
放入 rds 中,is 5, so I left the default that
的最小值为 10
我没有定义角色 REPLICATION,因为据我在 rds 中的理解,没有办法
在这张图片中你可以看到使用的版本是 11.5
但我得到了如下所示的错误
【问题讨论】:
我发现了问题,我点击了一个选项并显示了所有的值,许多默认值已经被填充,plugin.name 带有decoderbufs,它只是切换到 pqoutput 工作 "plugin.name": "pgoutput" @DaviResio 你在哪里找到“plugin.name”选项? @ Vikrant Goel 问题是这个,我没有找到这个选项。我找到并放置了 pgoutput。谢谢 【参考方案1】:您尚未在 Debezium @ 中将 "plugin.name" 属性设置为 "pgoutput" 987654321@ 你已经知道了。但此答案适用于不知道在哪里设置此选项的其他人并更清楚。
在以下连接器属性中:
由于您尚未设置 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
【讨论】:
以上是关于debezium 无法使用带有默认插件 pgoutput 的 postgres 11 访问文件“decoderbufs”的主要内容,如果未能解决你的问题,请参考以下文章
ClassNotFoundException 使用带有本地类和 Debezium 引擎的 QuarkusClassLoader
带有 TimescaleDB 扩展的 Debezium 连接器