zookeeper日志及快照清理操作
zookeeper
事务日志可视化转换
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
查看zookeeper日志的方法:在zookeeper主机上执行 zkLog2txt.sh <zk日志文件>,如下:
1 |
|
日志及快照清理
zookeeper主要存放了两类文件,一个是snapshot和log,前者是内存数的快照,后者类似mysql的binlog,将所有与修改数据相关的操作记录在log中,两类文件的目录可在配置文件中指定。
- 参考:
- ZooKeepr日志清理: ZooKeeper Notes 9】ZooKeepr日志清理_小狼_百度的博客-CSDN博客
- zookeeper 存储之文件格式分析: zookeeper 存储之文件格式分析_pwlazy的博客-CSDN博客
正常运行过程中,ZK会不断地把快照数据和事务日志输出到这两个目录,并且如果没有人为操作的话,ZK自己是不会清理这些文件的,需要管理员来清理,这里介绍4种清理日志的方法。在这4种方法中,推荐使用第一种方法,对于运维人员来说,将日志清理工作独立出来,便于统一管理也更可控。毕竟zk自带的一些工具并不怎么给力,这里是社区反映的两个问题:
- [ZOOKEEPER-957] zkCleanup.sh doesn't do anything - ASF JIRA
- http://zookeeper-user.578899.n2.nabble.com/PurgeTxnLog-td6304244.html
文件删除脚本
第一种,也是运维人员最常用的,写一个删除日志脚本,每天定时执行即可:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
以上这个脚本定义了删除对应两个目录中的文件,保留最新的66个文件,可以将他写到crontab中,设置为每天凌晨2点执行一次就可以了。
zkPurgeTxnLog工具
第二种,使用ZK的工具类PurgeTxnLog,它的实现了一种简单的历史文件清理策略,可以在这里看一下他的使用方法:ZooKeeper 3.4.3 API
可以指定要清理的目录和需要保留的文件数目,简单使用如下:
1 2 |
|
zkCleanup.sh
第三种,对于上面这个Java类的执行,ZK自己已经写好了脚本,在bin/zkCleanup.sh中,所以直接使用这个脚本也是可以执行清理工作的。
1 |
|
自动清理配置项
第四种,从3.4.0开始,zookeeper提供了自动清理snapshot和事务日志的功能,通过配置 autopurge.snapRetainCount
和 autopurge.purgeInterval
这两个参数能够实现定时清理了。这两个参数都是在zoo.cfg中配置的:
1 2 3 4 5 |
|
更多推荐
所有评论(0)