如何修改副本集配置?

Sae*_*tar 25 mongodb

我有一个mongo 2节点集群正在运行,具有此副本集配置.

config = {_id: "repl1", members:[
{_id: 0, host: 'localhost:15000'},
{_id: 1, host: '192.168.2.100:15000'}]
}
Run Code Online (Sandbox Code Playgroud)

我必须将这两个节点都移到新服务器上.我已经复制了从旧服务器到新服务器的所有内容,但由于第二个节点上的ip更改,我在重新配置副本配置时遇到了问题.

我试过这个.

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
}
Run Code Online (Sandbox Code Playgroud)

它显示上面的消息,但没有发生变化.

我也尝试更改副本集名称,但指向相同的数据目录.我收到以下错误:

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

更改IP但在第二个节点上保留数据的正确步骤是什么,或者我是否需要重新创建/重新同步第二个节点?

Erh*_*n A 32

好吧,我遇到了同样的问题.

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

use local
db.dropDatabase()
Run Code Online (Sandbox Code Playgroud)

使用新的设置名称重新启动您的mongo

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

rs.initiate(config)
Run Code Online (Sandbox Code Playgroud)

我希望这也适合你


Chr*_*n P 31

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

rs.reconfig(config, {force: true})
Run Code Online (Sandbox Code Playgroud)

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