25

I have a mongo 2 node cluster running, with this replica set config.

config = {_id: "repl1", members:[
{_id: 0, host: 'localhost:15000'},
{_id: 1, host: '192.168.2.100:15000'}]
}

I have to move these both nodes on to new servers. I have copied everything from old to new servers, but I'm running into issues while reconfiguring the replica config due to ip change on the 2nd node.

I have tried this.

config = {_id: "repl1", members:[
 {_id: 0, host: 'localhost:15000'},
{_id: 1, host: '192.168.2.200:15000'}]
}
   rs.reconfig(config)  
   {


"startupStatus" : 1,
"errmsg" : "loading local.system.replset config (LOADINGCONFIG)",
"ok" : 0
}

It shows above message, but change is not happening.

I also tried changing replica set name but pointing to the same data dirs. I am getting the following error:

rs.initiate() 
{
"errmsg" : "local.oplog.rs is not empty on the initiating member. cannot initiate.",
"ok" : 0
}

What are the right steps to change the IP but keeping the data on the 2nd node, or do i need to recreate/resync the 2nd node?

4

4 回答 4

34

嗯,我有同样的问题。

我不得不删除所有复制和 oplog。

use local
db.dropDatabase()

用新的名称重新启动你的 mongo

config = {_id: "repl1", members:[
{_id: 0, host: 'localhost:15000'},
{_id: 1, host: '192.168.2.100:15000'}]
}

rs.initiate(config)

我希望这也适用于你

于 2012-09-04T21:37:41.763 回答
31

重新配置副本集时可以使用 force 选项:

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

请注意,正如 Adam 在评论中已经建议的那样,您应该至少有 3 个节点:2 个完整节点和 1 个仲裁器(支持的最低配置)或 3 个完整节点(推荐的最低配置),以便可以选举主节点。

于 2012-07-10T15:04:02.933 回答
3

我意识到这是一篇旧帖子,但我发现在尝试更改副本集中辅助节点使用的端口时遇到了完全相同的错误。

在我的情况下,我需要停止我正在更改其配置的辅助服务器,并在将更改的配置应用于主服务器之前将其启动到其新地址和端口上。

这是在 mongo 文档中,但是我必须上下移动的顺序是我在第一遍时误读的东西,所以为了清楚起见,我在这里重复了一遍:

  1. 关闭要移动的副本集的次要成员。
  2. 将辅助备份带到其新地址
  3. 按照上面原始帖子中的详细说明进行配置更改
于 2013-11-25T12:45:25.527 回答
0

您可以使用 rs.reconfig 选项。首先使用 rs.conf() 检索当前配置。根据需要修改配置文档,然后将修改后的文档传递给rs.reconfig()

文档中的更多信息。

于 2020-12-05T22:39:27.147 回答