linux - 删除mongodb的日志文件安全吗?

标签 linux mongodb disk

如果我删除3.1G的日志文件,sudo service mongodb restart会失败。但是,此文件占用了太多空间。我怎么解决这个问题?如何删除它?

bash$ du -sh /var/lib/mongodb/*
4.0K    _tmp
65M auction_development.0
128M    auction_development.1
17M auction_development.ns
3.1G    journal
4.0K    mongod.lock

最佳答案

TL;DR:你有两个选择。在启动 MongoDB 到 limit the size of the journal files 时使用 --smallfiles 启动选项到 128MB,或使用 --nojournal 选项关闭日志。在生产环境中使用 --nojournal 通常是个坏主意,而且在开发环境中使用不同的写入关注点通常是有意义的,这样您就不会在 dev 和 prod 中使用不同的代码。

长答案: 不,删除日志文件是不安全的。日记的想法是这样的:

写入。现在,为了使写入持久化(并使数据库持久化),写入必须以某种方式进入磁盘。

不幸的是,写入磁盘需要 eon compared to writes to the RAM ,所以数据库处于两难境地:不写入磁盘是有风险的,因为意外关闭会导致数据丢失。但是每次写入操作都写入磁盘会严重降低数据库的性能,以至于无法用于实际用途。

现在,数据库不再写入数据文件本身,也不再为每个请求都执行此操作,而是简单地附加到日志文件中,其中存储了尚未提交到实际数据文件的所有操作。这要快得多,因为文件已经“热”了,因为它一直在被读写,而且它只是一个文件,而不是一堆文件,最后,因为它每 100 毫秒批量写入所有待处理的操作默认。在某些事情中删除此文件会造成严重破坏。

关于linux - 删除mongodb的日志文件安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19533019/

相关文章:

mongodb - addToSet 如何确定重复项?

cocoa - 如何使磁盘在 Windows 和 MAC OS X 中自动运行

python - 如何编写 python 程序从磁盘镜像文件(.raw 文件)中读取数据?

linux - 在不保持组顺序的情况下改组大型文本文件

linux - 如何在远程服务器上使用 gpg 签名 key ?

mongodb - mongodb 随着时间的推移而获得的 yield

python - WMI:Win32_DiskDrive 获取物理磁盘驱动器上的总扇区

mysql - Apache 进程在没有记录到 access.log 的情况下生成

linux - 我们如何在Qt工具包(Qt)应用程序中读取安装(Raspberry pi)usb中的所有mp3文件

mongodb - 在hos上创建具有本地存储的mongo docker容器