OPTIONS
翻译或纠错本页面

隐藏节点

隐藏节点拥有与 主节点 一致的数据集,但是它对于应用程序来说是 不可见 的。隐藏节点可以很好的与 复制集 中的其他节点隔离,并应对特殊的需求。隐藏节点也应该是一个 不能升职为主节点优先级为0的节点 。函数 db.isMaster() 将不会列出隐藏节点。隐藏节点在 选举 中是 可以进行投票 的。

在下述这样拥有五个节点的复制集中,四个从节点都拥有与主节点一致的数据集,但其中的一个从节点是隐藏节点。

Diagram of a 5 member replica set with a hidden priority 0 member.

Diagram of a 5 member replica set with a hidden priority 0 member.

行为

读操作

客户端将不会把读请求分发到隐藏节点上,即使我们设定了 复制集读选项 。这些隐藏节点将不会收到来自应用程序的请求。我们可以将隐藏节点专用于报表节点或是备份节点。 延时节点 也应该是一个隐藏节点。

在分片集群中, mongos 将不与隐藏节点进行交流。

投票

在复制集的选举中,隐藏节点是会 参加 投票的。当关闭一个隐藏节点的时候,请确认复制集中的可用节点个数足够进行选举,以防 主节点 降职导致复制集对外不可用。

将隐藏节点用于备份,可以防止我们在备份过程中使用 db.fsyncLock()db.fsyncUnlock() 操作来对 mongod 实例加或解除写锁的过程中应用程序的不可用。

补充信息

参见 MongoDB备份方案 可以获得更多有关MongoDB备份的信息。关于如何配置一个隐藏节点,可以参考 配置一个隐藏节点