我的mongo数据库具有三个副本1是主节点,而2,3是辅助节点。 假设发生以下事件顺序
1)副本1写入文档A,并将其复制到2,3
2)副本1写入文档B,但由于某种原因不管理将其复制到任何其他副本。
3)副本1出现故障
下一步应该发生什么。我知道选举将在2、3之间进行,并且其中一个将成为主要和其他次要,并且操作将继续进行,但是1中的文档B记录又该如何处理,当1从故障中恢复时是否应该复制该文档? >
答案 0 :(得分:1)
https://docs.mongodb.com/manual/core/replica-set-rollbacks/:
...如果主服务器接受了在主服务器降级之前辅助服务器未成功复制的写操作。当主数据库作为辅助数据库重新加入集合时,它将还原或“回滚”其写操作,以保持数据库与其他成员的一致性。
似乎很清楚
答案 1 :(得分:0)
为防止回滚已确认给客户端的数据,请在启用日记功能的情况下运行所有有表决权的成员,并使用w:多数写入问题来确保写入操作传播到大多数副本集节点,然后返回确认给发行客户。