【zookeeper】zookeeper事务日记(log)文件和快照(snapshot)文件清理 ...

打印 上一主题 下一主题

主题 928|帖子 928|积分 2784

发起阅读:2025金三银四进大厂必刷的Java面试题 (全彩版)结果呢,也是不负众望,中大厂、大厂的offer那是一波接一波,薪资嘛,根本都是原来的两倍、三倍往上走,最高的一个有赞,直接给他开了30K的价码。于是,跳槽这事儿就提上了日程,一开始吧,他还挺保守,想着去货拉拉、唯品会这些中大厂地痞,要是能冲进阿里、网易这些大佬的阵营,那就更赚了。上半年,我给他们整了个“Java面试题库”,里面的题啊,都是从各大厂面试真题里挑出来的,分了技术点,上千道题呢,另有答案详解。说白了,就是得:面试前预备充分,复习得高效,还得有个强大的心脏,别一紧张就啥都不会了。
https://blog.csdn.net/2403_88996764/article/details/145190795?spm=1001.2014.3001.5501
   
zookeeper服务器会产生三类日记:事务日记、快照日记和log4j日记。
$ cat /path/to/zookeeper/conf/zoo.cfg

  1. tickTime=2000
  2. initLimit=5
  3. syncLimit=2
  4. maxClientCnxns=250
  5. dataDir=/path/to/zookeeper/data         //快照文件
  6. dataLogDir=/path/to/zookeeper/logs      //事务日志
  7. clientPort=2181
  8. server.0=xx.xx.xx.xx:2888:3888
  9. server.1=xx.xx.xx.xx:2888:3888
  10. server.2=xx.xx.xx.xx:2888:3888
复制代码
在zookeeper默认配置文件zoo.cfg(可以修改文件名)中有一个配置项dataDir,该配置项用于配置zookeeper快照日记和事务日记的存储地点。
在官方提供的默认参考配置文件zoo_sample.cfg中,只有dataDir配置项。实在在实际应用中,还可以为事务日记专门配置存储地点,配置项名称为dataLogDir,在zoo_sample.cfg中并未体现出来。
在没有dataLogDir配置项的时候,zookeeper默认将事务日记文件和快照日记文件都存储在dataDir对应的目次下。
发起将事务日记(dataLogDir)与快照日记(dataLog)单独配置,由于当zookeeper集群举行频繁的数据读写操纵是,会产生大量的事务日记信息,将两类日记分开存储会提高系统性能,而且,可以答应将两类日记存在在不同的存储介质上,淘汰磁盘压力。
log4j用于记载zookeeper集群服务器运行日记,该日记的配置地点在conf/目次下的log4j.properties文件中,该文件中有一个配置项为“zookeeper.log.dir=.”,表现log4j日记文件在与执行程序(zkServer.sh)在同一目次下,当执行zkServer.sh 时,在该文件夹下会产生zookeeper.out日记文件。
version-2文件夹下存放的是zookeeper的日记和镜像文件:

  1. $  cd /var/zookeeper/version-2
  2. $  ls -ah
  3. -rw-r--r-- 1 zookeeper zookeeper 67108880 Sep 27 17:20 log.909e2d252
  4. -rw-r--r-- 1 zookeeper zookeeper 10408329 Sep 27 17:01 snapshot.909e2d250
复制代码
日记和快照文件,比方上面的:log.909e2d252和snapshot.909e2d250
事务日记文件存放zookeeper全部数据记载 ,快照文件则是内存增量文件。
清除方法1
使用自定义清理脚本,clean_zook_log.sh脚本内容如下:

  1. #!/bin/bash
  2.             
  3. #snapshot file dir
  4. dataDir=/var/zookeeper/version-2
  5. #tran log dir
  6. dataLogDir=/var/zookeeper/version-2
  7. logDir=/usr/local/zookeeper/logs
  8. #Leave 60 files
  9. count=60
  10. count=$[$count+1]
  11. ls -t $dataLogDir/log.* | tail -n +$count | xargs rm -f
  12. ls -t $dataDir/snapshot.* | tail -n +$count | xargs rm -f
  13. ls -t $logDir/zookeeper.log.* | tail -n +$count | xargs rm -f
复制代码
这个脚本保留最新的60个文件,可以将他写到 将这个脚本添加到crontab中,设置为每天凌晨2点?或者其他时间执行即可。

  1. $ crontab -e
  2. 2 2 * * * /bin/bash /usr/local/zookeeper/bin/clean_zook_log.sh > /dev/null 2>&1
复制代码
清除方法2

  1. zkCleanup.sh  参数1   -n  参数2
  2. 参数1,zk data目录,即zoo.cfg文件中dataDir值
  3. 参数2,保存最近的多少个快照,注意是快照文件,不是事务日志文件
复制代码
这个脚本是使用的zookeeper.jar里的org.apache.zookeeper.server.PurgeTxnLog这个class的main函数清理的,因此需要启动一个java历程,比shell清理要重一些。
运行部分结果如下:

  1. Removing file: May 7, 2019 10:08:13 PM  /home/rhino/zookeeper-3.4.5-cdh5.7.0/data/version-2/snapshot.9705d31
  2. Removing file: May 7, 2019 10:09:02 PM  /home/rhino/zookeeper-3.4.5-cdh5.7.0/data/version-2/snapshot.9716217
  3. Removing file: May 7, 2019 10:10:17 PM  /home/rhino/zookeeper-3.4.5-cdh5.7.0/data/version-2/snapshot.972a9a4
  4. Removing file: May 7, 2019 10:11:14 PM  /home/rhino/zookeeper-3.4.5-cdh5.7.0/data/version-2/snapshot.973dd4f
  5. Removing file: May 7, 2019 10:12:09 PM  /home/rhino/zookeeper-3.4.5-cdh5.7.0/data/version-2/snapshot.975095c
  6. Removing file: May 7, 2019 10:13:35 PM  /home/rhino/zookeeper-3.4.5-cdh5.7.0/data/version-2/snapshot.9767995
  7. Removing file: May 7, 2019 10:14:45 PM  /home/rhino/zookeeper-3.4.5-cdh5.7.0/data/version-2/snapshot.977f8d7
  8. Removing file: May 7, 2019 10:15:32 PM  /home/rhino/zookeeper-3.4.5-cdh5.7.0/data/version-2/snapshot.978f829
  9. Removing file: May 7, 2019 10:16:25 PM  /home/rhino/zookeeper-3.4.5-cdh5.7.0/data/version-2/snapshot.979ca05
复制代码
清除方法3

  1. zoo.cfg配置文件中添加如下两个参数:
  2. # The number of snapshots to retain in dataDir
  3. autopurge.snapRetainCount=3
  4. # Purge task interval in hours
  5. # Set to "0" to disable auto purge feature
  6. autopurge.purgeInterval=1
复制代码
autopurge.purgeInterval 这个参数指定了清理频率,单位是小时,需要填写一个1或更大的整数,默认是0,表现不开启自动清理功能。
autopurge.snapRetainCount 这个参数和上面的参数搭配使用,这个参数指定了需要保留的快照文件数目,默认是保留3个。
删除 zookeeper历史日记:

  1. $ find /path/to/zookeeper/logs/version-2/  -mtime +30   -name "log.*"  -exec  rm -f  {}  \;
  2. $ find /path/to/zookeeper/data/version-2/  -mtime +30   -name "log.*"  -exec  rm -f  {}  \;
复制代码
  发起阅读:2025金三银四进大厂必刷的Java面试题 (全彩版)结果呢,也是不负众望,中大厂、大厂的offer那是一波接一波,薪资嘛,根本都是原来的两倍、三倍往上走,最高的一个有赞,直接给他开了30K的价码。于是,跳槽这事儿就提上了日程,一开始吧,他还挺保守,想着去货拉拉、唯品会这些中大厂地痞,要是能冲进阿里、网易这些大佬的阵营,那就更赚了。上半年,我给他们整了个“Java面试题库”,里面的题啊,都是从各大厂面试真题里挑出来的,分了技术点,上千道题呢,另有答案详解。说白了,就是得:面试前预备充分,复习得高效,还得有个强大的心脏,别一紧张就啥都不会了。
https://blog.csdn.net/2403_88996764/article/details/145190795?spm=1001.2014.3001.5501
  

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

八卦阵

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表