Kafka 连接 Debezium Postgres Cloud SQL

Posted

技术标签:

【中文标题】Kafka 连接 Debezium Postgres Cloud SQL【英文标题】:Kafka connect Debezium Postgres Cloud SQL 【发布时间】:2020-02-16 11:59:20 【问题描述】:

我正在尝试使用 Debezium Postgres 连接器连接到 Cloud SQL postgres。 我在日志中收到以下错误。

connect_1    | org.apache.kafka.connect.errors.ConnectException: org.postgresql.util.PSQLException: FATAL: must be superuser or replication role to start walsender
connect_1    |  at io.debezium.connector.postgresql.PostgresConnectorTask.start(PostgresConnectorTask.java:127)

我突然想到我需要将 REPLICATION 添加到我的用户角色中。 但是,CloudSQL 文档说以下内容。

当您创建一个新的 Cloud SQL for PostgreSQL 实例时,已经为您创建了默认的 postgres 用户,但您必须设置其密码。 postgres 用户是 cloudsqlsuperuser 角色的一部分,具有以下属性(权限):CREATEROLE、CREATEDB 和 LOGIN。它没有 SUPERUSER 或 REPLICATION 属性。

现在正因为如此,我无法通过 ALTER ROLE 添加 REPLICATION

ps:云 SQL 实例配置为高可用性。

【问题讨论】:

Google Cloud SQL 是一项托管服务。你没有这些权利。如果您的应用程序需要它们,那么您将需要在 Compute Engine 上启动您自己的 PostgreSQL。确保您确实需要这些角色。 99% 的时间你不这样做。 【参考方案1】:

Debezium 需要 Postgres wal2json 扩展,Cloud SQL 目前不支持该扩展。有一个正在进行的 feature request 可以查看。您需要setup Postgresql on GCE 并在那里设置 Debezium。

如果有帮助,请采纳答案

【讨论】:

感谢您的回复。 I see the following Note from docs 从 Debezium 0.10 开始,连接器支持使用 pgoutput 的 PostgreSQL 10+ 逻辑复制流。这意味着不再需要逻辑解码输出插件,并且可以通过连接器直接从复制流中发出更改。 这是正确的,并且有一个内部功能请求进行更改以允许非超级用户启用复制。实施该功能后,您将能够启用复制。希望对您有所帮助。 Cloud SQL 终于在 2021 年 8 月添加了逻辑复制。cloud.google.com/sql/docs/postgres/release-notes#August_30_2021

以上是关于Kafka 连接 Debezium Postgres Cloud SQL的主要内容,如果未能解决你的问题,请参考以下文章

Kafka 连接 Debezium Postgres Cloud SQL

Debezium 消息与 kafka-connect sink 连接器期望的格式兼容

在远程 MSK kafka 集群上使用 kafka 连接 mongoDB debezium 源连接器

无法在启用 SSL 的 Kafka 集群中注册 Debezium (Kafka-Connect) 连接器

Debezium Kafka 连接器 mongodb:将 kafka 连接器连接到 mongodb 时出错

如何设置 Kafka 连接器以在 Debezium 中使用自定义转换?