当前位置: 首页 > 知识库问答 >
问题:

带GCP Cloudsql postgresql的Debezium

楮景明
2023-03-14

Google最终增加了对Cloudsql、postgresql逻辑复制/解码支持的支持。我正在尝试使用Debezium捕获数据库表上的更改,然后将json中的更改发布到Gcp PubSub。我使用带有Gcp Pubsub接收器的Debezium服务器只是为了验证连接是否工作,但不断得到以下错误消息org.postgreSQL.util.psqlException:错误:无法访问文件“decoderbufs”:没有这样的文件或目录

所以它似乎默认插件为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)来查看更改

那么我在这里漏掉了什么?


共有1个答案

陶征
2023-03-14

我猜这是docker配置文档中的一个错误。在我将配置从database_source_plugin_name更改为debezium_source_plugin_name后,它正确地选择了插件

 类似资料:
  • 我有一个报告,我想在其中显示页脚,但不想显示页眉部分-在摘要带。我可以通过选中“带有页眉和页脚的摘要”来显示两者或不显示。

  • 现在我的问题是,如何在自定义的而不是自定义的中重写方法?我没有在这里公布我的代码,因为它与链接的代码本质上是相同的,只是我需要为子创建一个自定义的来代替,这样它就可以按照“pptang”的答案所述进行正确的度量。 否则,有没有比在第二个RecyclerView中使用1个RecyclerView更好的方法?只能有1个RecyclerView使用上述列表和每个中唯一项的网格填充活动/片段吗?

  • 我怎样组合桌子。包括列表和列。包括如果需要快照一个表的一部分和另一个表的完整数据,请在Debezium连接器配置中列出? 连接器配置示例: 有了这些,我得到了Kafka表格1的所有栏目。 只管理如何使用不同的连接器来完成。 我想使用一个连接器获取表2中的所有列和表1中的两列,可以吗?

  • 2)如果困境是真的,为什么事情要这样设置?谷歌计划反对TabHost和基于标签的多活动方法吗?多活动方法有什么不愉快的地方吗? 3)如果继续支持这两种方法,它们的优缺点是什么?如果我使用ActionBar+片段,我会遇到任何困难吗?例如,当我想让我的一个选项卡屏幕滑过/弹出一个额外的屏幕/片段时,我会不会在ActionBar中切换到/从选项卡中切换到选项卡?

  • 问题内容: 之间有什么区别 和 我都尝试过,但似乎都可以,但是我是在问,以防万一我需要小心(例如,%以外的单位等)。 问题答案: 这完全是关于HTML标记的真实有效性。这是W3C(WWW联盟)的工作目的。许多事情可能都在HTML中起作用,但是必须进行验证才能被网络浏览器更仔细地识别。您甚至可以在开头和结尾处省略and 标记,但是完全不建议这样做,没有人这样做,它被视为“错误代码”。 因此,将它们放

  • 根据Spring网站上的这个教程,我知道了如何使用Stomp和Spring4建立一个基于WebSocket的应用程序。在客户端,我们有: 在服务器端,控制器中有以下内容: 现在,我明白了确保如果消息发送到目标,那么将调用方法。由于订阅了,将消息发送回。 那么,有什么方法可以用Spring4、SockJS和没有跺脚的情况下做到这一点呢?还是Spring4WebSocket只支持stomp?