Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql kafka connect的Postgres复制插槽已满_Postgresql_Apache Kafka_Apache Kafka Connect_Debezium - Fatal编程技术网

Postgresql kafka connect的Postgres复制插槽已满

Postgresql kafka connect的Postgres复制插槽已满,postgresql,apache-kafka,apache-kafka-connect,debezium,Postgresql,Apache Kafka,Apache Kafka Connect,Debezium,卡夫卡连接器创建的复制插槽已满 我在AWS上有一个postgres RDS数据库。我在其上添加了以下参数组选项(仅显示与默认值的差异) rds.U复制:1 我用debezium postgres连接器运行kafka connect。这是配置(当然,某些值已编辑) 如果我得到这个连接器的状态,它看起来是好的 curl -s http://my.kafkaconnect.url:kc_port/connectors/my-connector/status | jq { "name": "my-

卡夫卡连接器创建的复制插槽已满

我在AWS上有一个postgres RDS数据库。我在其上添加了以下参数组选项(仅显示与默认值的差异)

rds.U复制:1

我用debezium postgres连接器运行kafka connect。这是配置(当然,某些值已编辑)

如果我得到这个连接器的状态,它看起来是好的

curl -s http://my.kafkaconnect.url:kc_port/connectors/my-connector/status | jq

{
  "name": "my-connector",
  "connector": {
    "state": "RUNNING",
    "worker_id": "some_ip"
  },
  "tasks": [
    {
      "id": 0,
      "state": "RUNNING",
      "worker_id": "some_ip"
    }
  ],
  "type": "source"
}
但是,postgres中的复制槽越来越大:

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_slotname                   | 20 GB              | 20 GB        | t
为什么复制不断增长?据我所知,正在运行的kafka connect connector任务应该从该复制插槽读取数据,并将其发布到主题
postgres。public.mytable
,则复制插槽的大小应减小。在这一连串的行动中,我是否遗漏了什么?

请看一看

PostgreSQL WAL积压的最常见原因是,与环境中的其他表或数据库相比,连接器正在监视数据库中的数据库或表子集的更改要少得多,因此连接器没有足够频繁地确认LSN以避免WAL积压

对于Debezium 1.0.x及之前的版本,启用
heartbeat.interval.ms

对于DeBuZ1.1.0和之后,也考虑启用<代码>心跳.Action。查询< /代码>。

请查看./P> PostgreSQL WAL积压的最常见原因是,与环境中的其他表或数据库相比,连接器正在监视数据库中的数据库或表子集的更改要少得多,因此连接器没有足够频繁地确认LSN以避免WAL积压

对于Debezium 1.0.x及之前的版本,启用
heartbeat.interval.ms


对于DEBEZIZ1.1.0和之后,还考虑启用<代码>心跳.Action。查询< /代码>。

我将此标记为答案,因为它通常是答案。对于Debezium 1.0,heartbeat实际上并不提交LSN,因此复制延迟仍然会增加。对于1.1,查询会很好,但我们使用ExtractField SMT,它与任何心跳都不兼容(因此它在1.0中也不起作用)。在这里我将把它标记为答案,因为它通常就是答案。对于Debezium 1.0,heartbeat实际上并不提交LSN,因此复制延迟仍然会增加。对于1.1,查询会很好,但我们使用ExtractField SMT,它与任何心跳都不兼容(因此它在1.0中也不起作用)。跟踪这里
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_slotname                   | 20 GB              | 20 GB        | t