修复数据库需要多少额外空间

2024-05-16

我已经问过了这个问题在 mongodb google group https://groups.google.com/d/topic/mongodb-user/oi6S-LKfTrs/discussion,在没有任何回复的情况下将其发布在这里。

我们有一个单节点 mongo(版本 2.0.1)实例。即使在每日归档之后,我们也会耗尽磁盘空间,因为 mongo 不会将空间返回给操作系统并尝试自行使用它。目前我们的设置已经变得非常稀疏,大约 50% 的空间闲置。您可以看到数据+索引大小约为 1170 GB,而存储大小约为 2158 GB,文件大小约为 2368 GB。

db.stats()    
{  
    "db" : "default",            
    "collections" : 106,  
    "objects" : 553988389,  
    "avgObjSize" : 2094.1392962010254,  
    "dataSize" : NumberLong("1160128855044"),  
    "storageSize" : NumberLong("2315777236208"),  
    "numExtents" : 1487,  
    "indexes" : 107,  
    "indexSize" : 97914435136,  
    "fileSize" : NumberLong("2543459500032"),  
    "nsSizeMB" : 16,  
    "ok" : 1  
}

我们希望回收该空间,因为这不是一个关键任务系统(它就像一个原木倾倒场)可以维持停机时间。我们不想花费在创建副本集上,而且我们位于物理数据中心中,因此不希望仅为了修复数据库而附加额外的磁盘。
我想了解:-
- 修复数据库需要多少可用磁盘空间
-修复数据库后我们希望恢复多少空间
-修复数据库大约需要多长时间。
- 如果修复数据库继续进行,那么直接终止它并重新启动数据库是否安全。

我们的大量数据位于单个集合中,因此紧凑集合是否会比修复数据库更好。


首先我建议您从 2.0.1 升级。如果不是 2.2.2,至少到 2.0.7。 修复需要 2 倍文件大小。 您最终的文件大小应该略大于您的数据大小。 需要多长时间取决于系统资源以及系统的繁忙程度。 Compact 不会释放磁盘空间 - 它只是对数据文件进行碎片整理。

在 2.2.x 中你可以使用collMod http://docs.mongodb.org/manual/reference/command/collMod/

命令设置 usePowerOf2Sizes 以减少文件碎片。例如,插入 800 字节文档,将分配 1024 字节。删除该文档并插入一个 900 字节的文档,现在 1024 空间可以重新使用。如果没有这个,可能只会分配 850 字节,并且会为 900 字节文档分配新的可用空间。

杀死 RepairDatabase 应该没问题 - 文件被复制到新位置,进行碎片整理,然后在完成后复制回来,但您必须对其进行测试以确保:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

修复数据库需要多少额外空间 的相关文章

随机推荐