Show
use admin
db.runCommand( { addshard : "bar/localhost:20010"} );
db.runCommand( { addshard : "foo/localhost:20011", maxSize:500 } );
db.runCommand( { addshard : "baz/localhost:20012", maxSize:1000 } );
use config
db.settings.save( { _id:"chunksize", value: 16 } )//set from 64 MB to 16 MB to see early distribution of chunks
use test
mongos> db.dropDatabase()
{ "dropped" : "test", "ok" : 1 }
mongos> use admin
switched to db admin
mongos> db.runCommand( { enablesharding : "test" } );
{ "ok" : 1 }
mongos> db.runCommand( { shardcollection : "test.test", key : { _id : 1 } } )
{ "collectionsharded" : "test.test", "ok" : 1 }
mongos> use test
switched to db test
mongos> db.test.ensureIndex({_id:"hashed"});//use hashed shard key to guarantee optimal distribution
mongos> for(i=0;i<1024*3000;i++){//insert at least 3000 MB
... db.test.insert({count:i, textfield:"round about 1024 Bytes of blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah"});
... if(i%(1024*10)==0) {
... var s = db.test.stats().shards;
... print((s.bar!=null?s.bar.storageSize:0) + ";" + (s.foo!=null?s.foo.storageSize:0) + ";" + (s.baz!=null?s.baz.storageSize:0));
... }
... }
8192;0;0
696320;11182080;11182080
...some lines cut out...
1580060672;2140508160;857399296
//as one can see, shard foo has over 2 GB storageSize even though its maxSize was set to 500 MB!
//collection stats says the same, even after 1 day, so the balancer did nothing:
mongos> db.test.stats()
{
"sharded" : true,
"ns" : "test.test",
"count" : 3072000,
"numExtents" : 56,
"size" : 3489791712,
"storageSize" : 4577968128,
"totalIndexSize" : 256366656,
"indexSizes" : {
"_id_" : 109754624,
"_id_hashed" : 146612032
},
"avgObjSize" : 1135.99990625,
"nindexes" : 2,
"nchunks" : 198,
"shards" : {
"bar" : {
"ns" : "test.test",
"count" : 1174328,
"size" : 1334036464,
"avgObjSize" : 1135.9998773766783,
"storageSize" : 1580060672,
"numExtents" : 19,
"nindexes" : 2,
"lastExtentSize" : 415145984,
"paddingFactor" : 1,
"systemFlags" : 1,
"userFlags" : 0,
"totalIndexSize" : 103311936,
"indexSizes" : {
"_id_" : 47281808,
"_id_hashed" : 56030128
},
"ok" : 1
},
"baz" : {
"ns" : "test.test",
"count" : 521492,
"size" : 592414912,
"avgObjSize" : 1136,
"storageSize" : 857399296,
"numExtents" : 17,
"nindexes" : 2,
"lastExtentSize" : 227786752,
"paddingFactor" : 1,
"systemFlags" : 1,
"userFlags" : 0,
"totalIndexSize" : 43079344,
"indexSizes" : {
"_id_" : 16940672,
"_id_hashed" : 26138672
},
"ok" : 1
},
"foo" : {
"ns" : "test.test",
"count" : 1376180,
"size" : 1563340336,
"avgObjSize" : 1135.9998953625252,
"storageSize" : 2140508160,
"numExtents" : 20,
"nindexes" : 2,
"lastExtentSize" : 560447488,
"paddingFactor" : 1,
"systemFlags" : 1,
"userFlags" : 0,
"totalIndexSize" : 109975376,
"indexSizes" : {
"_id_" : 45532144,
"_id_hashed" : 64443232
},
"ok" : 1
}
},
"ok" : 1
}
mongos> sh.status()
--- Sharding Status ---
sharding version: {
"_id" : 1,
"version" : 3,
"minCompatibleVersion" : 3,
"currentVersion" : 4,
"clusterId" : ObjectId("526e28e343e8fadadc7f5450")
}
shards:
{ "_id" : "bar", "host" : "bar/localhost:20010" }
{ "_id" : "baz", "host" : "baz/localhost:20012", "maxSize" : NumberLong(1000) }
{ "_id" : "foo", "host" : "foo/localhost:20011", "maxSize" : NumberLong(500) }
databases:
{ "_id" : "admin", "partitioned" : false, "primary" : "config" }
{ "_id" : "test", "partitioned" : true, "primary" : "bar" }
test.test
shard key: { "_id" : 1 }
chunks:
bar 87
baz 34
foo 77
too many chunks to print, use verbose if you want to force print