zookeeper 清理snapshot及事務日誌
在使用zookeeper
過程中,我們知道,會有dataDir
和dataLogDir
兩個目錄,分別用於snapshot
和事務日誌的輸出(預設情況下只有dataDir
目錄,snapshot
和事務日誌都儲存在這個目錄中,關於這兩個目錄的詳細說明,請看《ZooKeeper
管理員指南》)。
第一種,也是運維人員最常用的,寫一個刪除日誌指令碼,每天定時執行即可:
#!/bin/bash
#snapshot file dir
dataDir=/user/upload/zookeeper/version-2
#tran log dir
dataLogDir=/user/upload/zookeeper/version-2
logDir=/home/nileader/taokeeper/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 /root/clean_zook_log.sh > /dev/null 2>&1
第二種,使用ZK
的工具類PurgeTxnLog
,它的實現了一種簡單的歷史檔案清理策略,可以在這裡看一下他的使用方法:http://zookeeper.apache.org/doc/r3.4.3/api/index.html,可以指定要清理的目錄和需要保留的檔案數目,簡單使用如下:
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
中配置的:
autopurge.purgeInterval
這個引數指定了清理頻率,單位是小時,需要填寫一個1
或更大的整數,預設是0
,表示不開啟自己清理功能。autopurge.snapRetainCount
這個引數和上面的引數搭配使用,這個引數指定了需要保留的檔案數目。預設是保留3
個。
通過配置 autopurge.snapRetainCount
和 autopurge.purgeInterval
這兩個引數能夠實現定時清理了。
這兩個引數都是在zoo.cfg
中配置的,將其前面的註釋去掉,根據需要修改日誌保留個數:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/upload/zookeeper/version-2
dataLogDir=/usr/upload/zookeeper/logs
clientPort=2181
autopurge.snapRetainCount=20
autopurge.purgeInterval=48
server.1=u04rtv01.yaya.corp:2888:3888
server.2=u04rtv02.yaya.corp:2888:3888
server.3=u04rtv03.yaya.corp:2888:3888
server.4=u04rtv04.yaya.corp:2888:3888
server.5=u04rtv05.yaya.corp:2888:3888
此處我們的配置就是:保留48小時內的日誌,並且保留20個檔案
相關文章
- MySQL 事務日誌MySql
- Elasticsearch 的事務日誌Elasticsearch
- PostgreSQL的xlog/Wal歸檔及日誌清理SQL
- Zookeeper原始碼分析(二) —– zookeeper日誌原始碼
- Zookeeper原始碼分析(二) ----- zookeeper日誌原始碼
- Mysql 事務日誌(Ib_logfile)MySql
- 11.日誌和事務@Transactional
- MySQL-14.MySQL事務日誌MySql
- Oracle歸檔日誌清理Oracle
- docker 容器日誌清理方案Docker
- 《MySQL 進階篇》十九:事務日誌MySql
- [轉] MySQL binlog 日誌自動清理及手動刪除MySql
- 日誌檔案過大清理
- Spring AOP 日誌攔截器的事務管理Spring
- MySQL 事務、日誌、鎖、索引學習總結,MySql索引
- ELK日誌定期清理 ES索引資料索引
- SQLSERVER事務日誌已滿 the transaction log for database 'xx' is fullSQLServerDatabase
- 伺服器事務日誌已滿解決方法伺服器
- SQLSERVER 事務日誌的 LSN 到底是什麼?SQLServer
- Sql Server2014資料庫清理日誌SQLServer資料庫
- Docker 日誌自動輪轉和清理配置Docker
- 微服務下,使用ELK做日誌收集及分析微服務
- 日誌服務
- mysql關於redo事務日誌ib_logfile的理解MySql
- SQLServer 2008中事務日誌已滿問題處理SQLServer
- mysql因為事務日誌問題無法啟動MySql
- 刪除事務日誌檔案並不安全WC
- 簡述 zookeeper 基於 Zab 協議實現選主及事務提交協議
- mysql關於ib_logfile事務日誌和binary log二進位制日誌的區別MySql
- 關係型資料庫中的事務管理詳解:併發控制與事務日誌資料庫
- linux自動清理Docker標準輸出日誌LinuxDocker
- ABAP 檢視webservice錯誤日誌事務碼:SRT_UTILWeb
- OceanBase 原始碼解讀(八):事務日誌的提交和回放原始碼
- SQLServer 2012 AG主節點無法截斷事務日誌SQLServer
- Filebeat 收集日誌的那些事兒
- 日誌服務之使用Nginx模式採集日誌Nginx模式
- 海豚排程清理:使用 API 輕鬆清理工作流歷史版本記錄,一鍵減少關係日誌和任務定義日誌表的資料量API
- 事務及索引索引