zk自动清理日志

在使用zookeeper过程中,我们知道,会有dataDir和dataLogDir两个目录,分别用于snapshot和事务日志的输出

正常运行过程中,ZK会不断地把快照数据和事务日志输出到这两个目录,并且如果没有人为操作的话,ZK自己是不会清理这些文件的,需要管理员来清理,这里介绍4种清理日志的方法。在这4种方法中,推荐使用第一种方法,对于运维人员来说,将日志清理工作独立出来,便于统一管理也更可控。

第一种

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

#!/bin/bash

#snapshot file dir
dataDir=/home/nileader/taokeeper/zk_data/version-2
#tran log dir
dataLogDir=/home/nileader/taokeeper/zk_log/version-2
#zk log dir
logDir=/home/nileader/taokeeper/logs
#Leave 60 files
count=60
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

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

第二种

使用ZK的工具类PurgeTxnLog,它的实现了一种简单的历史文件清理策略,可以在这里看一下他的使用方法:http://zookeeper.apache.org/doc/r3.4.3/api/index.html,可以指定要清理的目录和需要保留的文件数目,简单使用如下:

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>

第三种

对于上面这个Java类的执行,ZK自己已经写好了脚本,在bin/zkCleanup.sh中,所以直接使用这个脚本也是可以执行清理工作的。

第四种

从3.4.0开始,zookeeper提供了自动清理snapshot和事务日志的功能,通过配置 autopurge.snapRetainCount 和 autopurge.purgeInterval 这两个参数能够实现定时清理了。这两个参数都是在zoo.cfg中配置的:autopurge.purgeInterval 这个参数指定了清理频率,单位是小时,需要填写一个1或更大的整数,默认是0,表示不开启自己清理功能。autopurge.snapRetainCount 这个参数和上面的参数搭配使用,这个参数指定了需要保留的文件数目。默认是保留3个。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这两天晚上下班回家,经常会碰到不知因何事,在马路边吵架骂街的人。吵架骂街的人越吵越凶,他们的任何一方,似乎都要证明...
    营养私教西西阅读 1,599评论 0 0
  • 太行八百唤知音,徒步登攀不老心。 返璞归真俗世远,闲云野鹤啸山林。 帝王将相今何在,孤立碑石见雪痕。 糊涂难得唯有...
    云水禅心ZLM阅读 1,456评论 0 5
  • 10月18日,世界慈善日。 世界慈善日 呼吁人类在世界慈善日当天,每人做一件好事,小小一件善事,生活更美好! 由中...
    闲闲1阅读 2,755评论 5 0
  • 为你去亡命天涯 我想抛弃自己的身世,重新犯罪 然后在天快黑的时候, 抱着我的吉他去亡命天涯 我戴着面具去月亮上唱歌...
    咚_阅读 1,131评论 0 0
  • 搁置了很久的简书今日再次拾起,又是在这样的深夜,听着父女二人的呼吸之声,我情深不知所眠,写点东西吧~ 今夜是妞妞第...
    做一位幸福的妈妈和老师阅读 890评论 0 0