我们有一个带有3个副本集和3个碎片的分片mongo群集。有一个包含400,000,000个文档的集合,我每天都有许多插入和查询操作。几天前,我发现磁盘几乎已满,我必须删除一些内容以释放空间。
很多人都提到即使我们删除文件,也不会在WiredTiger引擎下发布磁盘空间,因为索引仍然存在。
根据官方文件,我们找到了以下方法:
- 首先,执行db.collection.deleteMany(某些条件),然后运行db.collection.runCommand(“compact”)或运行db.repairDatabase()
- 在primary上执行delete方法,从群集中删除一个辅助节点,运行“compact”命令或repairDatabase命令,然后将其放回,然后再运行另一个辅助节点,最后逐步执行primary和run above命令作为辅助节点。 / LI>
醇>
不幸的是,删除大量文档会阻止其他操作,例如插入或更新,这是不可接受的。还有其他更好的方法吗?