【发布时间】:2014-11-17 06:22:17
【问题描述】:
我已经为集群环境设置了 mongodb。我的配置服务器和路由器在一台机器上运行,而分片在三台不同的机器上运行。我想知道我是否可以在终端上运行任何可用的命令(在哪个 configsvr 和路由器上运行),它将显示所有路由器名称、配置服务器(与其关联)、其他分片数据库(与其关联)。
为了更简单。
假设我运行我的命令/一段代码,它会显示出来。
router1---> configserver1----> Shardeddb1
----> Shardeddb2
-----> shardeddb3
修改以使其更清晰。
我的 router1 和 configserver1 在单机上运行(比如 ip 19.0.0.123),Shardeddb1(比如 ip 19.0.0.124),Shardeddb2(比如 ip 19.0.0.125),Shardeddb3(比如 ip 19.0.0.126)。
我想将 Shardeddb1 设为主要,将 (Shardeddb2,Shardeddb3) 设为次要。如果我运行 sh.status();它向我显示详细信息,但不显示哪个数据库属于哪台机器。那么有没有什么脚本可以告诉我更多的细节?
sharding version: {
"_id" : 1,
"version" : 4,
"minCompatibleVersion" : 4,
"currentVersion" : 5,
"clusterId" : ObjectId("545b632e9be3f019d6ef788f")
}
shards:
{ "_id" : "ps1", "host" : "ps1/19.0.0.123:27017","draining" : true }
{ "_id" : "ps2", "host" : "ps2/19.0.0.124:27017" }
{ "_id" : "shard0000", "host" : "19.0.0.125:27017" }
{ "_id" : "shard0001", "host" : "19.0.0.126:27017" }
databases:
{ "_id" : "admin", "partitioned" : false, "primary" : "config" }
{ "_id" : "test", "partitioned" : true, "primary" : "shard0000" }
{ "_id" : "demo", "partitioned" : true, "primary" : "shard0000" }
{ "_id" : "db", "partitioned" : false, "primary" : "ps1" }
{ "_id" : "mongotestDB", "partitioned" : true, "primary" : "ps1" }
mongotestDB.logcoll
shard key: { "id" : 1 }
chunks:
shard0000 4
shard0001 9
ps2 7
ps1 5
too many chunks to print, use verbose if you want to force print
【问题讨论】:
-
Markus 在下面提出了一些很好的观点。我认为您可能希望更好地了解分片架构,然后您可以重新评估您的问题。天真地,
sh.status在 mongo shell 函数方面与您正在寻找的最接近。 -
sh.status()的输出应显示每个数据库的主分片(不要与副本集的主成员混淆)。可以发一下吗? -
@MarkusWMahlberg 我添加了 sh.status()
-
您的设置与您显示的有点不同。但是看看数据库部分:每个数据库的主分片都给出了。
-
实际上我想删除碎片 ps1 但不能这样做。它显示我处于“排水”状态但没有删除它。为什么我看不到二级分片?
标签: mongodb sharding mongo-shell