3.6. 使用数据保留策略管理日志


Kafka 使用日志来存储消息数据。日志是与各种索引关联的一系列片段。新消息被写入 active 片段,之后永远不会修改。在服务从消费者获取请求时读取片段。有时候,活跃段会滚动到变为只读,一个新的活跃段会被创建来替代它。一次只有一个片段活跃。旧的片段会被保留,直到它们有资格删除。

代理级别的配置会以字节为单位设置日志片段的最大大小,以及滚动活跃片段前的时间(以毫秒为单位):

# ...
log.segment.bytes=1073741824
log.roll.ms=604800000
# ...
Copy to Clipboard Toggle word wrap

您可以使用 segment.bytessegment.ms 在主题级别上覆盖这些设置。无论您需要降低或引发这些值,都取决于删除片段的策略。较大的大小意味着活跃片段包含更多信息,经常滚动。段也变得更频繁地删除。

您可以设置基于时间或基于大小的日志保留和清理策略,以便日志保持可以管理。根据您的要求,您可以使用日志保留配置来删除旧的片段。如果使用日志保留策略,则在达到保留限制时会删除非主动日志片段。删除旧的片段会绑定日志所需的存储空间,因此您不会超过磁盘容量。

对于基于时间的日志保留,您可以根据小时、分钟和毫秒设置一个保留周期。保留周期基于时间信息附加到片段中。

毫秒的配置的优先级超过分钟,其优先级超过小时。分钟和毫秒配置默认为 null,但三个选项提供了对您要保留的数据进行大量控制。首选应分配给毫秒配置,因为它是唯一可动态更新的三个属性之一。

# ...
log.retention.ms=1680000
# ...
Copy to Clipboard Toggle word wrap

如果 log.retention.ms 设为 -1,则不会将时间限制应用到日志保留,因此会保留所有日志。应始终监控磁盘用量,但通常不建议 -1 设置,因为它可能会导致完整磁盘出现问题,这可能会很难重新处理。

对于基于大小的日志保留,您可以以字节为单位设置最大日志大小(日志中的所有片段):

# ...
log.retention.bytes=1073741824
# ...
Copy to Clipboard Toggle word wrap

换句话说,日志通常会在达到稳定状态后有大约 log.retention.bytes/log.segment.bytes 段。当达到最大日志大小时,旧的片段会被删除。

使用最大日志大小的潜在问题是,它不会考虑时间信息被附加到片段中。您可以使用基于时间和基于大小的日志保留来进行清理策略,以获取您需要的平衡。每当首先达到清理阈值时都会触发清理。

如果要在从系统中删除段文件前添加时间延迟,您可以为主题配置中的特定主题使用 log.segment. delete.delay.ms 添加延迟。

# ...
log.segment.delete.delay.ms=60000
# ...
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat