将主要分片中的块迁移到另一个分片需要太长时间

时间:2014-05-25 19:52:18

标签: mongodb performance sharding database nosql

每个块移动大约需要30-40分钟。

分片键是一个随机查看但是单调增加的整数字符串,它是一个长数字序列。 A"哈希"为该字段创建索引。

每个大约1.5Kb的文件有150M文件。分片集合有10个索引(其中一些是复合的)。

我在sh.status()中报告了大约11k块。到目前为止,我只能将其中的42个转移到另一个碎片。

系统由一个mongos,一个配置服务器和一个主要(mongod)分片和其他(mongod)分片组成。所有这些服务器都在8核和32 GB RAM的同一台服务器上。

我知道理想的是使用单独的机器,但没有使用任何CPU,所以我认为它有利于一开始。

你有什么评论?

我需要调查什么?

这是正常的吗?

1 个答案:

答案 0 :(得分:0)

正如mongodb文档中所述:“分片是跨多台机器存储数据记录的过程,是MongoDB满足数据增长需求的方法。随着数据量的增加,单台机器可能不足以满足数据增长需求。存储数据也不提供可接受的读写吞吐量.Shading解决了水平扩展的问题。通过分片,你可以添加更多的机器来支持数据增长和读写操作的需求。“

你绝对不应该在同一台机器上安装你的分片。这没用。分片的兴趣在于您可以按比例缩放。所以,如果你在同一台机器上进行分片......你只是在扼杀你的吞吐量。 如果你有一台机器,你的数据库将更快,没有分片。

为避免数据丢失,在使用分片之前,您应该使用:raid(不是0),replicaset然后分片。