Kafka 日誌保留策略(Log Retention Policy)
Kafka 日誌保留策略(Log Retention Policy)
前言
一兩週前測試kafka,建立了topic: data-time
,釋出了一部分資料,測試kafka的釋出和訂閱均正常。
一兩週後,也就是現在,再次取訂閱topic: data-time
。發現無法訂閱了,準備的說是 :訂閱失效了。
為了弄清楚前因後果,記錄一下...
一、kafka配置文件(server.properties)
摘選 server.properties 的日誌保留策略內容
############################# Log Retention Policy ############################# # The following configurations control the disposal of log segments. The policy can # be set to delete segments after a period of time, or after a given size has accumulated. # A segment will be deleted whenever *either* of these criteria are met. Deletion always happens # from the end of the log. # The minimum age of a log file to be eligible for deletion due to age log.retention.hours=168 # A size-based retention policy for logs. Segments are pruned from the log unless the remaining # segments drop below log.retention.bytes. Functions independently of log.retention.hours. #log.retention.bytes=1073741824 # The maximum size of a log segment file. When this size is reached a new log segment will be created. log.segment.bytes=1073741824 # The interval at which log segments are checked to see if they can be deleted according # to the retention policies log.retention.check.interval.ms=300000
按照註釋內容理解:kafka的日誌保留策略分成兩部分,其一是時間角度,其二是空間角度。這兩種策略是互相獨立的,互不影響的,可以同時存在。
二、時間角度
log.retention.hours=168
kafka預設日誌檔案保留時長是 168 hours (即7 days),當日志文件從建立時間開始,一旦超過設定的日誌保留時長,日誌檔案可能會被刪除
個人理解:kafka後臺執行緒會每隔一段時間(預設5 mins)去檢查一下日誌檔案是否可以刪除,當滿足刪除條件(時長)時,就可以將日誌檔案刪除。
時間引數:
1️⃣ log.retention.hours
2️⃣ log.retention.minutes
3️⃣ log.retention.ms
當log.retention.ms=-1,則日誌保留時長是沒有限制的(即永久保留)
時間引數優先順序:log.retention.ms > log.retention.minutes > log.retention.hours
三、空間角度
log.retention.bytes=1073741824
注意:在kafka配置文件中,這個配置條件是被註釋的。
kafka預設日誌檔案保留大小是 1073741824 bytes (即1 Gb),當日志文件從建立開始,一旦超過設定的日誌保留大小,日誌檔案可能會被刪除
個人理解:kafka後臺執行緒會每隔一段時間(預設5 mins)去檢查一下日誌檔案是否可以刪除,當滿足刪除條件(大小)時,就可以將日誌檔案刪除。