MongoDB でシャーディングをテストしようとしています。たとえば、実際のサーバー名の代わりに host1.com と host2.com を使用します。
そこで、host1.com に構成サーバーを作成しました。
mongod --dbpath /path/to/configdb/ --configsvr
mongos
同じマシンで開始:
mongos --configdb host1.com --port 27020
mongod
2 台のマシン (host1.com と host2.com) で開始します。
mongod --dbpath /path/to/test_shard_db/ --shardsvr
チュートリアル で説明されているように、シャードを追加し、シャード キー {'name': 1} (コレクションにはこのフィールドとテスト用のみがあります) を使用してデータベースtest
とコレクションのシャーディングを有効にしました。しかし、このすべての操作の後、すべてのデータは、データベースのプライマリである 1 つのシャードにのみ書き込まれます。test
_id
構成は次のとおりです。
シャーディング ステータス:
mongos> db.printShardingStatus()
--- Sharding Status ---
sharding version: { "_id" : 1, "version" : 3 }
shards:
{ "_id" : "shard0000", "host" : "host1.com:27018", "maxSize" : NumberLong(1) }
{ "_id" : "shard0001", "host" : "host2.com:27018", "maxSize" : NumberLong(10) }
databases:
...
{ "_id" : "test", "partitioned" : true, "primary" : "shard0000" }
test.test chunks:
shard0001 1
{ "name" : { $minKey : 1 } } -->> { "name" : { $maxKey : 1 } } on : shard0001 Timestamp(1000, 0)
コレクション統計:
mongos> db.printCollectionStats()
test
{
"sharded" : false,
"primary" : "shard0000",
"size" : 203535788,
...
}
バランサーの状態:
mongos> sh.isBalancerRunning()
true
では、1 メガバイトを超えるデータを追加したにもかかわらず、コレクション内のすべてのデータが 1 つのシャードにしか存在しないのはなぜでしょうか? そして、なぜそのデータベースdb.printCollectionStats()
を見せてください。私は何を間違えましたか?test
"sharded" : false