zookeeper清理snapshot及事务日志

在使用zookeeper过程中,我们知道,会有dataDir和dataLogDir两个目录,分别用于snapshot和事务日志的输出(默认情况下只有dataDir目录,snapshot和事务日志都保存在这个目录中)

第一种,也是运维人员最常用的,写一个删除日志脚本,每天定时执行即可:

#!/bin/bash
           
#snapshot file dir
dataDir=/home/trade/zookeeper/data/zoo1
dataDir=/home/trade/zookeeper/data/zoo2
dataDir=/home/trade/zookeeper/data/zoo3
#tran log dir
dataLogDir=/home/trade/zookeeper/logs/zoo1
dataLogDir=/home/trade/zookeeper/logs/zoo2
dataLogDir=/home/trade/zookeeper/logs/zoo3
#logDir=/home/nileader/taokeeper/logs
#Leave 60 files
count=30
count=$[ $count +1]
ls -t $dataLogDir/log.* | tail -n+$count | xargs rm -f
ls -t $dataDir/snapshot.* | tail -n+$count | xargs rm -f
#ls -t  $logDir /zookeeper. log .* | tail -n + $count  | xargs rm -f

以上这个脚本定义了删除对应两个目录中的文件,保留最新的30个文件,可以将他写到crontab中,设置为每天凌晨2点执行一次就可以了。

crontab -e

2 2 * * * /bin/bash /root/clean_zook_log.sh > /dev/null 2>&1

第二种,从3.4.0开始,zookeeper提供了自动清理snapshot和事务日志的功能,通过配置 autopurge.snapRetainCount 和 autopurge.purgeInterval 这两个参数能够实现定时清理了。这两个参数都是在zoo.cfg中配置的:

autopurge.purgeInterval 这个参数指定了清理频率,单位是小时,需要填写一个1或更大的整数,默认是0,表示不开启自己清理功能。

autopurge.snapRetainCount 这个参数和上面的参数搭配使用,这个参数指定了需要保留的文件数目。默认是保留3个。

通过配置 autopurge.snapRetainCount 和 autopurge.purgeInterval 这两个参数能够实现定时清理了。
这两个参数都是在zoo.cfg中配置的,将其前面的注释去掉,根据需要修改日志保留个数:

tickTime=2000  
initLimit=10  
syncLimit=5  
dataDir=/usr/upload/zookeeper/version-2
dataLogDir=/usr/upload/zookeeper/logs  
clientPort=2181  
autopurge.snapRetainCount=20  
autopurge.purgeInterval=48  
server.1=u04rtv01.yaya.corp:2888:3888  
server.2=u04rtv02.yaya.corp:2888:3888  
server.3=u04rtv03.yaya.corp:2888:3888  
server.4=u04rtv04.yaya.corp:2888:3888  
server.5=u04rtv05.yaya.corp:2888:3888

此处我们的配置就是:保留48小时内的日志,并且保留20个文件

posted @ 2022-02-11 16:43  記憶や空白  阅读(494)  评论(0编辑  收藏  举报