MongoDB副本集没有主要,需要强制新的主要

时间:2014-04-07 16:05:35

标签: mongodb

我们有一个mongoDB副本集,它有3个节点;

  1. 主要
  2. 二次
  3. 仲裁器
  4. 不知何故,我们的副本集最终以1& 2都被设为次要成员。我不确定这是怎么发生的(我们有一个服务器迁移,其中一个节点运行,但只有一个)。

    无论如何,我一直在尝试按照指南here

    重新选择副本集的新主要内容

    我无法使用

    rs.reconfig(cfg)
    

    因为它仅在指向主要(我没有)时才有效。

    使用force参数

    rs.reconfig(cfg, { force: true})
    

    似乎可以工作但是当我重新查询副本集的状态时,两个服务器仍然只显示为辅助服务器。

    为什么强制reconfig没有工作?目前,无论我尝试什么,数据库都会被锁定。

1 个答案:

答案 0 :(得分:1)

1.将所有节点转换为独立节点。

停止mongod deamon并修改/etc/mongod.conf以评论replSet选项。

启动mongod deamon。

2.使用mongodump备份所有节点的数据。

来自mongo docs的参考:

https://docs.mongodb.com/manual/reference/program/mongodump/

3.登录每个节点,然后删除local数据库。

执行此操作将删除节点上的副本集配置。

或者您可以删除本地数据库中集合system.replset中的记录,如下所示:

https://stackoverflow.com/a/31745150/4242454

4.使用replSet选项启动所有节点。

5.在上一个数据节点(非仲裁者)上,初始化一个新的副本集。

6.最后,使用rs.reconfig重新配置副本集。