Я новичок в MongoDB Sharding. Я создал mongos
и config server
и один осколок на xyz.com
и второй осколок на xyzshard.com
сервере:Sharding with MongoDB
mongos
наxyz.com:27019
config server
наxyz.com:27018
1 осколок на
xyz.com:27017
2-й осколок на
xyzshard.com:27017
Моя база данных test
и коллекция test_collection
. Я включил sharding на test.test_collection
.
Я индексировали _id
поле с помощью "hash"
db.test_collection.ensureIndex({ _id : "hashed" })
я запускаю следующую команду:
for (var i = 1; i <= 500; i++)
db.test_collection.insert({ x : i })
Я получаю ниже вывод:
WriteResult({ "nInserted" : 1 })
Но когда я запускаю найти запрос на обоих черепах:
db.test_collection.find()
Я получаю все документы на каждом осколке.
Правильно ли это, или я ошибаюсь нигде?
Выход для sh.status() на xyz.com является
sharding version: {
"_id" : 1,
"minCompatibleVersion" : 5,
"currentVersion" : 6,
"clusterId" : ObjectId("55b8d3e9a8742d49164820b6")
}
shards:
{ "_id" : "shard0000", "host" : "localhost:27017" }
balancer:
Currently enabled: yes
Currently running: no
Failed balancer rounds in last 5 attempts: 0
Migration Results for the last 24 hours:
No recent migrations
databases:
{ "_id" : "admin", "partitioned" : false, "primary" : "config" }
{ "_id" : "test", "partitioned" : true, "primary" : "shard0000" }
test.test_collection
shard key: { "_id" : "hashed" }
chunks:
shard0000 2
{ "_id" : { "$minKey" : 1 } } -->> { "_id" : NumberLong(0) } on : shard0000 Timestamp(1, 1)
{ "_id" : NumberLong(0) } -->> { "_id" : { "$maxKey" : 1 } } on : shard0000 Timestamp(1, 2)
{ "_id" : "test_db", "partitioned" : false, "primary" : "shard0000" }
{ "_id" : "db", "partitioned" : false, "primary" : "shard0000" }
Выход для sh.status() на xyzshard.com
sharding version: {
"_id" : 1,
"minCompatibleVersion" : 5,
"currentVersion" : 6,
"clusterId" : ObjectId("55b8d3e9a8742d49164820b6")
}
shards:
{ "_id" : "shard0000", "host" : "localhost:27017" }
databases:
{ "_id" : "admin", "partitioned" : false, "primary" : "config" }
{ "_id" : "test", "partitioned" : true, "primary" : "shard0000" }
test.test_collection
shard key: { "_id" : "hashed" }
chunks:
shard0000 2
{ "_id" : { "$minKey" : 1 } } -->> { "_id" : NumberLong(0) } on : shard0000 Timestamp(1, 1)
{ "_id" : NumberLong(0) } -->> { "_id" : { "$maxKey" : 1 } } on : shard0000 Timestamp(1, 2)
{ "_id" : "test_db", "partitioned" : false, "primary" : "shard0000" }
{ "_id" : "db", "partitioned" : false, "primary" : "shard0000" }
Вы имеете в виду, что вы получаете 500 документов в результате запроса 'find' на ** оба ** осколки? Или в целом, например, 200 на 'xyz.com', 300 на' xyzshard.com'? – bagrat
да ... я получаю 500 документов по обоим осколкам каждый – 3ppps
Можете ли вы попробовать sh.status: http://docs.mongodb.org/manual/reference/method/sh.status/ –