1. 程式人生 > 其它 >Kafka 日誌保留策略(Log Retention Policy)

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)去檢查一下日誌檔案是否可以刪除,當滿足刪除條件(大小)時,就可以將日誌檔案刪除。

四、參考

01-Kafka訊息保留機制 log.retention