【发布时间】:2014-12-21 08:00:56
【问题描述】:
在win2012上运行mongodb
Mongo db 版本 v2.6.4
我们的集合是用这个参数创建的:
上限:true,大小:500000000000 // 500 GB
但仅保存这一个集合的数据目录已增长到 720gb。
在这个 mongo 服务器上根本没有使用复制。
如何将数据目录保持在 ~ 500 GB?
这个数据库有时确实会获得大量插入,但我们还需要控制最大大小(并让它丢弃旧数据)。
上限大小是否可能不包括索引?
或者我应该考虑其他开销吗? (以及如何?
还是?
数据库统计
> db.stats
function (scale){
return this.runCommand( { dbstats : 1 , scale : scale } );
}
> db.stats()
{
"db" : "logging",
"collections" : 3,
"objects" : 289637086,
"avgObjSize" : 2076.3166847770317,
"dataSize" : 601378314192,
"storageSize" : 606012620432,
"numExtents" : 305,
"indexes" : 12,
"indexSize" : 147827443456,
"fileSize" : 776943435776,
"nsSizeMB" : 16,
"dataFileVersion" : {
"major" : 4,
"minor" : 5
},
"extentFreeList" : {
"num" : 0,
"totalSize" : 0
},
"ok" : 1
}
>
我们用来创建集合的命令:
db.createCollection("LogItem", { capped:true, size:500000000000 })
所以我们写入的集合是使用 capped cmd 创建的。这就是所有空间的所在
由于磁盘空间不足,我无法执行 db.collection.stats()...
谢谢!
【问题讨论】:
-
您能否将数据库的
db.stats()输出包含在上限集合中?如果您可以发布指向包含磁盘上文件大小的目录列表的 pastebin/gist 链接,这也会很有帮助。数据目录将至少包含 MongoDB 2.6 中的一个其他数据库(local数据库),如果您启用了复制,该数据库可能会很大。例如,为副本集节点创建的操作日志 (oplog) 是local数据库中的一个特殊上限集合,最多分配 5% 的可用磁盘空间(大小在 1GB 和 50GB 之间)。 -
@Stennie 谢谢!这可能有助于查明问题。请参阅修订后的 OP。
-
@Stennie 这个问题很开放,恐怕。见修订的 OP
标签: mongodb