MongoDB logrotate 配置

MongoDB logrotate config

我正在使用 MongoDB 1.6.4。我使用的脚本是:

/usr/local/test/r0/log/mongo.log {
    daily
    rotate 10
    nocompress
    dateext
    missingok
    notifempty
    sharedscripts
    copytruncate
    postrotate
        /bin/kill -SIGUSR1 `cat /export/home/d01/test/data/v1/mongo/repl0/mongod.lock 2> /dev/null` 2> /dev/null || true
    endscript
}

结果是这样的:

-rw-r--r-- 1 root root         0 May 12 04:02 mongo.log.2015-05-11T20-02-03
-rw-r--r-- 1 root root   1999708 May 12 04:02 mongo.log-20150512
-rw-r--r-- 1 root root         0 May 13 04:02 mongo.log.2015-05-12T20-02-02
-rw-r--r-- 1 root root   3127517 May 13 04:02 mongo.log-20150513
-rw-r--r-- 1 root root    875125 May 13 10:46 mongo.log

我不知道为什么会有一个虚拟日志。我的脚本有错误吗?谢谢。

似乎 MongoDB 正在使用内置的 logrotate 选项。 空文件由 mongodb 创建。

您可以尝试使用命令关闭mongodb中的选项 { logRotate: 0 }

或者,将其保持打开状态并禁用 MongoDB 的系统 logrotate。

最后我发现问题与后旋转有关。我更改为以下脚本,它工作正常。

/bin/kill -SIGUSR1 `cat /var/lib/mongo/mongod.lock 2> /dev/null` 2> /dev/null || true