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使用一樣保存退出後定時調用就會加入到定時任務中