1. 删除日志方法和快照文件方法
1》自动删除日子功能
java -Djava.ext.dirs=lib org.apache.zookeeper.server.PurgeTxnLog log_path snap_path -n 10
log_path: 日志的路径
snap_path:数据快照路径
其中-n 表示要保留多少个文件,不能低于3本例表示10条数据
Lib :表示 jar包库路径
实例:
java -Djava.ext.dirs=lib org.apache.zookeeper.server.PurgeTxnLog /usr/zookeeper-3.4.6_2/data /usr/zookeeper-3.4.6_2/logs -n
2》己编写脚本删除 日志和快照数据
Vi deleteLogAndSnapshot.sh
#!/bin/bash
#snapshot file dir
dataDir=/usr/zookeeper/data/snapshot/version-2
#tran log dir
dataLogDir=/usr/zookeeper/log/snapshot/version-2
#zk log dir
#Leave 10 files
count=10
count=$[$count+1]
ls -t $dataLogDir/log.* | tail -n +$count | xargs rm -f
ls -t $dataDir/snapshot.* | tail -n +$count | xargs rm -f
加入定时任务:
crontab –e
2 2 * * * /usr/zookeeper/bin/deleteLogAndSnapshot.sh > /dev/null 2>&1
cron文件语法:
分 小时 日 月 星期 命令
0-59 0-23 1-31 1-12 0-6 command
cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:
crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除没个用户的cron服务
crontab -e //编辑某个用户的cron服务
比如说root查看自己的cron设置:crontab -u root -l
再例如,root想删除fred的cron设置:crontab -u fred -r
在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e
3》从3.4.0开始,zookeeper在zoo.cfg中提供了自动清理snapshot和事务日志的功能,通过配置 autopurge.snapRetainCount 和 autopurge.purgeInterval 这两个参数能够实现定时清理了。这两个参数都是在zoo.cfg中配置的:
autopurge.purgeInterval 这个参数指定了清理频率,单位是小时,需要填写一个1或更大的整数,默认是0,表示不开启自己清理功能。
autopurge.snapRetainCount 这个参数和上面的参数搭配使用,这个参数指定了需要保留的文件数目。默认是保留3个。
2. 设置zookeeper 内存
zookeeper/bin/zkEnv.sh
安装的时候这个路径下没有有java.env文件,需要自己新建一个:
vi java.env
java.env文件内容如下:
#!/bin/sh
export JAVA_HOME=/usr/java/jdk
# heap size MUST be modified according to cluster environment
export JVMFLAGS="-Xms512m -Xmx1024m $JVMFLAGS"
对于内存的分配,还是根据项目和机器情况而定。如果内存够用,适当的大点可以提升zk性能
3. zookeeper 命令
Usage: ./zkServer.sh {start|start-foreground|stop|restart|status|upgrade|print-cmd}
4. zookeeper 查看日志命令
java -classpath .:slf4j-api-1.6.1.jar:zookeeper-3.4.9.jar org.apache.zookeeper.server.LogFormatter ../Data/datalog/version-2/log.1
进入lib
java -classpath .:slf4j-api-1.6.1.jar:zookeeper-3.4.6.jar org.apache.zookeeper.server.LogFormatter ../logs/version-2/log.dc81
5. zoo.cfg 参数说明:
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
#保存快照文件
dataDir=/usr/zookeeper-3.4.6_2/data
### log file 保存日志文件
dataLogDir=/usr/zookeeper-3.4.6_2/logs
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir 保留快照文件个数 默认3
autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature 1小时清理一下日志
autopurge.purgeInterval=1
#2888,3888 are election port 设置集群通讯
#server.1=192.168.90.107:2889:3881
#server.2=192.168.6.24:2890:3882
#其中,
#2888 端口号是 zookeeper 服务之间通信的端口。