MongoDBのShardingまわりいじっててmongosの起動の際にパラメータ指定してもなんかどうにもchunkSizeが適用されない。
configサーバのsettingsコレクションが怪しい気がする。
> db.settings.find() { "_id" : "chunksize", "value" : 64 }
1.8のデフォルトは64MBなのでその値が入ってるみたい。
mongosの起動パラメータにchunkSize指定したらここが変更されてもよさそうなのになー。んーんーんー。
でもその場合複数mongos起動した場合にそれぞれでchunkSizeの指定が違った場合に対応できないしなー。
いやでもchunkとか管理するのはcongfigサーバだからどっかにサイズ持ってそうなもんだしなー。
と思って調べてみるとこんなんが。
Google Groups
configサーバ立ち上げてから初めてmongos立ち上げたタイミングで指定したchunkSizeのみが適用される的な。
以降はsettingsを手動で更新しろよ的な。
英語わかんないけどなんかそういう感じでしょうか。
というわけでEliotさんを信じてためしてみる。
> db.settings.update({_id:"chunksize"},{$set:{value:1}}) > db.settings.find() { "_id" : "chunksize", "value" : 1 }
この状態で適当にぶちこんでもなんか上手くいってない気がしたのでconfigサーバとmongos立ち上げ直して念のためenableshardingとかもやり直して再度適当にぶちこむ。
> db.printShardingStatus() (略) databases: { "_id" : "admin", "partitioned" : false, "primary" : "config" } { "_id" : "test2", "partitioned" : true, "primary" : "set01" } test2.table01 chunks: set01 28 set03 27 set02 43
おお分割されてる。
ちょっと待ったらmigrationが起きて均等に割り振られました。
databases: { "_id" : "admin", "partitioned" : false, "primary" : "config" } { "_id" : "test2", "partitioned" : true, "primary" : "set01" } test2.table01 chunks: set01 33 set03 32 set02 33
migration中にcountとか発行したら噂通り本来の数より多い数値が表示されました。
なるほどなー。