删除MongoDB数据 - 回收磁盘空间[重复]

  可能重复:   自动压缩mongodb中删除的空间? 我的理解是,在删除操作上,MongoDB不会释放磁盘空间,但会根据需要重用它。 那是对的吗? 如果没有,我会运行修复命令吗? 修复是否可以在实时mongo实例上运行?     
已邀请:
是的,这是对的。 不,最好给mongodb尽可能多的磁盘空间(如果mongodb可以分配更多空间而不是更少的磁盘碎片,那么额外的分配空间是昂贵的操作)。但是如果你希望你可以从mongodb shell运行
db.repairDatabase()
来缩小数据库大小。 是的,您可以在live mongodb实例上运行repairDatabase(最好在非高峰时段运行它)     
这有点像这个MongoDB问题的副本...... 自动压缩mongodb中删除的空间? 有关如何...的详细信息,请参阅该答案 回收一些空间 使用serverside JS 经营一份经常性的工作来回来 空间(包括你可以运行的脚本......) 你可能想看看 加入Capped Collections用于某些用途 案例! 你也可以看到这篇相关的博客文章:http://learnmongo.com/posts/compacting-mongodb-data-files/     
我有另一个解决方案可能比db.repairDatabase()更好,如果你不能锁定系统,或者没有双倍的存储。 您必须使用副本集。 我的想法是,一旦你删除了吞噬你的磁盘的所有多余数据,停止辅助副本,擦除其数据目录,启动它并让它与主机重新同步。重复其他辅助,一次一个。 在主服务器上,执行rs.stepDown()将MASTER移交给其中一个同步的辅助服务器,现在停止此服务,擦除它,并让它重新同步。 这个过程非常耗时,但是当你执行rs.stepDown()时,它只需要几秒钟的停机时间。     

要回复问题请先登录注册