我在mongodb谷歌小组中提出了这个问题,因为没有任何回复在这里发布.
我们有一个单节点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
}
Run Code Online (Sandbox Code Playgroud)
我们希望收回这个空间,因为这不是一个关键任务系统(它像一个日志的倾倒场)可以维持一个停机时间.我们不想花费在创建副本集上,我们也在物理数据中心,因此不希望仅为修复数据库附加额外的磁盘.
我想了解: -
修复数据库需要多少可用磁盘空间
- 修复数据库后我们希望恢复多少空间 - 修复数据库
需要多长时间.
- 如果所有修复数据库都在继续,那么杀死它并重启数据库是否安全.
我们的数据大量存在于一个集合中,因此紧凑集合是否优于修复数据库.
首先我建议您从 2.0.1 升级。如果不是 2.2.2,至少到 2.0.7。修复需要 2 倍文件大小。您最终的文件大小应该略大于您的数据大小。需要多长时间取决于系统资源以及系统的繁忙程度。Compact 不会释放磁盘空间 - 它只是对数据文件进行碎片整理。
在 2.2.x 中你可以使用 collMod
命令设置 usePowerOf2Sizes 以减少文件碎片。例如插入800字节文档,将分配1024字节。删除该文档并插入一个 900 字节的文档,现在 1024 空间可以重新使用。如果没有这个,可能只会分配 850 字节,并且会为 900 字节文档分配新的可用空间。
杀死 RepairDatabase 应该没问题 - 文件被复制到新位置,进行碎片整理,然后在完成后复制回来,但您必须对其进行测试以确保:)
归档时间: |
|
查看次数: |
2142 次 |
最近记录: |