ZooKeeper Notes 9】ZooKeepr日志清理

本文详细介绍了在使用Zookeeper过程中,如何清理snapshot和事务日志的4种方法,包括自定义脚本、使用ZK工具类PurgeTxnLog、ZK自带脚本和自动清理功能设置。

 转载请用注明:@ni掌柜 nileader@gmail.com

     在使用zookeeper过程中,我们知道,会有dataDir和dataLogDir两个目录,分别用于snapshot和事务日志的输出(默认情况下只有dataDir目录,snapshot和事务日志都保存在这个目录中,关于这两个目录的详细说明,请看《ZooKeeper管理员指南

》)。

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

https://issues.apache.org/jira/browse/ZOOKEEPER-957

http://zookeeper-user.578899.n2.nabble.com/PurgeTxnLog-td6304244.html

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

 
  1. #!/bin/bash 
  2.  
  3. #snapshot file dir 
  4. dataDir=/home/yinshi.nc/test/zk_data/version-2 
  5. #tran log dir 
  6. dataLogDir=/home/yinshi.nc/test/zk_log/version-2 
  7. #zk log dir 
  8. logDir=/home/yinshi.nc/test/logs 
  9. #Leave 66 files 
  10. count=66 
  11. count=$[$count+1] 
  12. ls -t $dataLogDir/log.* | tail -n +$count | xargs rm -f 
  13. ls -t $dataDir/snapshot.* | tail -n +$count | xargs rm -f 
  14. ls -t $logDir/zookeeper.log.* | tail -n +$count | xargs rm -f 
  15.  
  16. #find /home/yinshi.nc/taokeeper/zk_data/version-2 -name "snap*" -mtime +1 | xargs rm -f 
  17. #find /home/yinshi.nc/taokeeper/zk_logs/version-2 -name "log*" -mtime +1 | xargs rm -f 
  18. #find /home/yinshi.nc/taokeeper/logs/ -name "zookeeper.log.*" -mtime +1 | xargs rm –f 
以上这个脚本定义了删除对应两个目录中的文件,保留最新的66个文件,可以将他写到crontab中,设置为每天凌晨2点执行一次就可以了。

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

 
  1. 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个。

 

 

本文出自 “ni掌柜的笔记” 博客,请务必保留此出处http://nileader.blog.51cto.com/1381108/932156

<think>好的,我现在需要帮助用户找到ZooKeeper中配置定时清理日志的方法和参数。根据用户的问题,他们明确提到了想要了解配置方法或解决方案,特别是定时清理日志的部分。 首先,我需要回忆之前提供的引用内容。引用[1]提到从ZooKeeper 3.4.0版本开始,可以通过配置autopurge.snapRetainCount和autopurge.purgeInterval这两个参数来实现定时清理。这两个参数在zoo.cfg文件中设置。引用[2]补充了日志和快照文件的存储位置,可能在dataDir和dataLogDir指定的目录下。引用[3]则详细说明了配置文件的位置和相关的目录参数,比如dataDir和dataLogDir,以及tickTime等。引用[4]提到了自动清理方案和一些集群状态的检查命令,但可能和用户的问题关联不大,不过可以作为参考。 用户的需求是定时清理日志,所以重点应该在autopurge的两个参数上。需要确认参数的作用:autopurge.snapRetainCount指定保留的快照和日志文件数量,而autopurge.purgeInterval设置清理任务的时间间隔,单位是小时。例如,设置为1表示每小时检查一次清理。 然后,我需要告诉用户具体的配置步骤,包括如何编辑zoo.cfg文件,添加这两个参数,以及配置后的重启操作。同时,提醒用户注意版本要求,必须是3.4.0及以上,否则这些参数无效。此外,可能需要手动清理的方法作为备选方案,比如使用zkCleanup.sh脚本,但用户主要问的是定时配置,所以这部分可以简要提及。 另外,用户可能关心日志和快照文件的存储位置,需要说明dataDir和dataLogDir的作用,确保他们知道去哪里检查这些文件。引用[3]中提到了这两个目录的配置,所以需要强调正确设置这些目录的重要性,避免误删或配置错误。 最后,生成相关问题的时候,需要考虑用户可能的后续问题,比如如何验证配置是否生效,手动清理的方法,或者版本升级的注意事项。确保问题覆盖用户可能的需求扩展。</think>### ZooKeeper定时清理日志配置方法 ZooKeeper从3.4.0版本开始,可通过以下**两个核心参数**实现自动清理日志和快照文件: 1. **`autopurge.snapRetainCount`** 定义保留的**最新快照和对应事务日志文件数量**,默认值`3`,建议设置`5-10`。 例如:`autopurge.snapRetainCount=5` 表示保留最近5个快照及日志[^1][^2]。 2. **`autopurge.purgeInterval`** 设置**清理任务执行频率**(单位:小时),默认值`0`(关闭自动清理)。 例如:`autopurge.purgeInterval=24` 表示每天执行一次清理[^1][^2]。 #### 配置步骤: 1. 编辑配置文件 `zoo.cfg`(路径通常为 `/conf/zoo.cfg`) 2. 添加以下参数: ```properties autopurge.snapRetainCount=5 autopurge.purgeInterval=24 dataDir=/data/zookeeper dataLogDir=/data/zookeeper/logs ``` 3. 重启ZooKeeper服务生效 #### 注意事项: - 日志文件路径由 `dataLogDir` 指定,快照文件路径由 `dataDir` 指定[^3] - 若未配置 `dataLogDir`,事务日志默认存储在 `dataDir` 目录下 - 低于3.4.0的版本需手动清理或升级服务 #### 手动清理方法(备用): ```bash # 进入ZooKeeper安装目录 ./bin/zkCleanup.sh -n 5 # 保留5个最新文件 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值