Delayed Replica Set Members

Delayed members contain copies of a replica set’s data set. However, a delayed member’s data set reflects anearlier, or delayed, state of the set. For example, if the currenttime is 09:52 and a member has a delay of an hour, the delayed memberhas 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 fromvarious kinds of human error. For example, a delayed member can makeit possible to recover from unsuccessful application upgrades andoperator errors including dropped databases and collections.

Considerations

Requirements

Delayed members:

  • Must bepriority 0members. Set the priority to 0 to prevent a delayed member frombecoming primary.
  • Should behiddenmembers. Always prevent applications from seeing and queryingdelayed members.
  • do vote in elections for primary, if members[n].votes is set to 1.

Behavior

Delayed members copy and apply operations from the source oplog on a delay.When choosing the amount of delay, consider that the amount of delay:

  • must be equal to or greater than your expected maintenance window durations.
  • must be smaller than the capacity of the oplog. For moreinformation on oplog size, see Oplog Size.

Write Concern

Delayed replica set members can acknowledge write operations issuedwith w: <number>. For write operationsisued with w : "majority", however,delayed 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 toacknowledging write operations with majority write concern.

Delayed secondaries can return write acknowledgment no earlier than theconfigured slaveDelay.

Sharding

In sharded clusters, delayed members have limited utility when thebalancer is enabled. Because delayed members replicate chunkmigrations with a delay, the state of delayed members in a shardedcluster are not useful for recovering to a previous state of thesharded cluster if any migrations occur during the delay window.

Example

In the following 5-member replica set, the primary and all secondarieshave copies of the data set. One member applies operations with adelay of 3600 seconds (one hour). This delayed member is alsohidden and is a priority 0 member.

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

Configuration

A delayed member has itsmembers[n].priority equal to 0,members[n].hidden equal to true, andits members[n].slaveDelay equal to thenumber of seconds of delay:

  1. {
  2. "_id" : <num>,
  3. "host" : <hostname:port>,
  4. "priority" : 0,
  5. "slaveDelay" : <seconds>,
  6. "hidden" : true
  7. }

To configure a delayed member, seeConfigure a Delayed Replica Set Member.