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

如果我删除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 毫秒批量写入所有待处理的操作默认。在某些事情中删除此文件会造成严重破坏。

https://stackoverflow.com/questions/19533019/

相关文章:

mongodb - MySql 是否有一个示例 MongoDB 数据库?

node.js - Mongodb的僧侣vs Mongoose

javascript - 在 MongoDB 和 Mongoose 中执行全文搜索的最佳方法

c# - MongoDB GridFs with C#,如何存储图片等文件?

mongodb - 存储在 MongoDB 中的数组是否保持顺序?

java - “字段需要一个无法找到的 bean。”使用mongodb的错误spring restf

javascript - 如何在 Node.js 中使用带有 Promise 的 MongoDB?

collections - MongoDB一次查询多个集合

mongodb - 更新 MongoDB 中精确元素数组中的字段

mongodb - 将 "working set"放入 MongoDB 的 RAM 是什么意思?