mongodb的日志清理学习整理

   今天客户要求提供mongo的日志清理方案,客户提供了kill -SIGUSR1的方式,在此记录学习以及测试过程,以及其他几种日志清理方式。

方法1:在mongo的shell 里使用db.runCommand({logRotate:1})来进行日志的整理:

操作如下:

shard1:PRIMARY> use admin
switched to db admin
shard1:PRIMARY> db.runCommand({logRotate:1})
{ "ok" : 1 }

操作前后日志目录状态:

前:

[root@mysql1 log]# ll
total 600
-rw-rw-r-- 1 mongo mongo 156703 May 8 22:43 arbiter.log
-rw-rw-r-- 1 mongo mongo 446123 May 8 22:29 mongod.log

后:

[root@mysql1 log]# ll
total 604
-rw-rw-r-- 1 mongo mongo 156703 May 8 22:43 arbiter.log
-rw-r--r-- 1 root root 1114 May 8 22:44 mongod.log
-rw-rw-r-- 1 mongo mongo 446123 May 8 22:29 mongod.log.2018-05-08T14-44-56

执行命令后,复制出一份新的以时间命名的日志文件。

方法2:使用客户提供的命令kill -SIGUSR1的命令。

首先查询mongod 的进程号码:

[root@mysql1 log]# ps -ef|grep mongod
root 1335 1 1 22:15 ? 00:00:53 /usr/local/mongodb/bin/mongod -f /data/mongodb/conf/mongod.conf
root 1620 1416 0 23:09 pts/1 00:00:00 grep mongod

找到mongod的进程号码 1335,然后执行:

[root@mysql1 log]# kill -SIGUSR1 1335

前:

[root@mysql1 log]# ll
total 12
-rw-r--r-- 1 root root 1306 May 8 23:13 arbiter.log
-rwxr-xr-x 1 root root 356 May 8 23:08 clear-log.sh
-rw-r--r-- 1 root root 1540 May 8 23:23 mongod.log

后:

[root@mysql1 log]# ll
total 16
-rw-r--r-- 1 root root 1306 May 8 23:13 arbiter.log
-rwxr-xr-x 1 root root 356 May 8 23:08 clear-log.sh
-rw-r--r-- 1 root root 1301 May 8 23:30 mongod.log
-rw-r--r-- 1 root root 1540 May 8 23:23 mongod.log.2018-05-08T15-30-42

执行完命令kill -SIGUSR1 1335(进程号)后,生成了原日志mongod.log文件大小相同,以时间命名的新的日志文件。

 

方法3:使用命令killall -SIGUSR1 mongod 

执行命令:[root@mysql1 log]# killall -SIGUSR1 mongod

前:

[root@mysql1 log]# ll
total 12
-rw-r--r-- 1 root root 1306 May 8 23:13 arbiter.log
-rwxr-xr-x 1 root root 356 May 8 23:08 clear-log.sh
-rw-r--r-- 1 root root 1301 May 8 23:30 mongod.log

后:

[root@mysql1 log]# ll
total 20
-rw-r--r-- 1 root root 1306 May 8 23:33 arbiter.log
-rw-r--r-- 1 root root 1306 May 8 23:13 arbiter.log.2018-05-08T15-33-49
-rwxr-xr-x 1 root root 356 May 8 23:08 clear-log.sh
-rw-r--r-- 1 root root 1301 May 8 23:33 mongod.log
-rw-r--r-- 1 root root 1301 May 8 23:30 mongod.log.2018-05-08T15-33-49

这个命令可以清理一台服务器上部署多个mongod的情况。

方法4:

CP,>,最原始的办法。
cp mongodb17.log mongodb17.log.bak.2013-05-21.10-40
> mongodb17.log

 

可根据实际需要去选择,对于mongo 数据库,个人推荐使用kill -SIGUSR1 这个命令,这个命令在redis上尝试使用,直接把redis的进程给杀死了。使用在mysql上,虽然进程没死,但是也和日志没关系。所以这个命令只适合mongo。

 

posted @ 2018-05-08 23:46  feifeizouzou  阅读(4964)  评论(0编辑  收藏  举报