我正在尝试对MongoDB进行分片。我完成了Sharding配置,但我不确定如何验证分片是否正常运行。
如何检查我的数据是否被分片?是否有验证/验证分片的查询?
答案 0 :(得分:14)
您还可以在mongos路由器上执行简单命令:
> use admin
> db.printShardingStatus();
应该输出有关您的分片,分片dbs和分片集合的信息,如mongodb documentation
中所述sharding version: { "_id" : 1, "version" : 2 }
shards:
{ "_id" : ObjectId("4bd9ae3e0a2e26420e556876"), "host" : "localhost:30001" }
{ "_id" : ObjectId("4bd9ae420a2e26420e556877"), "host" : "localhost:30002" }
{ "_id" : ObjectId("4bd9ae460a2e26420e556878"), "host" : "localhost:30003" }
databases:
{ "name" : "admin", "partitioned" : false,
"primary" : "localhost:20001",
"_id" : ObjectId("4bd9add2c0302e394c6844b6") }
my chunks
{ "name" : "foo", "partitioned" : true,
"primary" : "localhost:30002",
"sharded" : { "foo.foo" : { "key" : { "_id" : 1 }, "unique" : false } },
"_id" : ObjectId("4bd9ae60c0302e394c6844b7") }
my chunks
foo.foo { "_id" : { $minKey : 1 } } -->> { "_id" : { $maxKey : 1 } }
on : localhost:30002 { "t" : 1272557259000, "i" : 1 }
答案 1 :(得分:5)
MongoDB有关于Sharding here的详细文档......
http://www.mongodb.org/display/DOCS/Sharding+Introduction
为了回答你的问题(我认为),请参阅config Servers ...
上的部分每个配置服务器都有一个完整的副本 所有块信息。一个两阶段 commit用于确保 配置数据的一致性 在配置服务器中。
基本上,配置服务器的工作是确保所有内容都被分片...... 正确。
此外,还有一些系统集合query ...
db.runCommand({listshards:1});
下面的prez中有很多帮助...
http://www.slideshare.net/mongodb/mongodb-sharding-internals
答案 2 :(得分:0)
如果您只想检查是否已连接到分片群集:
db.isMaster()
可用于检测您是否已连接到分片路由器(mongos
)。
如果db.isMaster().msg
是“ isdbgrid”,则说明您已连接到分片实例。
db.isMaster()无需身份验证即可运行。
为了检查分片的详细信息,sh.status()
也可以使用,其输出与db.printShardingStatus();
相同。