我可以限制 mongodb 文件的数量(每个 2gb)吗?

我可以限制 mongodb 文件的数量(每个 2gb)吗?

我看到我的 mongodb 服务器正在创建如下文件:

my_db.ns
my_db.1
my_db.2
my_db.3
my_db....
my_db.15

对于我的一些 mongod 进程,它停止在 9 上,但有时会上升到 13、14、15。然后我的小型 AWS 实例上出现了一些空间问题。我不想增加大小。

我想告诉 mongo(v2.6) 不要超过 10 个文件,但在添加新条目时不阻止 mongo。我希望删除最旧的数据或删除空间。

我使用这个来要求 mongo 不要创建超过 10 个文件。

quota=true
quotaFiles=8

但是执行一段时间后,插入时出现此错误:MongoError:超出配额

有没有办法强制 mongo 重用相同的文件或不创建新的文件但不会产生错误?

谢谢

答案1

一旦旧文件已满,MongoDB 就会添加新文件。如果您像您提到的那样设置了配额,那么一旦空间不足,您就会收到错误,而不是分配新文件。这基本上是您的两个选择。

您可以通过配置来使用较小的空间增量(但文件更多)小文件,在这种情况下,每个附加文件的最大大小为 512MB,但您需要在配额中允许大约 4 倍的文件。但在某些时候,如果您继续添加具有硬限制的数据(除非您确实知道不会超出限制),您将遇到相同的错误。

从字里行间可以看出,你想要的是存储引擎更好地重用空间,这是一个已经讨论过很多次的话题(请参阅我对此话题的回答这里)。您可能会发现 WiredTiger 存储引擎以及压缩的使用效果更好(请参阅我的测试这里),但磁盘空间使用量会根据您的使用模式而波动,因此即使在那时您也需要有一定的空间开销。

相关内容