我正在运行一个mongo 2节点集群,并使用此副本集配置。
config = {_id: "repl1", members:[
{_id: 0, host: 'localhost:15000'},
{_id: 1, host: '192.168.2.100:15000'}]
}
我必须将这两个节点都移到新服务器上。我已经复制了从旧服务器到新服务器的所有内容,但是由于第二个节点上的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
}
它显示上面的消息,但没有发生变化。
我还尝试更改副本集名称,但指向相同的数据目录。 我收到以下错误:
rs.initiate()
{
"errmsg" : "local.oplog.rs is not empty on the initiating member. cannot initiate.",
"ok" : 0
}
更改IP但在第二个节点上保留数据的正确步骤是什么,或者我是否需要重新创建/重新同步第二个节点?
答案 0 :(得分:32)
嗯,我遇到了同样的问题。
我必须删除所有复制和oplog。
use local
db.dropDatabase()
使用新的设置名称
重新启动您的mongoconfig = {_id: "repl1", members:[
{_id: 0, host: 'localhost:15000'},
{_id: 1, host: '192.168.2.100:15000'}]
}
rs.initiate(config)
我希望这也适合你
答案 1 :(得分:30)
重新配置副本集时可以使用强制选项:
rs.reconfig(config, {force: true})
请注意,正如Adam在评论中已经建议的那样,您应该至少有3个节点:2个完整节点和1个仲裁器(最低支持配置)或3个完整节点(最低建议配置),以便可以选择主节点。
答案 2 :(得分:3)
我意识到这是一个旧帖子,但我发现在尝试更改副本集中辅助节点使用的端口时,我收到了同样的错误。
在我的情况下,我需要停止我正在更改其配置的辅助服务器,并在应用主服务器上更改的配置之前将其提交到新的地址和端口。
这是在mongo文档中,但是我必须上下调整的顺序是我在第一遍中误读的内容,所以为了清楚起见我在这里重复了一遍:
答案 3 :(得分:0)
您可以使用rs.reconfig选项。首先使用rs.conf()检索当前配置。根据需要修改配置文档,然后将修改后的文档传递给rs.reconfig()
docs中的更多信息。