Google最终添加了对Cloudsql postgresql逻辑复制/解码支持的支持。我尝试做的是使用Debezium捕获数据库表上的更改,然后将更改以json形式发布到Gcp pubsub。我正在使用Debezium服务器和Gcp Pubsub Sink,只是为了验证连接是否正常工作,但一直收到以下错误消息org.postgresql.util.PSQLException: ERROR: could not access file "decoderbufs": No such file or directory
所以看起来它将插件默认设置为decoderbufs,但是我确实在环境变量中设置了database.source.plugin.name。根据这个https://hub.docker.com/r/debezium/server文档,我使用的是DATABASE_SOURCE_PLUGIN_NAME。下面是我的k8s清单的片段
serviceAccountName: cloudsql-client
containers:
- name: debezium-standalone-server-dv
image: debezium/server:1.6
env:
- name: DEBEZIUM_SOURCE_CONNECTOR_CLASS
value: io.debezium.connector.postgresql.PostgresConnector
- name: DEBEZIUM_SOURCE_DATABASE_HOSTNAME
value: localhost
- name: DEBEZIUM_SOURCE_DATABASE_PORT
value: "5432"
- name: DEBEZIUM_SOURCE_DATABASE_USER
value: cdc
- name: DEBEZIUM_SOURCE_DATABASE_PASSWORD
value: cdc
- name: DEBEZIUM_SOURCE_DATABASE_DBNAME
value: postgres
- name: DEBEZIUM_SINK_TYPE
value: pubsub
- name: DEBEZIUM_SINK_PUBSUB_PROJECT_ID
value: myproject
- name: DEBEZIUM_SOURCE_OFFSET_STORAGE_FILE_FILENAME
value: data/offsets.dat
- name: DEBEZIUM_SOURCE_OFFSET_FLUSH_INTERVAL_MS
value: "0"
- name: DEBEZIUM_SOURCE_DATABASE_SERVER_NAME
value: CDC_POC
- name: DATABASE_SOURCE_PLUGIN_NAME
value: wal2json在Cloudsql中,我已经打开了逻辑解码并向用户添加了REPLICATION属性,我可以通过运行SELECT * FROM pg_create_logical_replication_slot('test_slot', 'wal2json');来“手动”创建它,还可以通过查询复制槽SELECT * FROM pg_logical_slot_get_changes('test_slot', NULL, NULL);来查看更改
那么我在这里错过了什么呢?
发布于 2021-06-04 10:26:24
我猜这是docker配置文档中的一个拼写错误。在我将配置从DATABASE_SOURCE_PLUGIN_NAME更改为DEBEZIUM_SOURCE_PLUGIN_NAME后,它会正确选择插件
https://stackoverflow.com/questions/67828581
复制相似问题