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使用一样保存退出后定时调用就会加入到定时任务中