我遵循documentation将副本集转换为分片。尽管执行了文档中提到的完全相同的过程,但是我得到了错误的输出。就像在文档中一样,我已经在收藏集中存储了一百万documents
并创建了两个分片。
以下是我对db.stats()
的输出:
{
"raw" : {
"rs1/localhost:40000,localhost:40001,localhost:40002" : {
"db" : "test",
"collections" : 0,
"views" : 0,
"objects" : 0,
"avgObjSize" : 0,
"dataSize" : 0,
"storageSize" : 0,
"numExtents" : 0,
"indexes" : 0,
"indexSize" : 0,
"fileSize" : 0,
"fsUsedSize" : 0,
"fsTotalSize" : 0,
"ok" : 1
},
"rs0/localhost:50000,localhost:50001,localhost:50002" : {
"db" : "test",
"collections" : 1,
"views" : 0,
"objects" : 1000000,
"avgObjSize" : 70.900298,
"dataSize" : 70900298,
"storageSize" : 24436736,
"numExtents" : 0,
"indexes" : 2,
"indexSize" : 23797760,
"fsUsedSize" : 13935333376,
"fsTotalSize" : 211647721472,
"ok" : 1
}
},
"objects" : 1000000,
"avgObjSize" : 70,
"dataSize" : 70900298,
"storageSize" : 24436736,
"numExtents" : 0,
"indexes" : 2,
"indexSize" : 23797760,
"fileSize" : 0,
"extentFreeList" : {
"num" : 0,
"totalSize" : 0
},
"ok" : 1,
"$clusterTime" : {
"clusterTime" : Timestamp(1529487131, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
},
"operationTime" : Timestamp(1529487131, 1)
}
如您所见,只有rs0
包含全部一百万个文档,而rs1
为空。为什么会这样?我应该怎么做才能使文档均匀地分布在分片中?
一些帖子提到这可能是由于分片密钥选择不当,但是我使用了与文档中提到的密钥相同的密钥,所以这应该不是问题。