延迟副本集成员

在本页面

延迟的成员包含replica set's数据集的副本。但是,延迟成员的数据集反映了该集的较早或延迟的状态。例如,如果当前时间是 09:52,并且成员有一个小时的延迟,则延迟的成员没有比 08:52 更新的操作。

由于延迟成员是数据集的“滚动备份”或正在运行的“历史”快照,因此它们可以帮助您从各种人为错误中恢复。例如,延迟成员可以从失败的应用程序升级和操作员错误(包括删除的数据库和集合)中恢复。

Considerations

Requirements

Delayed members:

  • 必须 priority 0个成员。将优先级设置为 0,以防止延迟成员成为主要成员。

  • **应该是_1 个成员。始终阻止应用程序查看和查询延迟的成员。

  • 如果members[n].votes设为 1,请在elections投票投票。

Behavior

延迟的成员会延迟延迟并从源oplog复制并应用操作。在选择延迟量时,请考虑以下延迟量:

  • 必须等于或大于预期的维护时段。

  • 必须小于 oplog 的容量。有关 oplog 大小的更多信息,请参见Oplog Size

Write Concern

延迟的副本集成员可以确认由w: <number>发出的写操作。但是,对于使用w:“多数”进行写操作的写入操作,延迟的成员还必须是有表决权的成员(即members[n].votes大于0)以确认"majority"的写操作。无表决权的副本集成员(即members[n].votes0)不能有助于确认具有majority写关注的写操作。

延迟的辅助节点可以不早于已配置的slaveDelay返回写确认。

Sharding

在分片群集中,启用balancer时,延迟成员的效用有限。由于延迟成员会延迟复制复制块迁移,因此,如果在延迟窗口内发生任何迁移,则分片群集中延迟成员的状态对于恢复到分片群集的先前状态没有用。

Example

在下面的 5 成员副本集中,主要副本和所有次要副本具有数据集的副本。一名成员执行操作的延迟时间为 3600 秒(一小时)。此延迟成员也是隐藏,并且是优先级 0 成员

具有隐藏的延迟优先级 0 成员的 5 成员副本集的图。

Configuration

延迟成员的members[n].priority等于0members[n].hidden等于true,并且members[n].slaveDelay等于延迟的秒数:

{
   "_id" : <num>,
   "host" : <hostname:port>,
   "priority" : 0,
   "slaveDelay" : <seconds>,
   "hidden" : true
}

要配置延迟成员,请参阅配置延迟副本集成员