隐藏的成员维护主数据库的
数据集的副本,但对客户端应用程序不可见。隐藏成员适合具有与副本集中其他成员不同的使用模式的工作负载。隐藏成员必须始终是
优先级0成员,因此不能成为主要成员。该db.isMaster()
方法不显示隐藏的成员。但是,隐藏的成员可以在
选举中投票。
在下面的五成员副本集中,所有四个辅助成员都具有主数据库的数据集的副本,但是其中一个辅助成员被隐藏了。
客户不会将具有适当读取首选项的读取分发给隐藏成员。结果,这些成员除了基本复制外没有收到其他流量。使用隐藏的成员执行诸如报告和备份之类的专用任务。延迟的成员 应该被隐藏。
在分片群集中,mongos
请勿与隐藏成员互动。
隐藏的成员可以在副本集选举中投票。如果停止投票的隐藏成员,请确保该集合具有有效多数,否则 主要成员将退出。
为了备份的目的,
db.fsyncLock()
确保数据文件是安全的使用低级别的备份实用程序,如复制cp
,scp
或
tar
。一mongod
开始使用复制的文件包含从上锁定用户写入的数据无法区分用户写入的数据mongod
。
锁定的数据文件mongod
可能由于诸如日记同步或
WiredTiger快照之类的操作而改变。尽管这对逻辑数据(例如,客户端访问的数据)没有影响,但是某些备份实用程序可能会检测到这些更改并发出警告或失败并出现错误。有关MongoDB推荐的备份实用程序和过程的更多信息,请参阅
MongoDB备份方法。
隐藏的副本集成员可以确认由发出的写操作。对于使用进行的写操作,隐藏成员还必须是有表决权的成员(即
大于),以确认写操作。非投票副本集成员(即
is )不能有助于确认具有写关注的写操作
。w: <number>
w : "majority"
members[n].votes
0
"majority"
members[n].votes
0
majority
有关备份MongoDB数据库的更多信息,请参阅MongoDB备份方法。要配置隐藏成员,请参阅 配置隐藏副本集成员。