在Linux中,Kafka的日志清理策略主要包括以下幾種:
基于時間的日志清理
- 配置參數:
log.retention.hours(小時)、log.retention.minutes(分鐘)、log.retention.ms(毫秒)。
- 描述:當日志段超過指定的保留時間后,Kafka會刪除這些日志段。默認值為168小時(7天)。
基于日志大小的清理
- 配置參數:
log.retention.bytes(字節)。
- 描述:當某個分區日志的大小達到配置的上限時,Kafka會自動清理最舊的日志數據,避免存儲空間被占滿。默認值為無窮大(-1),表示不限制。
日志壓縮(Log Compaction)
- 配置參數:
log.cleanup.policy(設置為compact啟用壓縮策略)、log.cleaner.enable(默認值為true)。
- 描述:壓縮策略主要用于僅保留每個鍵的最新日志版本,適用于需要追蹤狀態變化的場景。例如,在一個主題中只有最新的key對應的數據被保留,其他舊版本的數據會被清理。
混合策略(Delete + Compact)
- 描述:老的segment會因為大小或時間被刪除,同時topic partition也會被compact。適用于既有時間保留需求又有空間優化需求的場景。
基于日志起始偏移量的保留策略
- 描述:基于日志段的起始偏移量來決定哪些日志段可以被刪除。這個策略在較新版本的Kafka中引入。
需要注意的是,具體的配置參數可能會因Kafka版本的不同而有所差異,因此在實際應用中,還需要根據具體的業務需求和系統環境來調整相關參數。