【问题标题】:MongoDB primary replica failed before secondary replicas can sync themselvesMongoDB 主副本在辅助副本可以自行同步之前失败
【发布时间】:2019-05-07 15:45:19
【问题描述】:

我的 mongo db 有三个副本 1 是主节点,2,3 是辅助节点。 假设发生以下事件序列

1) Replica 1 写入文档 A 并被复制到 2,3

2) 副本 1 写入文档 B,但由于某种原因无法将其复制到任何其他副本。

3) 副本 1 遇到了一些故障

接下来会发生什么。我知道选举将在 2、3 之间进行,其中一个将成为主要的,另一个将成为次要的,并且操作继续工作,但是 1 中的文档 B 记录呢,当 1 从故障中恢复时是否应该复制它?

【问题讨论】:

    标签: mongodb replicaset mongodb-replica-set


    【解决方案1】:

    https://docs.mongodb.com/manual/core/replica-set-rollbacks/:

    ...如果主节点在主节点退出之前接受了辅助节点未成功复制的写入操作。当主节点作为辅助节点重新加入集合时,它会还原或“回滚”其写入操作以保持与其他成员的数据库一致性。

    看起来很清楚

    【讨论】:

      【解决方案2】:

      为了防止回滚已向客户端确认的数据,请在启用日志的情况下运行所有​​投票成员并使用 w:majority write concern 来保证写入操作传播到大多数副本集节点,然后再返回确认发行客户端。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-31
        相关资源
        最近更新 更多