正如 mnemosyn 的回答中所解释的,日志对于存储引擎来说是必不可少的。幸运的是,它可以在一定程度上得到控制。以下是为MMAPv1存储引擎编写的,这是 MongoDB 3.2 之前的默认设置。然后,WiredTiger成为首选引擎,可以在此答案的底部找到更多信息。
MMAPv1
MongoDB < 2.6(非 YAML 配置)
对于我们的开发服务器,我们使用了以下过程:
cp -p /etc/mongodb.conf /etc/mongodb.conf.orig
vi /etc/mongodb.conf
现在,插入
smallfiles=true
进入mongodb.conf,然后保存。smallfiles将日志文件限制为 128MB。
service mongodb stop
rm -rf /var/lib/mongodb/journal/*
service mongodb start
MongoDB >= 2.6(YAML 配置)
如果您使用带有YAML 配置样式的 MMAPv1 ,请使用与上述相同的步骤来备份配置,但要备份到
mmapv1:
配置块,插入
smallFiles: true
. 之后,按照上述方式进行操作,在删除日志的同时重新启动服务器。
WiredTiger (MongoDB >=3.0, 默认自 3.2)
在开发机器上,默认情况下,WiredTiger 下的日志文件应该比 MMAPv1 下的日志文件小一些,因为默认情况下启用了日志压缩。根据文档,“MongoDB 的 WiredTiger 日志文件的最大大小限制约为 100 MB”。它将“每隔 60 秒或 2 GB 的日志数据创建检查点(即将快照数据写入磁盘)”。
因此,如果您只在数据库上运行少量请求(几乎没有要更改的数据),则使用 WiredTiger 的日志文件不应超过 100 MB 的低倍数。然而,日志文件的大小似乎不可配置。