安装在云主机上的 Mongodb,运行一段时间之后发现硬盘快满了,仔细查看才发现原来是 Mongodb 的日志太大导致的。
MongoDB 的日志文件在设置 logappend=true 的情况下,会不断向同一日志文件追加的, 时间久了日志文件会变得非常大。
下面介绍一个不需要停止 mongodb 服务,可以使 MongoDB 关闭当前日志文件,重启一个新的日志文件,原有文件会自动备份的方法。
进入到 mongo 的命令行交互程序,输入:
use admin
db.runCommand({logRotate: 1})
[root@iZ2ze8rjpnp2e2cubjzdntZ ~]# mongo
MongoDB shell version v4.0.5 connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb Implicit session: session {"id" : UUID("1b261b4c-ee00-4480-b209-05770bfa6cfe") } MongoDB server version: 4.0.5
> use admin switched to db admin
> db.runCommand({logRotate:1})
{"ok" : 0, "errmsg" : "command logRotate requires authentication", "code" : 13, "codeName" : "Unauthorized"}
>
这时候会发现重启了一个新的 MongoDB.log,原有的日志自动备份(带时间戳 )
不过这样也还是麻烦,还是做个定时器,按每天来分割日志更方便些。以下操作是在 /www/server/mongodb/bin 目录,以我的 mongodb 安装目录为例子。
第一步:编写 logAppend.js
db.runCommand({logRotate:1});
第二步:编写编写 logAppend.sh
cd /www/server/mongodb
mongo 127.0.0.1:27017/admin logAppend.js
第三步:设置权限
chmod 755 logAppend.*
第四步:设置定时器
这里采用 crontab:
crontab -e
增加
0 3 * * * /www/server/mongodb/bin/logAppend.sh
正文完