当mongodb实例启动时指定logpath或systemLog.path参数,mongod和mongos实例将向日志文件中持续的记录数据库的活动日志。
而MongoDB默认情况下不会自动的切换日志的,这将会导致服务日志日渐增大,在业务繁忙的场景,日志的增长量会非常大。持续增长的日志文件,不仅占用系统磁盘,并且还会拖慢服务器的运行速度。所以我们需要能对服务日志进行日志切换。
在MongoDB中,切换日志的触发条件有两种:
1、admin库下执行logRotate命令。
use admin
db.runCommand({logRotate:1})
2、mongod或者mongos进程从操作系统接收SIGUSR1信号。
这种方法对linux或类UNiX系统有效。对于基于Linux和unix的系统,可以使用SIGUSR1信号来切换单个进程的日志。
假设mongod的进程号为7393,如下命令将会为该实例轮转日志。
kill -SIGUSR1 7393
执行上述rotate log的两种方法,会触发mongod切换日志,但是如何进行切换,取决于systemLog.logRotate参数或--logRotate选项设置。
rename
当systemLog.logRotate或--logRotate设置为rename时,mongod将会归档当前日志文件,并启动一个新的日志文件,形式是以ISODate格式在文件名中附加UTC时间戳,重命名当前日志文件,并打开一个新的日志文件,关闭旧的日志,并将新的日志条目发送到新的日志文件。
(base) ackkky@ackkkydeMacBook-