2017年11月28日 10:14:39 羊子雄起 阅读数 2059mongodb
版权声明:本文为博主原创文章,未经博主容许不得转载。 https://blog.csdn.net/u010499087/article/details/78652114shell
mongodb默认不提供直接按天来输出日志文件的配置,可是提供一个日志清理的命令:logRotate。若是日志不及时清理会致使mongo访问愈来愈慢,甚至卡死。服务器
要使用logRotate命令须要进入到mongo shell,而后执行:spa
use admin.net
#db.auth('username','password');日志
db.runCommand({logRotate:1});blog
必需要进到admin库中才生效,若是配置auth须要填写用户名和密码进程
执行完毕后会在logpath目录中生成一个当前时间节点的备份文件,而且原来的日志文件内容会被清除掉。crontab
具体的logRotate的介绍见:http://docs.mongodb.org/manual/tutorial/rotate-log-files/ci
在生产环境上不可能天天定时由人工来执行日志文件清理,因此能够写一个脚本,由crontab定时在天天定时执行转储工做,具体脚本内容以下:
mongo 127.0.0.1:27021/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的稳定性目前确实不尽人意。