黑猴子的家: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中,设置为每天凌晨2点2分执行一次

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日志,所以如果出错要注意先备份这个文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值