我在使用mongoDB时遇到了一些问题。
我在2个分片中以主从模式使用mongoDB。每个分片有3个副本集成员:1个主服务器和2个从服务器。当我以REPLICA_SAFE或REPLICA_ACKNOWLEDGED模式编写文档时,如果我立即尝试读取它(3-5毫秒后),我无法保证文档将在副本中找到。使用Write Concern - REPLICA_SAFE或REPLICA_ACKNOWLEDGED。使用readPreference - secondaryPreferred。
请告诉我,我做错了什么?如何通过副本集的所有成员确认来保证写作?提前谢谢
答案 0 :(得分:0)
多数副本写只会写入大多数成员。
例如,如果您从次要中读取不承认写入的内容,那么您将无法将其取回; a.k.a.你不能保证在这里有很强的一致性。
您可以强制执行强一致性的唯一方法是将写入发送给副本集的所有成员。这当然会带来多个问题,例如,如果一个成员不回复(故障转移,延迟等)会发生什么?没有办法确保副本集的所有成员实际上得到了坦率的写作。