2013-08-23 1 views
0

localhost에 3 개의 config 서버와 2 개의 shonged mongo 인스턴스와 하나의 mongos가있는 sharded mongo db 환경을 설정했습니다.Sharded mongodb는 데이터를 재배포하지 않습니다

sh.addShard("127.0.0.1:27010") 
sh.addShard("127.0.0.1:27011") 

a = {"_id" : 1, "value" : 1} 
b = {"_id" : 2, "value" : 2} 
c = {"_id" : 3, "value" : 3} 
d = {"_id" : 4, "value" : 4} 

use foobar; 
db.foo.insert(a); 
db.foo.insert(b); 
db.foo.insert(c); 
db.foo.insert(d); 

(가) 내가 샤딩에 대한 DB를 사용하고 등

sh.enableSharding("foobar"); 
db.foo.ensureIndex({"value":"hashed"}); 
sh.shardCollection("foobar.foo", { value: "hashed" }) 

모든 결과 인덱스를 생성 : 클러스터가 최대 시작되면

, 나는 다음과 같은 일련의 명령을 실행 위의 작업은 성공적입니다.

그러나 내가 한 번 : db.foo.stats()

을 나는 모든 데이터가 분산되지 않고 한 파편에 끝나는 것을 알 수있다. 그리고

db.printShardingStatus(); 

를 실행하면 생성합니다

--- Sharding Status --- 
sharding version: { 
"_id" : 1, 
"version" : 3, 
"minCompatibleVersion" : 3, 
"currentVersion" : 4, 
"clusterId" : ObjectId("52170e8a7633066f09e0c9d3") 
} 
shards: 
{ "_id" : "shard0000", "host" : "127.0.0.1:27010" } 
{ "_id" : "shard0001", "host" : "127.0.0.1:27011" } 
databases: 
{ "_id" : "admin", "partitioned" : false, "primary" : "config" } 
{ "_id" : "foobar", "partitioned" : true, "primary" : "shard0000" } 
    foobar.foo 
     shard key: { "value" : "hashed" } 
     chunks: 
      shard0000 1 
     { "value" : { "$minKey" : 1 } } -->> { "value" : { "$maxKey" : 1 } } on : shard0000 Timestamp(1, 0) 

을 흥미롭게도하지만, 나는 빈 컬렉션 시작하고 여기에 데이터를 추가하기 전에에서 샤딩을 수있는 경우, 결과는 매우 다르다 :

db.foo.stats(); 
{ 
"sharded" : true, 
"ns" : "foobar.foo", 
"count" : 4, 
"numExtents" : 2, 
"size" : 144, 
"storageSize" : 16384, 
"totalIndexSize" : 32704, 
"indexSizes" : { 
    "_id_" : 16352, 
    "value_hashed" : 16352 
}, 
"avgObjSize" : 36, 
"nindexes" : 2, 
"nchunks" : 4, 
"shards" : { 
    "shard0000" : { 
     "ns" : "foobar.foo", 
     "count" : 1, 
     "size" : 36, 
     "avgObjSize" : 36, 
     "storageSize" : 8192, 
     "numExtents" : 1, 
     "nindexes" : 2, 
     "lastExtentSize" : 8192, 
     "paddingFactor" : 1, 
     "systemFlags" : 1, 
     "userFlags" : 0, 
     "totalIndexSize" : 16352, 
     "indexSizes" : { 
      "_id_" : 8176, 
      "value_hashed" : 8176 
     }, 
     "ok" : 1 
    }, 
    "shard0001" : { 
     "ns" : "foobar.foo", 
     "count" : 3, 
     "size" : 108, 
     "avgObjSize" : 36, 
     "storageSize" : 8192, 
     "numExtents" : 1, 
     "nindexes" : 2, 
     "lastExtentSize" : 8192, 
     "paddingFactor" : 1, 
     "systemFlags" : 1, 
     "userFlags" : 0, 
     "totalIndexSize" : 16352, 
     "indexSizes" : { 
      "_id_" : 8176, 
      "value_hashed" : 8176 
     }, 
     "ok" : 1 
    } 
}, 
"ok" : 1 
} 

기존 컬렉션을 분류하면 내가 놓친 것이 있는지 여부가 궁금합니다.

답변

0

현재 데이터 크기가 1 개인 작은 데이터 세트가 있습니다. MongoDB는 Migration Thresholds에 따라 데이터 균형을 조정하여 균형 자의 영향을 최소화합니다. 더 많은 데이터를 추가해보십시오 :) 그리고 밸런서는 데이터를 분리하고 시간 경과에 따라 청크의 균형을 조정합니다.

각 샤드로 시작하는 콜렉션의 데이터가 없으면 여러 개의 청크가 할당되므로 두 번째 경우에는 샤드간에 데이터가 표시됩니다.

관련 문제