我已经为集群环境设置了mongodb。我的配置服务器和路由器在一台机器上运行,而分片在三台不同的机器上运行。我想知道是否有任何可以在终端上运行的命令(在其上运行configsvr和路由器),它将显示所有routername,configserver(与之关联),其他分片数据库(与之关联)。
为了简化它。
假设我运行mycommand /段代码,它会显示。
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
答案 0 :(得分:0)
由于您的图表另有说明:
mongos
个实例的configdb参数的完全字符串相同。此字符串必须以相同的顺序保存所有配置服务器。 否则,您可能会面临元数据损坏的风险。 mongos'
和配置服务器。如果事情变得很糟糕,并且配置服务器因更新元数据而导致延迟,因为mongos
消耗了所有IO,您可能会使事情变得更糟。如果块拆分延迟(并且它们更有可能在高负载下),这可能会导致JumboChunks(必须手动拆分) - 直到完成 - 无法迁移。因此,在配置服务器上运行mongos实例是一个非常糟糕的想法,imvho。一个更好的解决方案是让mongos实例在应用服务器上运行,每个实例一个。