mongoDB-延迟复制集成员

延迟成员包含一套复制集的数据集的复制。然而,延迟成员的数据集反映了先前的,或推迟的复制集状态。例如,如果当前时间是09:52并且成员已经延迟一个小时,延迟成员没有比08:52更近的操作。

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

注意事项

要求

延迟成员:

  • 必须是优先级为0的成员。将优先级设置为0,以防止延迟的成员成为主成员。
  • 应该是隐藏成员。始终防止应用程序查看和查询延迟的成员。
  • 如果members[n].votes设置为1,在主节点的选举中投票。

行为

延迟成员在延迟时(不马上复制,而是等待一段时间再复制)复制并应用来自源oplog的操作。选择延时量时,考虑延时量:

  • 必须等于或大于预期的维护窗口持续时间。
  • 必须小于oplog的容量。有关oplog大小的更多信息,请参见oplog大小。

写级别

延迟复制集成员可以确认w: 发出的写操作。对于与w一致的写操作:“多数”,然而,被延迟的成员也必须是有投票权的成员(即members[n].votes大于0)确认“多数”写入操作。无表决权的复制集成员(即members[n].votes为0)不能帮助确认多数级别的写操作。

延迟的次节点可以不早于配置的slaveDelay返回写应答。

碎片

在分片集群中,启用平衡器时,延迟成员的实用程序有限。因为延迟的成员使用延迟来复制块迁移,所以如果延迟窗口期间发生任何迁移,那么在sharded集群中延迟成员的状态对于恢复到sharded集群的前一状态是没有用的。

例子

在以下5个副本集中,主系欸但和所有次节点都有数据集的副本。一个成员应用延迟为3600秒(1小时)的操作。这个延迟的成员也是隐藏的,并且是优先级为0的成员。
mongoDB-延迟复制集成员_第1张图片

配置

延迟的成员有它的 members[n].priority为0,members[n].hidden等于真,它的members[n].slaveDelay等于延迟的秒数:

{
   "_id" : ,
   "host" : ,
   "priority" : 0,
   "slaveDelay" : ,
   "hidden" : true
}

若要配置延迟的成员,请参阅配置延迟的复制集成员。

你可能感兴趣的:(mongo,复制集)