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

レプリカ セットを再構成するときに、強制オプションを使用できます。

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

Adam がコメントで既に提案したように、プライマリ ノードを選択できるように、少なくとも 3 つのノードが必要です。

于 2012-07-10T15:04:02.933 に答える
3

これが古い投稿であることは認識していますが、レプリカ セットのセカンダリが使用するポートを変更しようとすると、まったく同じエラーが発生することがわかりました。

私の場合、構成を変更していたセカンダリを停止し、変更した構成をプライマリに適用する前に、新しいアドレスとポートで起動する必要がありました。

これは mongo のドキュメントにありますが、物事を上下させる順序は、最初のパスで読み間違えたものだったので、わかりやすくするためにここで繰り返しました。

  1. 移動するレプリカ セットのセカンダリ メンバをシャットダウンします。
  2. そのセカンダリを新しいアドレスにバックアップします
  3. 上記の元の投稿で説明されているように、構成を変更します
于 2013-11-25T12:45:25.527 に答える