写入mongo db副本集:写作时要照顾小学?

时间:2014-09-29 01:47:40

标签: mongodb

我的mongo db有一个主节点和两个辅助节点。

我必须注意,写入时哪个节点是主节点? 或者mongo db是否自动将写操作从辅助节点重定向到主节点?

这里讨论了类似的问题,但我的问题没有在那里得到清楚的回答: In a primary-secondary Mongo db set if you accidentally write to a secondary would it reflect in primary it gets routed to primary

2 个答案:

答案 0 :(得分:2)

这实际上是关于如何配置连接字符串到副本集以及驱动程序如何正确“发现”成员。

要明确涵盖对引用问题所做的陈述,不能写入辅助节点,因为写入仅转到集合中的主节点。如果主节点出现故障,则需要选择主节点。在举行选举期间,写作操作将失败,因为目前没有主要服务他们。

至于驱动程序“如何”确定哪个是当前“主要”的具体机制,meta spec for driver implementations中有更多详细信息。

但一般情况是,只要你指定“足够”的可能主机与副本集联系(并且所有这些都是三个节点的好例子),那么驱动程序能够“检查”成员并确定哪一个是“主要的”并且可以写入。

因此“故障转移”是副本集配置的一部分,“检测”由驱动程序完成,在那里可以与“至少一个节点”通信,并要求返回哪个节点是当前主节点,这样就可以用于将来的写操作。

答案 1 :(得分:2)

有几种方法可以设置它,看看这个链接:MongoDB Replica Members

最后,您需要运行配置服务器(mongos),这将根据设置透明地重定向您的请求以进行读/写。但是,也可以在应用程序级别执行此操作。