e2

滴滴侠,fai抖

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

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日志,所以如果出错要注意先备份这个文件
posted on 2020-01-31 19:08  纯黑Se丶  阅读(1373)  评论(0编辑  收藏  举报