- Replication >
- Replication Concepts >
- Replica Set Members >
- Replica Set Secondary Members >
- Delayed Replica Set Members
Delayed Replica Set Members¶
On this page
Delayed members contain copies of a replica set’s data set. However, a delayed member’s data set reflects an earlier, or delayed, state of the set. For example, if the current time is 09:52 and a member has a delay of an hour, the delayed member has no operation more recent than 08:52.
Because delayed members are a “rolling backup” or a running “historical” snapshot of the data set, they may help you recover from various kinds of human error. For example, a delayed member can make it possible to recover from unsuccessful application upgrades and operator errors including dropped databases and collections.
Considerations¶
Requirements¶
Delayed members:
- Must be priority 0 members. Set the priority to 0 to prevent a delayed member from becoming primary.
- Should be hidden members. Always prevent applications from seeing and querying delayed members.
- do vote in elections for primary.
Behavior¶
Delayed members apply operations from the oplog on a delay. When choosing the amount of delay, consider that the amount of delay:
- must be is equal to or greater than your maintenance windows.
- must be smaller than the capacity of the oplog. For more information on oplog size, see Oplog Size.
Sharding¶
In sharded clusters, delayed members have limited utility when the balancer is enabled. Because delayed members replicate chunk migrations with a delay, the state of delayed members in a sharded cluster are not useful for recovering to a previous state of the sharded cluster if any migrations occur during the delay window.
Example¶
In the following 5-member replica set, the primary and all secondaries have copies of the data set. One member applies operations with a delay of 3600 seconds, or an hour. This delayed member is also hidden and is a priority 0 member.
Configuration¶
A delayed member has its members[n].priority equal to 0, members[n].hidden equal to true, and its members[n].slaveDelay equal to the number of seconds of delay:
{
"_id" : <num>,
"host" : <hostname:port>,
"priority" : 0,
"slaveDelay" : <seconds>,
"hidden" : true
}
To configure a delayed member, see Configure a Delayed Replica Set Member.
Thank you for your feedback!
We're sorry! You can Report a Problem to help us improve this page.