lfa*_*des 7 linux journaling mongodb
我有一个使用大约 1GB 空间的 mongodb 数据库。当我的服务器空间不足时,我感到很惊讶,然后我意识到该日志使用了 3GB。
该文件指出,“一旦MongoDB中的日志文件适用于所有的写操作时,将删除这些文件”,但是,这并不似乎是如此,因为数据库同步和日记是不是整个数据库的大3倍。
如何删除这些日志文件并配置系统以使用更少的空间?
您引用的文档是正确的,如果您运行db.fsyncLock()命令,您会将所有更改刷新到磁盘,并且日志文件将被删除。一旦您运行db.fsyncUnlock()并且另一个写入到达,这些日志文件就会重新出现:
这是测试系统的一个简单示例:
> db.foo.insert({"id" : 1})
Run Code Online (Sandbox Code Playgroud)
日志目录如下所示:
$ls /usr/local/var/mongodb/journal/
j._1 lsn
$
Run Code Online (Sandbox Code Playgroud)
现在,让我们锁定它并将所有内容刷新到磁盘:
> db.fsyncLock()
{
"info" : "now locked against writes, use db.fsyncUnlock() to unlock",
"seeAlso" : "http://dochub.mongodb.org/core/fsynccommand",
"ok" : 1
}
Run Code Online (Sandbox Code Playgroud)
日志目录现在是空的:
$ls /usr/local/var/mongodb/journal/
$
Run Code Online (Sandbox Code Playgroud)
解锁,插入:
> db.fsyncUnlock()
{ "ok" : 1, "info" : "unlock completed" }
> db.foo.insert({"id" : 1})
Run Code Online (Sandbox Code Playgroud)
现在我们又有了日志文件:
$ls /usr/local/var/mongodb/journal/
j._2 lsn
$
Run Code Online (Sandbox Code Playgroud)
因此,如果您没有锁定,将数据库刷新到磁盘并不断有写入,您将始终拥有日志文件。
同样,当您彻底关闭mongod实例时,一旦成功完成磁盘刷新,日志文件就会被删除。
如果您想让日志文件更小,您可以考虑使用该--smallfiles选项运行。这将为您提供 3 x 128MB 文件,而不是 3 x 1GB 文件。