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

Debezium Postgres Kafka连接器心跳不提交LSN

曾宏毅
2023-03-14

我有一个AWS RDS上的Postgres Db和一个Kafka连接连接器(Debezium Postgres)在桌上监听。连接器的配置:

{
  "name": "my-connector",
  "config": {
    "connector.class": "io.debezium.connector.postgresql.PostgresConnector",
    "database.dbname": "my_db",
    "database.user": "my_user",
    "max.queue.size": "32000",
    "slot.name": "my_slot",
    "tasks.max": "1",
    "publication.name": "my_publication",
    "database.server.name": "postgres",
    "heartbeat.interval.ms": "1000",
    "database.port": "my_port",
    "include.schema.changes": "false",
    "plugin.name": "pgoutput",
    "table.whitelist": "public.my_table",
    "tombstones.on.delete": "false",
    "database.hostname": "my_host",
    "database.password": "my_password",
    "name": "my-connector",
    "max.batch.size": "10000",
    "database.whitelist": "my_db",
    "snapshot.mode": "never"
  },
  "tasks": [
    {
      "connector": "my-connector",
      "task": 0
    }
  ],
  "type": "source"
}

该表不像其他表那样频繁更新,这最初导致了复制延迟,如下所示:

SELECT slot_name,
  pg_size_pretty(pg_wal_lsn_diff(pg_current_wal_lsn(), restart_lsn)) as replicationSlotLag,
  pg_size_pretty(pg_wal_lsn_diff(pg_current_wal_lsn(), confirmed_flush_lsn)) as confirmedLag,
  active
FROM pg_replication_slots;
           slot_name           | replicationslotlag | confirmedlag | active
-------------------------------+--------------------+--------------+--------
 my_slot                       | 1664 MB            | 1664 MB      | t

它会变得如此之大,以至于有可能耗尽所有磁盘空间。

我添加了一个心跳,如果我登录到kafka代理并设置这样的控制台消费者:/Kafka控制台消费者。sh——我的引导服务器。经纪人地址:9092——主题_udebezium-heartbeat。博士后——从一开始就是消费者。config=/etc/kafka/consumer。属性它将转储所有心跳消息,然后每1000毫秒显示一条新消息。

然而,插槽的大小仍在不断增长。如果我在表中插入一条虚拟记录,它会将插槽设置回一个小延迟,这样就可以了。

不过,我还是想心跳一下。我不想插入定期消息,因为这听起来会增加复杂性。为什么心跳没有减少插槽大小?

共有1个答案

萧浩漫
2023-03-14

请看一看https://debezium.io/documentation/reference/1.0/connectors/postgresql.html#wal-磁盘空间

您真的需要发出周期性消息,但现在有一个帮助-https://issues.redhat.com/browse/DBZ-1815

 类似资料:
  • 设备串口和OBLOQ串口在长时间不进行数据通信后可能会断开连接,通过这条指令可以让设备和OBLOQ之间保持一定频率的数据交换。 请求方式: "|1|3|2000|\r" 或者 "|1|3|-2|\r" 参数: 2000 设置心跳数据发送频率,单位:毫秒,2000表示2秒钟OBLOQ向通信的的设备发送一次数据 -2 参数为负数表示OBLOQ停止发送数据 返回值: "|1|3|\r" Arduino样

  • 本文向大家介绍Python WebSocket长连接心跳与短连接的示例,包括了Python WebSocket长连接心跳与短连接的示例的使用技巧和注意事项,需要的朋友参考一下 安装 先来看一下,长连接调用方式:  长连接,参数介绍: (1)url: websocket的地址。 (2)header: 客户发送websocket握手请求的请求头,{'head1:value1','head2:value

  • 我试图在Hyperledger fabric测试网络(Fabcar javascript智能合约)上执行智能合约,当我试图使用invoke调用链码时,会出现以下错误。fabcar javascript示例中的js文件: 错误:[ServiceEndpoint]:错误:未能在截止日期之前连接到委员会-名称:_buildOrderer,url:_buildPeer,连接:false,连接尝试:true

  • 我有一个Kafka接收器任务,通过方法收听Kafka主题 但我不想自动提交偏移量,因为一旦从Kafka取出记录,我就有一些处理逻辑 从Kafka获取记录后,如果处理成功,则只有我想提交偏移量,否则它应该再次从同一偏移量读取。 我可以在Kafka consumer中看到方法,但在中找不到替代方法。

  • 嵌入式设备上,只能运行SRS时,其他的业务系统可能需要知道这个设备的ip等信息,SRS可以以http方式主动汇报给api服务器。 编译 要求编译时支持http-parser,即开启了下面任何一个选项即支持: --with-http-api HTTP接口。 --with-http-server HTTP服务器。 --with-http-callback HTTP回调。 配置 在全局配置以下信息即可以

  • (人们可能认为增加心跳间隔可以达到增加最大心跳计数的相同效果。但是,我在应用程序中将客户端心跳用于其他目的,因此增加心跳间隔对我来说不是一个选项)