Mongodb默认日志的清理方法

发布时间:2020-12-07编辑:脚本学堂
本文介绍下, Mongodb中默认日志的清理方法,有需要的朋友参考学习下,希望对大家有一定的帮助。

本节主要内容:
学习下Mongodb默认日志的清理方法。

1,以追加方式开启mongod数据库的详细日志:
   such  as : 

复制代码 代码示例:
mongod -v --logpath /var/log/mongodb/server1.log --logappend
 

2,显示日志文件:
 

复制代码 代码示例:
ll /var/log/mongodb/server1.log*
 

3,日志持续增加,如果不定期清理,会影响mongodb的运行效率。
 
4,清理日志的办法
4.1,进入Mongo shell里面去清理,
 

复制代码 代码示例:
use admin
db.runCommand( { logrotate : 1 } )
PRIMARY> db.runCommand( { logRotate : 1 } );
{ "ok" : 1 }
PRIMARY>

执行后,到linux目录中查看:
 

复制代码 代码示例:
[root@jbxue mongodb]# ll *mongodb17* -t
-rw-r--r--. 1 root root     2424 May 21 10:26 mongodb17.log
-rw-r--r--. 1 root root  1774778 May 21 10:25 mongodb17.log.2013-05-21T02-25-29
 

会生成一个当前时间节点的log备份,然后生成一个新的跟原来日志一样名字的新日志文件。
 
4.2, From the UNIX shell, rotate logs for a single process by issuing the following command
 

复制代码 代码示例:
kill -SIGUSR1 <mongod process id>
 

需要pid,所以先去linux中查看mongodb的process id
 

复制代码 代码示例:
[root@jbxue mongodb]# ps -eaf|grep mongo
root     11857     1 12 May09 ?        1-10:51:19 /usr/local/mongodb37017/bin/mongod -f /etc/mongodb/37017.conf
root     11887     1  1 May09 ?        02:57:04 /usr/local/mongodb37018/bin/mongod -f /etc/mongodb/37018.conf
root     11902     1  1 May09 ?        02:58:35 /usr/local/mongodb37020/bin/mongod -f /etc/mongodb/37020.conf
root     11918     1  1 May09 ?        02:58:11 /usr/local/mongodb37019/bin/mongod -f /etc/mongodb/37019.conf
root     20572 20358  0 10:24 pts/0    00:00:00 /usr/local/mongodb37017/bin/mongo 127.0.0.1:37017/admin -uroot -proot
root     20964 20577  0 10:32 pts/2    00:00:00 grep mongo

找到mongodb的process id为11857 ,然后执行命令,follows:
 

复制代码 代码示例:
[root@jbxue mongodb]# kill -SIGUSR1 11857
[root@jbxue mongodb]# ll *mongodb17* -t
-rw-r--r--. 1 root root       71 May 21 10:34 mongodb17.log
-rw-r--r--. 1 root root    15613 May 21 10:33 mongodb17.log.2013-05-21T02-34-00
-rw-r--r--. 1 root root  1774778 May 21 10:25 mongodb17.log.2013-05-21T02-25-29
 

看到绿色粗体的就是新生成的备份的日志文件,然后生成一个新的跟原来日志 一样名字的新日志出来。
 
4.3,From the UNIX shell, rotate logs for all mongod processes on a machine by issuing the following command:
killall -SIGUSR1 mongod
看到这个是在linux下面rotate所有的mongodb进程的log,follows:
 

复制代码 代码示例:
[root@jbxue mongodb]# killall -SIGUSR1 mongod   #执行命令
[root@jbxue mongodb]#
[root@jbxue mongodb]# ll  -t
total 119656
-rw-r--r--. 1 root root      151 May 21 10:36 mongodb18.log
-rw-r--r--. 1 root root      374 May 21 10:36 mongodb20.log
-rw-r--r--. 1 root root       71 May 21 10:36 mongodb17.log
-rw-r--r--. 1 root root       71 May 21 10:36 mongodb19.log
-rw-r--r--. 1 root root     5524 May 21 10:36 mongodb17.log.2013-05-21T02-36-56
-rw-r--r--. 1 root root  1794901 May 21 10:36 mongodb19.log.2013-05-21T02-36-56
-rw-r--r--. 1 root root  1794518 May 21 10:36 mongodb20.log.2013-05-21T02-36-56
-rw-r--r--. 1 root root  1794805 May 21 10:36 mongodb18.log.2013-05-21T02-36-56
 

看到4个mongodb进程都生成了新的日志,备份了旧的日志。
 
4.4,CP,>,最原始的办法。
 

复制代码 代码示例:
cp mongodb17.log mongodb17.log.bak.2013-05-21.10-40
> mongodb17.log

推荐使用4.3 killall -SIGUSR1 mongod的方法。
备份完后,还需要自己压缩并将压缩日志文件,然后copy到日志备份文件服务器中。