【发布时间】:2020-06-27 20:37:18
【问题描述】:
由 kafka-connector 连接器创建的复制槽正在填满。
我在 AWS 上有一个 postgres RDS 数据库。我在上面放了以下参数组选项(仅显示与默认值的差异)
rds.logical_replication: 1
我使用 debezium postgres 连接器运行 kafka 连接。这是配置(当然,某些值已编辑)
"database.dbname" = "mydb"
"database.hostname" = "myhostname"
"database.password" = "mypass"
"database.port" = "myport"
"database.server.name" = "postgres"
"database.user" = "myuser"
"database.whitelist" = "my_database"
"include.schema.changes" = "false"
"plugin.name" = "wal2json_streaming"
"slot.name" = "my_slotname"
"snapshot.mode" = "never"
"table.whitelist" = "public.mytable"
"tombstones.on.delete" = "false"
"transforms" = "key"
"transforms.key.field" = "id"
"transforms.key.type" = "org.apache.kafka.connect.transforms.ExtractField$Key"
如果我得到此连接器的状态,它似乎没问题。
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 连接连接器任务应该从这个复制槽读取,将其发布到主题postgres. public.mytable,然后复制槽的大小应该减小。我在这一系列动作中遗漏了什么吗?
【问题讨论】:
标签: postgresql apache-kafka apache-kafka-connect debezium