mongo日誌按天切割

mongo日誌按天切割

mongodb日誌默認是單個文件的append模式,也就意味着日誌文件會愈來愈大

可以通過mongodb提供的logRotate邏輯實現一個日誌切割和過期日誌刪除的腳本

腳本內容如下

#!/bin/sh
source /root/.bashrc

DAYS=7 #DAYS=7代表刪除7天前的備份,即只保留最近7天的備份

echo -e "use admin \n db.runCommand({logRotate:1})" | mongo1
echo -e "use admin \n db.runCommand({logRotate:1})" | mongo2

find /data/log/ -mtime +$DAYS -delete
find /data2/log/ -mtime +$DAYS -delete

腳本中使用了 mongo1 mongo2 這種命令,這裏是在.bashrc中加入的快捷訪問數據庫的函數

命令內容如下

alias mongo1='mongo ${HOST} -u${usr} -p ${password} --authenticationDatabase admin'

其中HOST usr password可以直接進行文本替換或者在.bashrc文件前面進行賦值

最後的命令find /data/log/ -mtime +$DAYS -delete 表示刪除DAYS天之前的文件,其中mtime(modification time)也就是文件修改時間

腳本創建好之後就要加入到定時運行任務中讓腳本每天0晨調用了,這裏使用crontab來完成定時運行邏輯

執行 crontab -e 打開crontab配置文件,插入如下內容

0 0 * * * /script/monogolog_roate.sh > /script/mongod_log_roate.log 2>&1 &
  • 0 0 * * * 表示每天的0:0運行
  • /script/monogolog_roate.sh 是上面創建的腳本
  • /script/mongod_log_roate.log 是執行結果日誌
  • 2>&1 表示將錯誤輸出流導入到標準輸出流
  • 最後的&表示命令將後臺執行

和vim使用一樣保存退出後定時調用就會加入到定時任務中

參考地址
MongoDB 日誌切換(Rotate Log Files)實戰
crontab使用介紹

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章