MongoDB配置按天存储日志文件完结篇

假如想象 提交于 2019-11-30 09:35:29

MongoDB配置按天存储日志文件

2017年11月28日 10:14:39 羊子雄起 阅读数 2059

 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010499087/article/details/78652114

mongodb默认不提供直接按天来输出日志文件的配置,但是提供一个日志清理的命令:logRotate。如果日志不及时清理会导致mongo访问越来越慢,甚至卡死。

 

 

要使用logRotate命令需要进入到mongo shell,然后执行:

use admin

#db.auth('username','password');

db.runCommand({logRotate:1});

必须要进到admin库中才生效,如果配置auth需要填写用户名和密码

执行完毕后会在logpath目录中生成一个当前时间节点的备份文件,并且原来的日志文件内容会被清除掉。

具体的logRotate的介绍见:http://docs.mongodb.org/manual/tutorial/rotate-log-files/

在生产环境上不可能每天定时由人工来执行日志文件清理,所以可以写一个脚本,由crontab定时在每天定时执行转储工作,具体脚本内容如下:

mongo 127.0.0.1:27021/admin --eval "db.auth('admin','admin@123');db.runCommand({logRotate:1});"
mongo 127.0.0.1:27022/admin --eval "db.auth('admin','admin@123');db.runCommand({logRotate:1});"
mongo 127.0.0.1:27023/admin --eval "db.auth('admin','admin@123');db.runCommand({logRotate:1});"

......

其中需要配置IP和端口,如果开启auth,需要填写访问admin库的用户名和密码

 

清理日志sh

mongolog.sh


#!/bin/sh
mongo 127.0.0.1:27017/admin --eval "db.auth('root','2018');db.runCommand
({logRotate:1});"
sleep 20s
find /data/mongodb/logs/mongod.log.* -type f -mtime +1 -delete

删除一天以上的日志
 

 

chmod a+x mongolog.sh

 

crontab的配置如下:


18 11 * * * /data/mongodb/mongolog.sh >> /data/mongodb/success.log
 

成功后生成日志

参考:http://www.16boke.com/article/detail/104

 


目前采取的方法:

· SIGUSR1 方法

killall -SIGUSR1 进程名

killall -SIGUSR1 mongod   
每天0点定时执行来达切换日志。

kill -SIGUSR1  进程id

kill -SIGUSR1  19555   

通过mongod.lock查找进程id

kill -SIGUSR1 `cat /home/myleguan/mongo/mongod.lock` 

大部分情况下并无问题,但近期集中出现了两台服务器日志切换时出现问题,0点到0点20分左右
,日志是空的。mongod 或者config报警,进程重启(自动),该bug至少要到2.5.x才修复。
MongoDB的稳定性目前确实不尽人意。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!