Zookeeper 自動刪除日志配置


1、背景

在使用zookeeper過程中,我們知道,會有dataDir和dataLogDir兩個目錄,分別用於snapshot和事務日志的輸出(默認
情況下只有dataDir目錄,snapshot和事務日志都保存在這個目錄中,正常運行過程中,ZK會不斷地把快照數據和事務日
志輸出到這兩個目錄,並且如果沒有人為操作的話,ZK自己是不會清理這些文件的,需要管理員來清理,這里介紹4種清理
日志的方法。

2、方法一

編寫腳本定時執行

[victor@node1 zookeeper-3.4.10]$ vim clean_zook_log.sh
#!/bin/bash
#snapshot file dir
dataDir=/opt/module/zookeeper-3.4.10/zkdata
#tran log dir
dataLogDir=/opt/module/zookeeper-3.4.10/zkdata
#zk log dir
#Leave 30 files
count=30
count=$[$count+1]
ls -t $dataLogDir/version-2/log.* | tail -n +$count | xargs rm -f
ls -t $dataDir/version-2/snapshot.* | tail -n +$count | xargs rm -f

crontab 定時任務

crontab -e
2 2 * * * /bin/bash /root/clean_zook_log.sh>/dev/null 2>&1
尖叫提示:保留最新的30個文件,可以將他寫到crontab中,設置為每天凌晨22分執行一次

3、方法二

使用ZK的工具類PurgeTxnLog,它的實現了一種簡單的歷史文件清理策略

java -cp zookeeper.jar:lib/slf4j-api-1.6.1.jar:lib/slf4j-log4j12-1.6.1.jar:lib/log4j-1.2.15.jar:conf org.apache.zookeeper.server.PurgeTxnLog <dataDir> <snapDir> -n <count>

4、方法三

ZK自己已經寫好了腳本,在bin/zkCleanup.sh中,直接使用這個腳本也是可以執行清理工作的

[victor@node1 zookeeper-3.4.10]$ bin/zkCleanup.sh

5、方法四

思想-通過配置參數

從zookeeper-3.4.0開始,zookeeper提供了自動清理snapshot和事務日志的功能,通過配置 
autopurge.snapRetainCount 和 autopurge.purgeInterval 這兩個參數能夠實現定時清理了。
這兩個參數都是在zoo.cfg中配置的:autopurge.purgeInterval  這個參數指定了清理頻率,單位是小時,
需要填寫一個1或更大的整數,默認是0,表示不開啟自己清理功能。
autopurge.snapRetainCount 這個參數和上面的參數搭配使用,這個參數指定了需要保留的文件數目。默認是保留3個。
通過配置 autopurge.snapRetainCount 和 autopurge.purgeInterval 這兩個參數能夠實現定時清理了。
這兩個參數都是在zoo.cfg中配置的,將其前面的注釋去掉,根據需要修改日志保留個數

操作

[victor@node1 conf]$ vim zoo.cfg
autopurge.snapRetainCount=20
autopurge.purgeInterval=48
尖叫提示:此處的配置就是:保留48小時內的日志,並且保留20個文件
zookeeper重啟會自動清除zookeeper.out日志,所以如果出錯要注意先備份這個文件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM