MongoDB数据删除-回收磁盘空间

MongoDB数据删除-回收磁盘空间,mongodb,repair,Mongodb,Repair,可能重复: 我的理解是,在执行删除操作时,MongoDB不会释放磁盘空间,但会根据需要重用磁盘空间 对吗 如果不是,我会运行修复命令吗 修复是否可以在live mongo实例上运行 是的,这是正确的 不,最好给mongodb尽可能多的磁盘空间(如果mongodb可以分配更多的空间而不是更少的磁盘碎片,那么额外分配空间是一项昂贵的操作)。但如果您愿意,可以从mongodb shell运行db.repairDatabase(),以缩小数据库大小 是的,您可以在live mongodb实例上运行re

可能重复:

我的理解是,在执行删除操作时,MongoDB不会释放磁盘空间,但会根据需要重用磁盘空间

  • 对吗
  • 如果不是,我会运行修复命令吗
  • 修复是否可以在live mongo实例上运行
  • 是的,这是正确的
  • 不,最好给mongodb尽可能多的磁盘空间(如果mongodb可以分配更多的空间而不是更少的磁盘碎片,那么额外分配空间是一项昂贵的操作)。但如果您愿意,可以从mongodb shell运行
    db.repairDatabase()
    ,以缩小数据库大小
  • 是的,您可以在live mongodb实例上运行repairDatabase(最好在非高峰时间运行)

  • 这有点像MongoDB问题的重复

    有关如何

    • 重新命名一些空间
    • 使用服务器端JS 运行定期作业以返回的步骤 空间(包括可以运行的脚本…)
    • 你想看起来怎么样 放入封顶集合以供使用 箱子

    您还可以看到这篇相关的博客文章:

    如果您无法锁定系统,或者没有双倍的存储空间,我有另一个解决方案可能比使用db.repairDatabase()更好

    您必须使用副本集

    我的想法是,一旦删除了占用磁盘的所有多余数据,停止一个辅助副本,擦除其数据目录,启动它并让它与主副本重新同步。对其他二级学员重复,一次一个

    在主机上,执行rs.steppdown()将主机移交给一个同步的二级机,现在停止此二级机,擦除它,并让它重新同步


    该过程非常耗时,但当您执行rs.steppdown()时,应该只需要几秒钟的停机时间。

    当您可以在实时系统上运行修复时,它将使其无法使用,因为它会在运行时锁定服务器;我认为这实际上意味着,如果您计划继续使用一个活动实例,就不能在该实例上运行它。