mongodb磁盘空间过大
我的mongodb使用114g,占我磁盘的85% 尝试使用mongodb磁盘空间过大,mongodb,Mongodb,我的mongodb使用114g,占我磁盘的85% 尝试使用db.repairDatabase()释放一些空间将失败,因为我没有足够的可用空间 我知道我的数据不应该占用太多空间,因为我以前有一个占磁盘90%的大集合 然后我删除了这个集合,只重新插入了其中20%的数据 如何释放一些空间?用于数据存储的磁盘空间由MongoDB提供,只能通过使用新的预分配文件重建数据库来回收。通常,这是通过db.repairDatabase()或备份与还原来完成的。正如您所注意到的,修复需要足够的空间来创建数据库的新副
db.repairDatabase()
释放一些空间将失败,因为我没有足够的可用空间
我知道我的数据不应该占用太多空间,因为我以前有一个占磁盘90%的大集合
然后我删除了这个集合,只重新插入了其中20%的数据
如何释放一些空间?用于数据存储的磁盘空间由MongoDB提供,只能通过使用新的预分配文件重建数据库来回收。通常,这是通过
db.repairDatabase()
或备份与还原来完成的。正如您所注意到的,修复需要足够的空间来创建数据库的新副本,因此可能不是一个选项
以下是一些可能的解决方案,但都涉及到在其他地方提供一些可用空间:
- 如果该数据库有足够的可用空间,则可以
、drop和mongodump
删除它mongorestore
将删除磁盘上的数据文件db.dropDatabase()
- 如果您使用的是卷管理器(如或),则可以向逻辑卷添加额外的磁盘空间,以便修复或转储并恢复数据库
- 如果您有另一台服务器,则可以设置一台服务器来同步数据,而无需关闭当前服务器(该服务器将是副本集中的“主服务器”)。一旦数据同步到辅助服务器,您就可以关闭原始主服务器并重新同步数据库
副本集通常非常有助于管理,因为它们允许您关闭服务器进行维护(例如运行数据库压缩或修复),同时仍有一台服务器可供应用程序使用。它们还有其他好处,例如维护数据的冗余副本以进行自动故障切换/恢复。您是否有一个具有合理空间的单独磁盘?此数据仅用于测试,因此我并不真正担心恢复数据。我只是不知道是否有任何方法可以降低磁盘消耗,即使在db.repairDatabase()失败的情况下也是如此。谢谢你详细的回答