PurgeTxnLog
源码分析
使用 PurgeTxnLog 则可以在编写清除脚本的时候调用 ZooKeeper 提供的工具类完成日志清理工作。
编写 PurgeTxnLog 类的调用程序,系统就会自动通过 PurgeTxnLog 工具类完成对应日志文件的清理工作。
代码语言:javascript复制#!/bin/sh
java -cp "$CLASSPATH" org.apache.zookeeper.server.PurgeTxnLog
echo "清理完成"
crontab
设定 ZooKeeper 快照和数据日志的对应文件夹路径,并通过 shell 脚本和管道和 find 命令 查询对应的日志下的日志文件,这里我们保留最新的 10 条数据日志,其余的全部清理.
代码语言:javascript复制#!/bin/bash
dataDir=/home/zk/zk_data/version-2
dataLogDir=/home/zk/zk_log/version-2
ls -t $dataLogDir/log.* | tail -n $count | xargs rm -f
ls -t $dataDir/snapshot.* | tail -n $count | xargs rm -f
ls -t $logDir/zookeeper.log.* | tail -n $count | xargs rm -f
find /home/home/zk/zk_data/version-2 -name "snap*" -mtime 1 | xargs rm -f
find /home/home/zk/zk_data/version-2 -name "snap*" -mtime 1 | xargs rm -f
find /home/home/zk/zk_data/logs/ -name "zookeeper.log.*" -mtime 1 | xargs rm –f
配置cron : 每天早上的 6 点到 8 点执行
代码语言:javascript复制0 6-8 * * * /usr/bin/logsCleanWeek.sh>/dev/null 2>&1
crontab 定时脚本的方式相对灵活,可以按照业务需求来设置处理日志的维护方式,比如仅希望定期清除 ZooKeeper 服务运行的日志,而不想清除数据快照的文件,则可以通过脚本设置,达到只对数据日志文件进行清理的目的。
走了~