zkCleanup.sh清理zookeeper事务日志(log)文件和快照(snapshot)文件
相关大佬博客# zookeeper 事务日志和快照文件介绍https://www.cnblogs.com/jxwch/p/6526271.html# 清理文件https://blog.csdn.net/njuptcyd/article/details/90083795大佬手动清理的文章写得很好,就是描述能力差了不少…,走投无路之下还是看了半天zookeeper的清理脚本内容才搞清楚…自动清理方式:
·
相关大佬博客
# zookeeper 事务日志和快照文件介绍
https://www.cnblogs.com/jxwch/p/6526271.html
# 清理文件
https://blog.csdn.net/njuptcyd/article/details/90083795
大佬手动清理的文章写得很好,就是描述能力差了不少…,走投无路之下还是看了半天zookeeper的清理脚本内容才搞清楚…
自动清理方式:添加到zoo.cfg
# 指定每隔12小时清理一次zookeeper事务日志,防止事务日志过多占用空间,清理后保留最近10份
autopurge.snapRetainCount=10
autopurge.purgeInterval=12
手动清理
zkCleanup.sh -n 10
直接-n 指定保留的文件数即可,不需要指定目录,因为配置文件中已经写了,执行这个脚本的时候,脚本会先加载Env脚本中的所有内容,然后根据Env文件中获取配置文件的位置,再去配置文件中获取这两个目录的位置,如果配置文件中写了以下内容
# 路径不一样的,但是前缀肯定有的
dataDir=/usr/local/zookeeper-3.4.13/data
dataLogDir=/usr/local/zookeeper-3.4.13/datalog
那么他会优先使用配置文件定义的,如果配置文件中没有,才会使用传入的位置.
直接运行文件所给出的提示
[root@h1 zookeeper-3.4.13]# zkCleanup.sh
Usage:
PurgeTxnLog dataLogDir [snapDir] -n count
dataLogDir -- path to the txn log directory
snapDir -- path to the snapshot directory
count -- the number of old snaps/logs you want to keep, value should be greater than or equal to 3
脚本内容
ZOOBIN="${BASH_SOURCE-$0}"
ZOOBIN="$(dirname "${ZOOBIN}")"
ZOOBINDIR="$(cd "${ZOOBIN}"; pwd)"
# 执行zkEnv.sh 获取变量
if [ -e "$ZOOBIN/../libexec/zkEnv.sh" ]; then
. "$ZOOBINDIR"/../libexec/zkEnv.sh
else
. "$ZOOBINDIR"/zkEnv.sh
fi
# 获取配置文件位置
ZOODATADIR="$(grep "^[[:space:]]*dataDir=" "$ZOOCFG" | sed -e 's/.*=//')"
ZOODATALOGDIR="$(grep "^[[:space:]]*dataLogDir=" "$ZOOCFG" | sed -e 's/.*=//')"
# 判断变量是否为空 不为空表示从配置文件获取到了快照目录和事务日志目录.
if [ "x$ZOODATALOGDIR" = "x" ]
then
"$JAVA" "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \
-cp "$CLASSPATH" $JVMFLAGS \
org.apache.zookeeper.server.PurgeTxnLog "$ZOODATADIR" $*
else
# 调用jar包清理
"$JAVA" "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \
-cp "$CLASSPATH" $JVMFLAGS \
org.apache.zookeeper.server.PurgeTxnLog "$ZOODATALOGDIR" "$ZOODATADIR" $*
fi
更多推荐
已为社区贡献1条内容
所有评论(0)