我们有带有3个实例的mongodb副本集,其中主节点位于数据中心D1中,次要节点位于数据中心D2中。我们在我们的设置中不需要任何故障转移选项,并且按照https://docs.mongodb.com/manual/tutorial/configure-secondary-only-replica-set-member/中描述的那样配置它。
运行在同一数据中心D2中的辅助节点之上的应用程序"A“使用的是猫鼬,我们指定(具有”最近“或”次要“选项)从辅助节点读取数据。
我们正面对这些问题:
( 1)是否可以使"A“从特定的辅助节点中读取,而无需在连接配置中指定主mongoDB节点在哪里?
2)如果数据中心D1和D2之间的连接丢失,因此mongoDB主节点不再可访问/可见,那么如何使"A“应用程序仍然从辅助节点读取?据我所知,它不起作用,因为即使是"A“也被配置为从二级读取,在执行实际的读取操作之前,mongoDB仍然需要在主线程和次进程之间执行某种ping/套利操作。
3)是否有可能/建议在数据中心D2中使用一个应用程序,它将直接作为独立实例而不是副本集的一部分对mongodb副本集主实例执行写操作?
版本: mongodb 3.2.9,猫鼬4.5.9
发布于 2017-03-04 07:51:03
假设您有三个节点:
您应该排定优先级节点:
现在,只要D1是可达的,那么D1.N0就是主要的。当我们在D1和D2之间有网络分区时,D2.N1就成为主要的,D2.N2将作为次要。当网络分区结束时,D1.N0将通过读取D2.N1 opLog来“赶上”丢失的数据,并将再次成为主数据,而D2.N1将成为次要数据。
https://stackoverflow.com/questions/42574402
复制相似问题