可能重复:
自动压缩 mongodb 中已删除的空间?
我的理解是,在删除操作时,MongoDB 不会释放磁盘空间,而是会根据需要重用它。
- 那是对的吗?
- 如果没有,我会运行修复命令吗?
- 修复可以在实时 mongo 实例上运行吗?
可能重复:
自动压缩 mongodb 中已删除的空间?
我的理解是,在删除操作时,MongoDB 不会释放磁盘空间,而是会根据需要重用它。
db.repairDatabase()
从 mongodb shell 运行以缩小数据库大小。这有点重复这个 MongoDB 问题......
有关如何...的详细信息,请参阅该答案
你也可以看到这个相关的博客文章: http: //learnmongo.com/posts/compacting-mongodb-data-files/
如果您负担不起系统被锁定的代价,或者没有双倍的存储空间,我还有另一个解决方案可能比执行 db.repairDatabase() 更好。
您必须使用副本集。
我的想法是,一旦你删除了所有占用磁盘的多余数据,停止次要副本,擦除其数据目录,启动它并让它与主副本重新同步。与其他次要重复,一次一个。
在 master 上,执行 rs.stepDown() 将 MASTER 移交给同步的辅助节点之一,现在停止这个,擦除它,然后让它重新同步。
这个过程很耗时,但是当您执行 rs.stepDown() 时,它应该只花费几秒钟的停机时间。