我们有一个mongoDB副本集,它有3个节点;
不知何故,我们的副本集最终以1& 2都被设为次要成员。我不确定这是怎么发生的(我们有一个服务器迁移,其中一个节点运行,但只有一个)。
无论如何,我一直在尝试按照指南here
重新选择副本集的新主要内容我无法使用
rs.reconfig(cfg)
因为它仅在指向主要(我没有)时才有效。
使用force参数
rs.reconfig(cfg, { force: true})
似乎可以工作但是当我重新查询副本集的状态时,两个服务器仍然只显示为辅助服务器。
为什么强制reconfig没有工作?目前,无论我尝试什么,数据库都会被锁定。
答案 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
重新配置副本集。