我们有 3 个实例的 mongodb 副本集,其中主节点位于数据中心 D1,辅助节点位于数据中心 D2。我们的设置中不需要任何故障转移选项,并按照https://docs.mongodb.com/manual/tutorial/configure-secondary-only-replica-set-member/中的描述进行配置。
在同一数据中心 D2 内的辅助节点上运行的应用程序“A”正在使用 mongoose,我们指定(使用“最近”或“辅助”选项)从辅助节点读取数据。
我们面临着这些问题:
1)是否可以使“A”从特定的辅助节点读取,而无需在连接配置中指定主 mongoDB 节点在哪里?
2)如果数据中心 D1 和 D2 之间的连接丢失,那么我们如何使“A”应用程序仍然从辅助节点读取,因此 mongoDB 主节点不再可访问/可见?据我了解,它不起作用,因为即使“A”被配置为从辅助读取,mongoDB 仍然需要在主要和辅助之间执行一种 ping/套利,然后才能执行实际的读取操作。
3)是否可能/建议在数据中心 D2 中有一个应用程序,它将直接作为独立实例而不是作为副本集的一部分对 mongodb 副本集主实例执行写入操作?
版本:mongodb 3.2.9、mongoose 4.5.9