2

我正在本地环境中对 mongodb 进行故障转移测试。我有两个 mongo 服务器(主机名 1,主机名 2)和一个仲裁器。

我的 mongoid.yml 文件中有以下配置

localhost:
  hosts:
  - - hostname1
    - 27017
  - - hostname2
    - 27017
  database: myApp_development
  read: :primary
  use_activesupport_time_zone: true

现在,当我启动我的 rails 应用程序时,一切正常,并且从主节点(主机名 1)读取数据。然后我杀死了主(hostname1)的mongo进程,所以辅助(hostname2)成为主并开始提供数据。

然后一段时间后,我启动 hostname1 的 mongo 进程,然后它成为副本集中的辅助节点。现在主要(主机名2)和次要(主机名1)工作正常。

真正的问题从这里开始。

我杀死了我的新主(hostname2)的mongo进程,但是这次,辅助(hostname1)没有成为主,并且对rails应用程序的任何进一步请求都会引发以下错误

Cannot connect to a replica set using seeds hostname2

请帮忙。提前致谢。

** 更新: **

我在 mongo repl_connection 类中输入了一些记录器,并遇到了这个。

当我启动 rails 应用程序时,我在种子数组中拥有两个主机,mongo 驱动程序会跟踪这些主机。但在第二次故障转移期间,此阵列中仅存在发生故障的主机。

因此,我还想知道,如何以及何时从种子列表中删除主机之一。

4

0 回答 0