debezium 无法使用带有默认插件 pgoutput 的 postgres 11 访问文件 "decoderbufs"

debezium could not access file "decoderbufs" using postgres 11 with default plugin pgoutput

我是 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

在 运行ning 之后,我可以打开我的本地主机:3030 来选择 debezium 连接器,我是这样配置的:

并且我在 11.5 版中使用 aws postgres rds 看了好几个使用wal2json的教程,但是在rds.extensions里面没有找到,也没有看到添加的方法。无论如何,从版本 10 开始,debezium 可以使用 pgoutput 并且显然不需要配置。

将rds.logical_replication属性设为1 当执行 SHOW wal_level;在终端我看到它 returns 合乎逻辑 在文档中说你必须设置 max_wal_senders = 1 和 max_replication_slots = 1 放入 rds 最小 is 5, so I left the default that 是 10

我没有定义 REPLICATION 角色,因为根据我在 rds 中的理解,没有办法

在此图中您可以看到使用的版本是 11.5

但是我得到了如下所示的错误

您还没有将 "plugin.name" 属性 设置为 "pgoutput" 在您的 Debezium connector properties 中,您已经知道了。但是这个答案是为那些不知道在哪里设置这个选项的人准备的,为了更清楚。

在以下连接器属性中:

因为你没有设置 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
}