【问题标题】:Connecting to Mongo in Replica set mode副本集模式连接MongoDB
【发布时间】:2017-03-04 06:27:44
【问题描述】:

我有一个运行副本集的独立 Mongo 实例。但是,我似乎无法在 Mongo shell 中连接和运行任何查询。我得到以下信息:

error: { "$err" : "not master and slaveOk=false", "code" : 13435 }

我这样设置 SlaveOk:

db.getMongo().setSlaveOk()

..但我仍然收到错误:

error: {
"$err" : "not master or secondary; cannot currently read from this replSet member",
"code" : 13436
}

我似乎无法在 Google 上找到直接答案:如何使用 mongo shell 连接到我的副本集?

【问题讨论】:

  • 你说你有“独立”的 Mongo 并运行一个副本集。这些是相互冲突的标识符。它要么是独立的,要么是副本集。如果它是副本集,则必须提供其配置(rs.conf())和状态(rs.status())。

标签: mongodb


【解决方案1】:

我遇到了同样的问题并使用它解决了它

rs.initiate()

【讨论】:

  • 这几乎肯定是错误的做法。要么你已经在使用一个副本集(在这种情况下它什么都不做),或者你不是,但不想这样做,在这种情况下你给自己带来了问题,因为向后退很困难。
  • 对于一个空的测试数据库,它可以工作。然后你使用db.getMongo() 更新连接信息。
【解决方案2】:

如果您要连接到副本集中不是主节点的节点,则需要明确告诉客户端您没有连接到主节点是可以的..

你可以通过调用来做到这一点

rs.slaveOk()

然后您可以执行查询。

请注意,当连接到从节点时,您将只能执行查询,而不能对存储库进行更改。

【讨论】:

  • 如果你连接到副本集中的主数据库怎么办?!?!
  • @omouse 如果您连接到副本集中的主数据库,您将不会收到错误消息,您将能够读取或写入。
  • 我的问题最终是在“恢复”而不是“主要”
【解决方案3】:

您连接到的节点既不是辅助节点也不是主节点。该节点可能是仲裁器,也可能是恢复模式中的辅助节点。例如,如果我有一个包含 3 个节点的副本集(其中有一个主节点、一个辅助节点和一个仲裁器),如果我已连接到仲裁器并发出查询,即使我已将 slaveOK 设置为 true,我也会收到相同的错误. shell 的命令行提示应该指出你所连接的节点处于什么状态:

foo:ARBITER> db.test.find()
error: {
    "$err" : "not master or secondary; cannot currently read from this replSet member",
    "code" : 13436
}

【讨论】:

    【解决方案4】:

    你试过了吗:db.getMongo().setSlaveOk(true)

    【讨论】:

      【解决方案5】:

      我也得到了错误。但是当我尝试使用机器名而不是“localhost”或 127.0.0.1 连接到辅助节点时,错误消失了。

      【讨论】:

        【解决方案6】:

        仅当您在独立模式下运行属于副本集一部分的实例而未将其从副本集中完全删除时,才会显示此错误。 例如您在不同的端口上重新启动实例,但在启动时不要删除 --repSet 选项。 这会启动它,但既不是主要的也不是次要的,因此错误 不是主要的或次要的;

        根据您最初打算执行的操作,在正确的端口上重新启动实例并使用正确的 --repSet 选项。这会将其添加到副本集并消除此错误

        如果您打算将实例作为独立运行一段时间(例如创建索引),则在不使用 --repSet 选项的情况下在不同的端口上启动它

        【讨论】:

          【解决方案7】:

          在具有两个副本集的登台服务器上运行 aggregate() 时遇到了同样的错误。我认为您需要将读取首选项更改为“secondaryPreferred”。

          只需在查询函数后面加上 .read('secondaryPreferred') 即可。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-06-26
            • 2013-05-25
            • 1970-01-01
            • 2013-11-02
            • 2014-07-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多