1

一个 MongoDB 实例可以有不同的角色:

  • 配置服务器
  • 路由器(mongos)
  • 数据服务器
  • 仲裁服务器(用于副本集)

我知道db.serverStatus()可以用来查看一个实例是否是路由器,process值为mongos. 但对于配置服务器、仲裁器和数据节点,该process值为mongod.

有没有一种简单的方法来区分这些实例类型?

4

1 回答 1

2

我想提请注意这个问题的一个特别重要的问题:分片是和水平维度(数据分布到的几个副本集),副本集是一种高可用性解决方案,由不同的 mongod 节点组成!

所以你实际上想要弄清楚的是:

  • ReplicaSet 节点角色
  • 分片节点成员

对于副本集,您可能有兴趣了解每个节点角色。无需连接副本集的所有节点即可轻松获取信息,只需运行以下命令:

db.isMaster()

这样,您将获得每个成员的节点成员和角色。

首先,对于分片节点成员,您永远不应该尝试直接连接到配置服务器。它们用于管理块的分布、块拆分和其他配置数据,仅与分片集群功能相关。避免使用这些 ip 从您的应用程序连接。

因此,如果您想清楚地了解哪些成员组成了您的分片集群、您拥有多少个分片等,您需要运行命令:

db.printShardStatus()

或者

sh.status()

请在此处查看文档

干杯,N.

于 2012-10-31T17:44:40.713 回答