有人知道为什么mongodb副本集会很快地进行主交换和辅助交换吗?
我们将3台mongo服务器设置为副本,其中一台永远无法成为主服务器(备份)。假设mongo1是主要的,mongo[2..3]是次要的。mongo2和mongo3无法随机访问mongo1,这导致mongo2被选为主要用户。Mongo1随后看到了这一点,并成为主要的。然后mongo2和Mongo3在几秒钟后再次看到mongo1,并再次当选 有没有理由让它如此迅速地重新选举mongo1?mongo 1和mongo 2具有相同的优先级 问题是它会断开mongo路由器与我们每个Web服务器的连接,这需要一段时间来重新发现哪个是主服务器并连接到它 此外,mongodb路由器应该位于应用服务器上还是单独的服务器上?在mongodb手册中,它建议将它放在每个应用服务器上,但这样做的好处是什么?在应用程序和mongo服务器之间安装路由器服务器有什么好处和问题 我应该在AWS(ec2)中提到这一点,如果这有区别的话 编辑: 将Mongo2.4.6作为分片副本集运行。很抱歉,我忘了提到那一部分。它们的负载相当高。mongo实例在EC2中都位于同一区域和同一可用性区域有人知道为什么mongodb副本集会很快地进行主交换和辅助交换吗?,mongodb,replication,failover,Mongodb,Replication,Failover,我们将3台mongo服务器设置为副本,其中一台永远无法成为主服务器(备份)。假设mongo1是主要的,mongo[2..3]是次要的。mongo2和mongo3无法随机访问mongo1,这导致mongo2被选为主要用户。Mongo1随后看到了这一点,并成为主要的。然后mongo2和Mongo3在几秒钟后再次看到mongo1,并再次当选 有没有理由让它如此迅速地重新选举mongo1?mongo 1和mongo 2具有相同的优先级 问题是它会断开mongo路由器与我们每个Web服务器的连接,这需要一
网络跳数/延迟。查询本地mongos的权威碎片比执行远程查询要快-这两种方法都需要从正确的碎片中获取数据。
另一方面:Couchbase等其他数据库避免使用mongos/router组件,以完全避免这种开销
而只有在新的主节点失去多数时,节点才应该重新当选。因此,在您的情况下,2和3似乎无法连接到2。So 2成为新的主要元素。但不久之后,1和3无法连接到2,因为他们拥有多数票,他们选择1再次成为主
mongodb路由器是指mongos进程吗?您能运行rs.status()和rs.conf()并将输出添加到您的问题中吗?这里是rs.status和rs.conf的粘贴箱,是的,可以通过分析日志了解mongos processExact问题。它是高负载环境吗?您是否尝试重新同步辅助服务器?您正在运行副本集还是分片群集?在副本集配置中,没有单独的路由器组件(分片集群具有
mongos
进程)。你能澄清一下你所说的“路由器”吗?您还可以提供关于副本集部署的更多详细信息吗:您的MongoDB服务器是否在地理上分布?这些是什么类型的AWS实例?另外,什么版本的MongoDB?在原始帖子中添加了更多信息