我有一个拥有数百万用户的 mongodb 数据库。 我想释放空间并创建了一个机器人来删除超过 6 个月的不活跃用户。
我已经看了几分钟磁盘 我已经看到它有所不同,但不会释放大空间,甚至 1 MB 也不会。这很奇怪。
我读过,如果“remove”
没有简单地标记它可以被删除或覆盖,它实际上并没有删除光盘。这是真的吗?
这对我来说似乎很有意义。所以,我一直在寻找能够真正释放空间的东西......
我应用了 repairDatabase()
,但我认为我做错了。
一切都被阻止了!
我试过运气,我已经重启了服务器。 有一个 MongoDB 服务在工作,但其状态保持在“正在启动”(而不是正在运行)。
我从其他网站了解到,repairDatabase()
需要的空间是数据库原始大小的两倍,但它没有。
我不知道,这是在做什么,这可能在几个小时、几天...
数据库丢失了吗?我想我会停止所有服务并删除数据库。
最佳答案
repairDatabase
类似于fsck
。也就是说,它会尝试清除数据库中任何损坏的文档,这可能会阻止 MongoDB 启动。具体工作方式因存储引擎而异,但 repairDatabase
可能会从数据库中删除文档。
MongoDB 文档页面中非常清楚地概述了该命令的详细信息(包括所有警告):https://docs.mongodb.com/manual/reference/command/repairDatabase/
我建议下次最好先阅读官方文档,而不是阅读人们在论坛上所说的内容。这些二手信息可能已经过时,或者完全错误。
话虽如此,您应该让进程一直运行直到完成,如果数据库无法启动,则执行任何故障排除。它可能需要 2 倍的数据磁盘空间,但也有可能该命令只需要时间来完成。
关于mongodb - 可能的大错误。 "db.repairDatabase()"到底是做什么的?数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46893813/