ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

mongos信息 - 小镇

2026/8/12 21:19:02 拓冰建站 浏览量
mongos信息 - 小镇

mongos信息

MongoDB Sharded Cluster 节点信息查询

以下保留两种查询方式

  • 方式一:通过 adminCommand 查询

  • 方式二:直接查询 config

适用于你当前的 MongoDB 3.6.17 Sharded Cluster。


一、数据 Shard

方法一:listShards

db.adminCommand({listShards:1})

只输出 Shard + 节点

db.adminCommand({listShards:1}).shards.forEach(function(s) {print(s._id + " => " + s.host);
})

示例:

rs1 => rs1/10.252.135.118:27017,10.252.135.121:27017,10.252.144.57:27017
rs2 => rs2/10.252.135.118:27018,10.252.144.130:27018,10.252.144.57:27018
rs3 => rs3/10.252.135.118:27019,10.252.135.130:27019,10.252.144.130:27019

方法二:直接查询 config.shards

use configdb.shards.find().pretty()

或者只看关键字段:

db.shards.find({}, {_id: 1,host: 1
}).pretty()

对应关系:

config.shards|+-- rs1 -> rs1/10.x.x.x:27017,...+-- rs2 -> rs2/10.x.x.x:27018,...+-- rs3 -> rs3/10.x.x.x:27019,...

二、Config Server

这里要特别区分:

Config Server 自身的节点信息不存放在 config 库的某张表里。

方法一:通过 mongos 获取 configDB

db.adminCommand({getCmdLineOpts:1}).parsed.sharding.configDB

例如:

cfg/10.252.128.101:27019,10.252.128.102:27019,10.252.128.103:27019

这里表示:

Config Server Replica Set: cfg10.252.128.101:27019
10.252.128.102:27019
10.252.128.103:27019

方法二:连接 Config Server 后查看 Replica Set

首先通过上面的 configDB 得到 CFG 地址,然后连接其中一个 Config Server:

mongosh --host 10.252.128.101:27019

执行:

rs.conf()

或者只看成员:

rs.conf().members.forEach(function(m) {print(m.host + " => " + m._id);
})

示例:

10.252.128.101:27019 => 0
10.252.128.102:27019 => 1
10.252.128.103:27019 => 2

重要说明

这里不存在类似:

db.configServer.find()

这样的标准 Config Server 节点表。

因此 Config Server 的两步关系是:

mongos|| getCmdLineOpts()v
sharding.configDB|v
cfg/10.252.128.101:27019,...|| 连接 CFGv
rs.conf()|v
CFG Replica Set 成员

三、Mongos 节点

方法一:直接查询 config.mongos

mongos 上:

use configdb.mongos.find().pretty()

只看关键字段:

db.mongos.find({}, {_id: 1,advisoryHostFQDNs: 1,mongoVersion: 1,ping: 1,up: 1
}).pretty()

你当前环境已经验证得到:

mongokml01.ops.zzt.360es.cn:20000
mongokml02.ops.zzt.360es.cn:20000
mongokml03.ops.zzt.360es.cn:20000

方法二:登录每个 mongos 查看自身配置

例如:

mongosh --host mongokml01.ops.zzt.360es.cn:20000

执行:

db.adminCommand({getCmdLineOpts:1})

查看:

db.adminCommand({getCmdLineOpts:1}).parsed

其中可以看到该 mongos 自身的配置,包括:

sharding.configDB

因此:

config.mongos↓
查看整个集群注册的 MongosgetCmdLineOpts()↓
查看当前这个 Mongos 自身配置

四、三类信息汇总

类型方法一方法二
数据 Shard db.adminCommand({listShards:1}) config.shards.find()
Config Server db.adminCommand({getCmdLineOpts:1}).parsed.sharding.configDB 连接 CFG 后 rs.conf()
Mongos db.getSiblingDB("config").mongos.find() 当前 Mongos 执行 getCmdLineOpts()

五、最常用命令汇总

如果你只是做日常巡检,直接使用下面这一组:

1. 数据 Shard

db.adminCommand({listShards:1}).shards.forEach(function(s) {print(s._id + " => " + s.host);
})

2. Config Server

db.adminCommand({getCmdLineOpts:1}).parsed.sharding.configDB

3. Mongos

db.getSiblingDB("config").mongos.find({}, {_id:1,advisoryHostFQDNs:1,mongoVersion:1,ping:1
}).pretty()

4. CFG Replica Set 成员

连接 CFG 后:

rs.conf().members.forEach(function(m) {print(m.host + " => " + m._id);
})

最终可以得到完整拓扑:

MongoDB Sharded Cluster
│
├── Mongos
│   ├── mongokml01:20000
│   ├── mongokml02:20000
│   └── mongokml03:20000
│
├── Config Server
│   └── cfg
│       ├── CFG01
│       ├── CFG02
│       └── CFG03
│
└── Data Shards├── rs1│   ├── node1│   ├── node2│   └── node3├── rs2│   ├── node1│   ├── node2│   └── node3└── ...