开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

PostgreSQL数据库的WAL日志空间快速增长导致Flink CDC磁盘空间不足,是怎么回事呢?

Flink CDC中PostgreSQL-CDC作业持续同步几天后,重新从状态恢复启动后,无法进行增量同步。设置的deberzium.heartbeat.interval.ms和deberzium.heartbeat.action.query也未执行,导致PostgreSQL数据库的WAL日志空间快速增长,导致磁盘空间不足,是怎么回事呢?

展开
收起
真的很搞笑 2023-12-31 16:18:46 179 0
1 条回答
写回答
取消 提交回答
  • 在Flink CDC的PostgreSQL CDC作业中,如果作业持续同步几天后,由于某种原因(例如故障恢复或手动重启)重新启动,并且不能继续进行增量同步,同时配置的Debezium心跳参数如debezium.heartbeat.interval.msdebezium.heartbeat.action.query不再执行,可能会出现以下问题:

    1. Replication Slot堵塞

      • Flink CDC通过Debezium连接器使用PostgreSQL的逻辑复制槽来跟踪已经消费过的事务。如果没有定期发送心跳信号到数据库, replication slot可能无法正确清理已消费的日志,从而导致wal日志空间不断增长。
    2. WAL日志堆积

      • 心跳机制是为了保持与数据库的活跃连接并清除旧的WAL日志。当心跳停止执行时,数据库会保留所有未被确认消费的WAL日志,即使这些日志对应的事务已经被Flink CDC成功处理过。
    3. 磁盘空间不足

      • 由于上述原因,未经清理的WAL日志占用的空间会持续增加,可能导致磁盘空间耗尽。

    为了解决这个问题,请检查以下几个方面:

    • 确认心跳设置是否生效:确保在Flink CDC作业的连接器配置中,心跳相关属性已经被正确设置,并且在重启作业时依然生效。

    • 查看日志

      • 查看Flink CDC作业以及数据库服务器的日志,寻找关于心跳失败、连接中断或其他可能导致心跳停止执行的相关错误信息。
    • 清理Replication Slot

      • 如果确定是因为没有执行心跳而造成的问题,可以尝试手动清理replication slot或者在重启作业前先删除旧的slot,然后让作业重新创建并开始同步。
    • 监控和报警

      • 建立合适的监控和报警机制,以便在类似问题发生时及时发现并采取措施。
    • 持久化和恢复点

      • 确保Flink CDC作业在重启时能够从上次成功的checkpoint位置恢复,而不是从头开始同步。这有助于避免重复处理数据。
    2023-12-31 17:59:28
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    PostgresChina2018_赖思超_PostgreSQL10_hash索引的WAL日志修改版final 立即下载
    Kubernetes下日志实时采集、存储与计算实践 立即下载
    日志数据采集与分析对接 立即下载