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使用介绍

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