4

我在 3 个系统中有一个分片集群。插入时我收到错误消息:

cant map file memory-mongo requires 64 bit build for larger datasets

我知道 32 位机器的限制大小为 2 GB。我有两个问题要问。

  1. 2 GB 限制适用于 1 个系统,因此总数据为 6 GB,因为我的分片是在 3 个系统中完成的。那么它只有 2 GB 还是 6 GB?
  2. 在正确完成分片的情况下,尽管将数据分布在所有三个分片系统中,但所有数据都存储在单个系统中?

分片在增加数据大小限制方面有什么作用吗?块大小在性能中起任何重要作用吗?

4

2 回答 2

2

除了在可能无法运行 64 位的开发机器上运行它之外,我不建议您对 32 位 MongoDB 做任何事情。一旦达到限制,文件就无法使用。

文档指出“使用 64 位进行生产。这很重要,因为如果您达到 mmap 大小限制(确切限制有所不同但小于 2GB),您将无法写入数据库(类似于磁盘已满情况)。”

于 2012-11-27T08:29:42.170 回答
0

分片就是跨多个节点扩展您的数据集,因此在回答您的问题时,是的,您增加了数据集的可能大小。请记住,名称空间和索引也会占用空间。

你还没有指定你的 mongos 住在哪里???您在哪里看到来自 -amongod或的错误mongos?我怀疑是mongod. 我相信您需要查看预拆分块 - http://docs.mongodb.org/manual/administration/sharding/#splitting-chunks。这似乎表明您的所有数据都将转到mongod.

如果你有一个mongossh.status()返回什么?块是否遍布所有mongod's

对于测试,我建议块大小为 1mb。在生产中,最好坚持使用默认的 64mb,除非您有一些非常重要的理由不想要默认值并且您真的知道自己在做什么。如果您的块大小太小,那么您将过于频繁地执行拆分。

于 2012-11-27T09:58:46.800 回答