对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

Atlas 中故障转移过程中的回滚

当成员在故障转移后重新加入其副本集时,回滚会恢复前主节点 (primary node in the replica set) 的写入操作。Atlas 集群使用 { w: "majority" } 作为 MongoDB 的默认写关注(write concern)。使用此默认设置,Atlas 仅在将写入复制到大多数节点后才确认写入。已确认的写入不能回滚,因此回滚不会导致数据丢失。

如果配置 { w: 1 } 写关注(write concern),回滚可能会影响尚未复制的写入。在回滚发生之前,请规划如何识别已回滚的操作,并决定是否重新发出这些操作。

要了解副本集回滚机制,请参阅副本集故障转移期间的回滚。

Atlas 中发生回滚时,适用以下条件:

  • Atlas 在项目操作日志中生成 HOST_ROLLBACK 事件。要了解如何检查此事件,请参阅 检测回滚。

  • Atlas 不保留回滚操作列表。

Atlas 集群使用 { w: "majority" } 作为 MongoDB 的默认写关注(write concern)。使用此默认设置,回滚不会导致数据丢失。您配置的写关注(write concern)决定回滚是否会导致数据丢失:

  • { w: "majority" } (默认)— Atlas 仅在大多数副本集确认后才确认写入。由于在主节点降级之前复制了写入,因此回滚不能包含这些写入。

  • { w: 1 } — Atlas 在主节点记录写入后立即确认写入,而不会等待复制到从节点。如果主节点在写入复制前降级,则写入可能会回滚,数据可能无法恢复。

与自管理部署不同,Atlas 还会在常规维护操作期间触发副本集选举,包括:

  • 滚动维护和补丁更新

  • 扩展事件,例如更改集群层或磁盘大小

  • 常规集群配置更改

Atlas 以滚动方式执行这些操作,以避免停机。但是,每次选举都会创建一个时段,在该时段内,{ w: 1 } 写入可能尚未复制到从节点。如果使用 { w: 1 },在评估回滚风险容差时,请考虑这些选举源。

当 Atlas 在故障转移期间检测到回滚条件时,会生成 HOST_ROLLBACK 事件。您可以通过以下方式检查此事件:

  • 操作日志:在您的项目操作日志中查看 HOST_ROLLBACK 事件。要了解更多信息,请参阅 查看操作日志。

  • 警报:在 HOST_ROLLBACK 事件类型上配置警报,以在事件发生时接收通知。要了解更多信息,请参阅配置警报设置。

注意

由于源集群和目标集群之间的数据差异,Atlas 还会在时点还原操作期间生成 HOST_ROLLBACK 事件。当此事件在该上下文中发生时,您可以忽略此事件。要了解详情,请参阅 从持续云备份恢复。

如果发生回滚,请联系 MongoDB 支持团队 以确定是否可以恢复已回滚的数据。