Hidden Replica Set Members
A hidden member maintains a copy of the primary’s
data set but is invisible to client applications. Hidden members
are good for workloads with different usage patterns from the other
members in the replica set. Hidden members must always be
priority 0 members and
so cannot become primary. The db.isMaster()
method does not
display hidden members. Hidden members, however, may vote in
elections.
In the following five-member replica set, all four secondary members
have copies of the primary’s data set, but one of the secondary members
is hidden.
Behavior
Read Operations
Clients will not distribute reads with the appropriate read
preference to hidden members. As a result, these
members receive no traffic other than basic replication. Use hidden
members for dedicated tasks such as reporting and
backups. Delayed members
should be hidden.
In a sharded cluster, mongos
do not interact with hidden
members.
Voting
Hidden members may vote in replica set elections. If you stop a
voting hidden member, ensure that the set has an active majority or the
primary will step down.
For the purposes of backups,
db.fsyncLock()
ensures that the data files are safe to copy
using low-level backup utilities such as cp
, scp
, or
tar
. A mongod
started using the copied
files contains user-written data that is indistinguishable from the
user-written data on the locked mongod
.
The data files of a locked mongod
may change due to
operations such as journaling syncs or
WiredTiger snapshots. While
this has no affect on the logical data (e.g. data accessed by
clients), some backup utilities may detect these changes and emit
warnings or fail with errors. For more information on MongoDB-
recommended backup utilities and procedures, see
MongoDB Backup Methods.
Write Concern
Hidden replica set members can acknowledge write operations issued
with w: <number>
. For write operations
isued with w : "majority"
, however,
hidden members must also be voting members (i.e. members[n].votes
greater than 0
) to acknowledge the "majority"
write operation.
Non-voting replica set members (i.e. members[n].votes
is 0
) cannot contribute to acknowledging write operations with
majority
write concern.