问题现象
使用了 Flink CDC Connector 消费 PostgreSQL数据,但是发现数据量在没有发生变化的情况下,发现存储空间不断增长,我们该如何解决此类问题。
排查过程
根据此文档进行排查,发现 Flink 所依赖的 replication slot 未能推进 confirmed_flush_lsn,由于 confirmed_flush_lsn 一直未推进,基于复制槽的保护机制,PostgreSQL 会一直保留从 confirmed_flush_lsn 之后的 wal 日志,因此会造成 wal 日志堆积,磁盘空间增长。
解决方案
1.检查 Flink 版本
建议您检查 Flink CDC 对应的版本,由于老版本的 flink-cdc-connectors 存在 bug,需要使用 1.2 及以上版本。
2.检查debezium.heartbeat.interval.ms参数
设置方式如下:
'debezium.heartbeat.interval.ms' = '1000'
官方解释如下:
3.配置checkpoint
以下两种方式可以配置 checkpoint
1.在 SQL中显示指定
SET 'execution.checkpointing.interval' = '1min';
2.flink-conf.yaml中配置
execution.checkpointing.interval:3min
参考文档