一个 MongoDB 实例可以有不同的角色:
- 配置服务器
- 路由器(mongos)
- 数据服务器
- 仲裁服务器(用于副本集)
我知道db.serverStatus()
可以用来查看一个实例是否是路由器,process
值为mongos
. 但对于配置服务器、仲裁器和数据节点,该process
值为mongod
.
有没有一种简单的方法来区分这些实例类型?
一个 MongoDB 实例可以有不同的角色:
我知道db.serverStatus()
可以用来查看一个实例是否是路由器,process
值为mongos
. 但对于配置服务器、仲裁器和数据节点,该process
值为mongod
.
有没有一种简单的方法来区分这些实例类型?
我想提请注意这个问题的一个特别重要的问题:分片是和水平维度(数据分布到的几个副本集),副本集是一种高可用性解决方案,由不同的 mongod 节点组成!
所以你实际上想要弄清楚的是:
对于副本集,您可能有兴趣了解每个节点角色。无需连接副本集的所有节点即可轻松获取信息,只需运行以下命令:
db.isMaster()
这样,您将获得每个成员的节点成员和角色。
首先,对于分片节点成员,您永远不应该尝试直接连接到配置服务器。它们用于管理块的分布、块拆分和其他配置数据,仅与分片集群功能相关。避免使用这些 ip 从您的应用程序连接。
因此,如果您想清楚地了解哪些成员组成了您的分片集群、您拥有多少个分片等,您需要运行命令:
db.printShardStatus()
或者
sh.status()
请在此处查看文档
干杯,N.