美文网首页zookeeper
【zookeeper】zookeeper事务日志(log)文件和

【zookeeper】zookeeper事务日志(log)文件和

作者: Bogon | 来源:发表于2022-11-21 16:57 被阅读0次

    zookeeper服务器会产生三类日志:事务日志、快照日志和log4j日志。

    $ cat /path/to/zookeeper/conf/zoo.cfg

    tickTime=2000
    initLimit=5
    syncLimit=2
    maxClientCnxns=250
    dataDir=/path/to/zookeeper/data         //快照文件
    dataLogDir=/path/to/zookeeper/logs      //事务日志
    clientPort=2181
    server.0=xx.xx.xx.xx:2888:3888
    server.1=xx.xx.xx.xx:2888:3888
    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的日志和镜像文件:

    $  cd /var/zookeeper/version-2
    $  ls -ah
    -rw-r--r-- 1 zookeeper zookeeper 67108880 Sep 27 17:20 log.909e2d252
    -rw-r--r-- 1 zookeeper zookeeper 10408329 Sep 27 17:01 snapshot.909e2d250
    

    日志和快照文件,例如上面的:log.909e2d252和snapshot.909e2d250

    事务日志文件存放zookeeper全部数据记录 ,快照文件则是内存增量文件。

    清除方法1

    使用自定义清理脚本,clean_zook_log.sh脚本内容如下:

    #!/bin/bash
                
    #snapshot file dir
    dataDir=/var/zookeeper/version-2
    #tran log dir
    dataLogDir=/var/zookeeper/version-2
    logDir=/usr/local/zookeeper/logs
    #Leave 60 files
    count=60
    count=$[$count+1]
    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
    

    这个脚本保留最新的60个文件,可以将他写到 将这个脚本添加到crontab中,设置为每天凌晨2点?或者其他时间执行即可。

    $ crontab -e 
    
    2 2 * * * /bin/bash /usr/local/zookeeper/bin/clean_zook_log.sh > /dev/null 2>&1
    

    清除方法2

    zkCleanup.sh  参数1   -n  参数2
    
    参数1,zk data目录,即zoo.cfg文件中dataDir值
    参数2,保存最近的多少个快照,注意是快照文件,不是事务日志文件
    

    这个脚本是使用的zookeeper.jar里的org.apache.zookeeper.server.PurgeTxnLog这个class的main函数清理的,因此需要启动一个java进程,比shell清理要重一些。

    运行部分结果如下:

    Removing file: May 7, 2019 10:08:13 PM  /home/rhino/zookeeper-3.4.5-cdh5.7.0/data/version-2/snapshot.9705d31
    Removing file: May 7, 2019 10:09:02 PM  /home/rhino/zookeeper-3.4.5-cdh5.7.0/data/version-2/snapshot.9716217
    Removing file: May 7, 2019 10:10:17 PM  /home/rhino/zookeeper-3.4.5-cdh5.7.0/data/version-2/snapshot.972a9a4
    Removing file: May 7, 2019 10:11:14 PM  /home/rhino/zookeeper-3.4.5-cdh5.7.0/data/version-2/snapshot.973dd4f
    Removing file: May 7, 2019 10:12:09 PM  /home/rhino/zookeeper-3.4.5-cdh5.7.0/data/version-2/snapshot.975095c
    Removing file: May 7, 2019 10:13:35 PM  /home/rhino/zookeeper-3.4.5-cdh5.7.0/data/version-2/snapshot.9767995
    Removing file: May 7, 2019 10:14:45 PM  /home/rhino/zookeeper-3.4.5-cdh5.7.0/data/version-2/snapshot.977f8d7
    Removing file: May 7, 2019 10:15:32 PM  /home/rhino/zookeeper-3.4.5-cdh5.7.0/data/version-2/snapshot.978f829
    Removing file: May 7, 2019 10:16:25 PM  /home/rhino/zookeeper-3.4.5-cdh5.7.0/data/version-2/snapshot.979ca05
    
    

    清除方法3

    zoo.cfg配置文件中添加如下两个参数:
    
    # The number of snapshots to retain in dataDir
    autopurge.snapRetainCount=3
    
    # Purge task interval in hours
    # Set to "0" to disable auto purge feature
    
    autopurge.purgeInterval=1
    

    autopurge.purgeInterval 这个参数指定了清理频率,单位是小时,需要填写一个1或更大的整数,默认是0,表示不开启自动清理功能。

    autopurge.snapRetainCount 这个参数和上面的参数搭配使用,这个参数指定了需要保留的快照文件数目,默认是保留3个。

    参考

    ZooKeeper日志与快照文件简单分析
    https://www.cnblogs.com/felixzh/p/8462740.html

    Zookeeper事务日志和snapshot清理方式
    https://ningyu1.github.io/site/post/89-zookeeper-cleanlog

    zookeeper数据迁移及恢复
    https://ningyu1.github.io/site/post/101-zookeeper-data-migrate

    zookeeper日志各类日志简介
    https://www.cnblogs.com/jxwch/p/6526271.html

    ZooKeeper 3.4.3 API
    https://zookeeper.apache.org/doc/r3.4.3/api/index.html

    相关文章

      网友评论

        本文标题:【zookeeper】zookeeper事务日志(log)文件和

        本文链接:https://www.haomeiwen.com/subject/etrnxdtx.html