MongoDB data remove - reclaim diskspace [duplicate]

和自甴很熟 提交于 2019-12-02 20:26:19
  1. Yes it is correct.
  2. No, better to give mongodb as much disk space as possible( if mongodb can allocate more space than less disk fragmentation you will have, in additional allocating space is expensive operation). But if you wish you can run db.repairDatabase() from mongodb shell to shrink database size.
  3. Yes you can run repairDatabase on live mongodb instance ( better to run it in none peak hours)
Justin Jenkins

This is somewhat of a duplicate of this MongoDB question ...

Auto compact the deleted space in mongodb?

See that answer for details on how to ...

  • Reclame some space
  • Use serverside JS to run a recurring job to get back space (including a script you can run ...)
  • How you might want to look into Capped Collections for some use cases!

Also you can see this related blog posting: http://learnmongo.com/posts/compacting-mongodb-data-files/

I have another solution that might work better than doing db.repairDatabase() if you can't afford for the system to be locked, or don't have double the storage.

You must be using a replica set.

My thought is once you've removed all of the excess data that's gobbling your disk, stop a secondary replica, wipe its data directory, start it up and let it resynchronize with the master. Repeat with the other secondaries, one at a time.

On the master, do an rs.stepDown() to hand over MASTER to one of the synched secondaries, now stop this one, wipe it, and let it resync.

The process is time consuming, but it should only cost a few seconds of down time, when you do the rs.stepDown().

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!