Kafka删除Topic的retention.ms配置后生效规则及操作风险问询
问题1:移除retention.ms配置后的生效规则
- Kafka配置生效遵循「Topic级覆盖配置 > Broker全局配置 > 默认值」的优先级规则,删除Topic层面的
retention.ms覆盖配置后,会自动读取server.properties中的全局留存配置生效,具体匹配逻辑为:- 优先取全局配置
log.retention.ms的配置值 - 若未配置
log.retention.ms,则降级取log.retention.minutes的配置值 - 若以上两个配置均未设置,最终取
log.retention.hours的配置值,Kafka默认全局留存时间为7天(即log.retention.hours=168)
注意:__consumer_offsets主题的默认清理策略为cleanup.policy=compact,压缩策略和过期删除策略会同时生效,超过留存时间且没有被最新版本覆盖的旧偏移量数据会被清理
- 优先取全局配置
问题2:删除__consumer_offsets主题retention.ms配置的风险
__consumer_offsets是Kafka内置核心主题,用于存储所有消费者组的消费偏移量数据,删除该主题的留存配置可能引发以下风险:
- 若Broker全局留存时间短于之前Topic层面配置的时间,会导致历史偏移量提前被清理,长时间未运行的消费者组重启后找不到对应偏移量,会按照
auto.offset.reset的配置(默认值为latest)从最新位置或者最早位置消费,引发重复消费或数据丢失问题 - 若Broker全局留存时间长于之前的Topic配置值,会导致大量无用的历史偏移量数据长期堆积,占用Broker磁盘空间,严重时可能打满磁盘导致Broker节点宕机
- 若未自定义全局留存配置,默认7天的留存时间不符合业务场景的话,比如存在超过7天未启动的消费者组,重启后偏移量已经被清理,同样会引发消费异常
内容的提问来源于stack exchange,提问作者Judy
相关产品推荐
相关产品推荐

