You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kafka compact清理策略配置咨询:分段满时是否会删除旧数据?

Kafka Compact策略配置疑问解答

一、哪些配置会影响Compact策略,导致旧数据丢失?

即使设置了cleanup.policy=compact,以下配置仍可能触发旧数据删除:

  • retention.ms:若设置非-1的值,数据存储时间超过阈值后,无论是否完成compact都会被删除。
  • retention.bytes:若设置非-1的值,topic总数据量超过阈值时,旧segment会被删除,哪怕还未完成compact。
  • delete.retention.ms:控制墓碑消息(值为null的记录,用于标记键删除)的保留时长。超时后墓碑消息会被清理,若后续无该键的新记录,compact后该键的所有旧数据会被彻底移除。
  • segment.ms:若设置较小值,会触发segment提前滚动(即使未达到segment.bytes=1GB)。滚动后的旧segment若触发retention相关删除条件,也会被删除。

另外,如果cleanup.policy同时包含compact和delete(如cleanup.policy=compact,delete),数据会受两种策略共同影响,更容易触发删除。

二、Compact策略下如何配置实现永久保留数据?

要实现数据永久保留,需调整以下关键配置:

  1. 确保cleanup.policy仅设置为compact,不要添加delete
  2. 设置retention.ms=-1:关闭按时间触发的删除策略
  3. 设置retention.bytes=-1:关闭按总数据量触发的删除策略
  4. 调大delete.retention.ms:建议设置为Long类型最大值9223372036854775807,避免墓碑消息被过早清理,防止对应键的历史数据被误删
  5. 可选:设置min.compaction.lag.ms=0,确保数据可以及时被compact,且不会因延迟触发删除(不需要延迟compact时使用)

注意:如果业务中发送了墓碑消息(null值记录),即使配置了上述参数,该键的旧数据在compact后会被移除,墓碑消息也会在delete.retention.ms到期后删除。若要完全保留所有历史数据,请勿发送墓碑消息。

内容的提问来源于stack exchange,提问作者Andrew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 17:35:01