ZooKeeper運行時,定時清理日誌數據

 在使用zookeeper過程當中,咱們知道,會有dataDir和dataLogDir兩個目錄,分別用於snapshot和事務日誌的輸出(默認狀況下只有dataDir目錄,snapshot和事務日誌都保存在這個目錄中,關於這兩個目錄的詳細說明,請看《ZooKeeper管理員指南》)。html

      正常運行過程當中,ZK會不斷地把快照數據和事務日誌輸出到這兩個目錄,而且若是沒有人爲操做的話,ZK本身是不會清理這些文件的,須要管理員來清理,這裏介紹4種清理日誌的方法。在這4種方法中,推薦使用第一種方法,對於運維人員來講,將日誌清理工做獨立出來,便於統一管理也更可控。畢竟zk自帶的一些工具並不怎麼給力,這裏是社區反映的兩個問題:java

https://issues.apache.org/jira/browse/ZOOKEEPER-957apache

http://zookeeper-user.578899.n2.nabble.com/PurgeTxnLog-td6304244.htmlapi

第一種,也是運維人員最經常使用的,寫一個刪除日誌腳本,天天定時執行便可:bash

  1. #!/bin/bash 
  2.  
  3. #snapshot file dir 
  4. dataDir=/home/yinshi.nc/test/zk_data/version-2 
  5. #tran log dir 
  6. dataLogDir=/home/yinshi.nc/test/zk_log/version-2 
  7. #zk log dir 
  8. logDir=/home/yinshi.nc/test/logs 
  9. #Leave 66 files 
  10. count=66 
  11. count=$[$count+1] 
  12. ls -t $dataLogDir/log.* | tail -n +$count | xargs rm -f 
  13. ls -t $dataDir/snapshot.* | tail -n +$count | xargs rm -f 
  14. ls -t $logDir/zookeeper.log.* | tail -n +$count | xargs rm -f 
  15.  
  16. #find /home/yinshi.nc/taokeeper/zk_data/version-2 -name "snap*" -mtime +1 | xargs rm -f 
  17. #find /home/yinshi.nc/taokeeper/zk_logs/version-2 -name "log*" -mtime +1 | xargs rm -f 
  18. #find /home/yinshi.nc/taokeeper/logs/ -name "zookeeper.log.*" -mtime +1 | xargs rm –f 
以上這個腳本定義了刪除對應兩個目錄中的文件,保留最新的66個文件,能夠將他寫到crontab中,設置爲天天凌晨2點執行一次就能夠了。

       第二種,使用ZK的工具類PurgeTxnLog,它的實現了一種簡單的歷史文件清理策略,能夠在這裏看一下他的使用方法:http://zookeeper.apache.org/doc/r3.4.3/api/index.html,能夠指定要清理的目錄和須要保留的文件數目,簡單使用以下:運維

 

  1. java -cp zookeeper.jar:lib/slf4j-api-1.6.1.jar:lib/slf4j-log4j12-1.6.1.jar:lib/log4j-1.2.15.jar:conf org.apache.zookeeper.server.PurgeTxnLog <dataDir> <snapDir> -n <count> 

  第三種,對於上面這個Java類的執行,ZK本身已經寫好了腳本,在bin/zkCleanup.sh中,因此直接使用這個腳本也是能夠執行清理工做的。工具

     第四種,從3.4.0開始,zookeeper提供了自動清理snapshot和事務日誌的功能,經過配置 autopurge.snapRetainCount 和 autopurge.purgeInterval 這兩個參數可以實現定時清理了。這兩個參數都是在zoo.cfg中配置的:.net

 autopurge.purgeInterval  這個參數指定了清理頻率,單位是小時,須要填寫一個1或更大的整數,默認是0,表示不開啓本身清理功能。日誌

autopurge.snapRetainCount 這個參數和上面的參數搭配使用,這個參數指定了須要保留的文件數目。默認是保留3個。server

相關文章
相關標籤/搜索