Mongodb:似乎不尊重大小上限

Mongodb:似乎不尊重大小上限,mongodb,Mongodb,在win2012上运行mongodb Mongo db版本v2.6.4 我们的集合是使用以下参数创建的: capped:true,大小:500000000000//500 gb 但数据目录(仅包含这一个集合)已增长到720gb 此mongo服务器上根本没有正在使用的复制 如何将数据目录保持在~500 gb 这个数据库有时确实会得到大量的插入,但我们还需要控制最大大小,让它丢弃旧数据 是否可能封顶大小不包括索引 还是有其他的管理费用需要我负责?怎么做 还是 数据库统计 > db.stats

在win2012上运行mongodb

Mongo db版本v2.6.4

我们的集合是使用以下参数创建的:

capped: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.createCollectionLogItem,{capped:true,size:500000000000}

因此,我们写入的集合是使用capped cmd创建的。这就是所有空间的所在

我无法执行db.collection.stats,因为磁盘空间不足


谢谢大家!

我相信您已将多个不同的概念归为一个概念。capped的概念适用于驻留在数据库中的单个集合。数据库是磁盘上由1个或多个集合组成的文件。每个数据库文件都有数据加上一些增长空间加上一些删除数据的漏洞,等等。 Capped集合没有索引-因此对于检索,如果您真的要创建500gb的集合,那么性能将非常糟糕。 对于测试,您可以创建一个1mb大小的上限集合,用数据填充它,并验证一旦达到一定数量的文档,它就不会增长—但这并不意味着包含此集合的数据库不会超过所需的大小—会有一些开销。

问题是什么?好吧,你可以创建一个集合作为capped,这确实有效。。。。但是,在创建新数据库时,如果传入连接正在发送数据,则在您有机会将其创建为capped之前,会自动创建新数据库,并且最终会。。。无封顶的收藏

解决方案:


当mongo离线时,通过配置将其设置为非标准端口,将其临时恢复。创建集合。然后在正常端口重新启动mongo,一切正常。

@alnerdev谢谢。我对OP中的术语有点草率,我现在已经清理了它。除非您指的是用于复制的特殊用途capped集合,否则capped集合确实支持索引。使用capped集合有明确的注意事项-请参阅MongoDB手册。@alnerdev-我在OP中很马虎,但在我的头脑中已经清理了它,在postCan中,您是否将数据库的db.stats输出包括在capped集合中?如果您可以发布一个指向pastebin/gist的链接,其中包含一个目录列表,其中包括磁盘上文件的大小,这也会很有帮助。数据目录将包括MongoDB 2.6中的至少一个其他数据库本地数据库,如果启用了复制,该数据库可能会很大。例如,为副本集节点创建的操作日志oplog是本地数据库中的一个特殊的封顶集合,分配的可用磁盘空间最多为1GB到50GB之间的5%。@Stennie谢谢!这可能有助于查明问题所在。见修改后的作品@Stennie恐怕这个问题是公开的。见修订的OP