我正在尝试使用 Debezium(CDC工具)的 PostgreSQL 连接器 来捕获 openGauss 数据库的数据变更。但连接器在配置验证阶段就失败了,提示我的数据库版本低于 PostgreSQL 9.4。
报错 “Cannot connect to a version of Postgres lower than 9.4”
Docker镜像版本
OpenGauss: openGauss-lite 7.0.0-RC1
Debezium: debezium-connect:2.7.3.final
环境详情
- 数据库 : openGauss-lite 7.0.0-RC1 (Docker部署)
- Debezium 版本 : 2.7.3.Final (Kafka Connect 3.7.0)
- 已确认的数据库配置 :
wal_level = logical- 已创建具有
REPLICATION权限的专用于户 - 逻辑复制槽相关参数 (
max_replication_slots等) 已正确设置
使用 Debezium 的配置验证接口 /connector-plugins/PostgresConnector/config/validate 返回了明确错误:
“Error while validating connector config: Cannot connect to a version of Postgres lower than 9.4”
此错误发生在验证database.hostname参数时,连接器尚未尝试建立实际连接 。
已尝试的解决方案 (均未成功)
- 设置版本覆盖参数 : 在连接器配置中添加
"database.version": "12.0"和"database.version.override": true。 - 尝试不同连接器参数 : 如
database.system、database.sslmode等。 - 调整 Debezium 容器启动参数 : 尝试通过
JAVA_OPTS/CONNECT_OPTS或直接修改启动脚本加入-Ddebezium.connector.postgresql.skip.version.check=true来跳过版本检查,但该JVM参数未能成功注入 到容器的Java进程中。 - 更换 Debezium 版本 : 降级到兼容性反馈较好的 2.6.1.Final 版本问题依旧。
核心疑问
- 版本识别问题 :openGauss-lite 7.0.0-RC1 返回的版本字符串是什么?Debezium 是如何解析并判定其版本“低于 9.4”的?
- 内核支持问题 :根据社区邮件列表的线索,Debezium 正常运行需要数据库支持“在逻辑复制(流复制)连接中执行普通SQL查询 ”。openGauss-lite 7.0.0-RC1 是否完整支持此特性? 如果不支持,从哪个版本开始支持?
- 官方兼容性 :是否有官方推荐或验证过 的 Debezium 与 openGauss(特别是非企业版)的版本组合?
- 在 openGauss 中执行
SELECT version();返回的结果是:(openGauss-lite 7.0.0-RC1 build 08085c8f) compiled at 2025-03-12 10:44:09 commit 0 last mr release - 我通过分析 Debezium 的验证接口输出,确认了错误发生在验证阶段,而非实际连接阶段。