2012-11-28 15 views
16

mongodbでレプリカセットを設定するときに間違いました。私が間違っていたのは、両方のノードでrs.initialize()を行ったことで、何らかの方法で混乱させてしまったと思います。よく分かりません。mongodbのレプリカ設定からやり直す

ここでやってみたいのはやり直しですが、ノードを初期化解除する方法が見つかりませんでした。だから私はローカルの* dbファイルを削除するためのアドバイスに従って、設定をリセットしました。私はそれをして、今は何も働かない。

> rs.initiate() 
{ 
    "info2" : "no configuration explicitly specified -- making one", 
    "me" : "0.0.0.0:27017", 
    "errmsg" : "couldn't initiate : can't find self in the replset config", 
    "ok" : 0 
} 
> rs.conf() 
null 

私はちょうど私のmongodb.confが消えたことを意味し、私のinitスクリプトは動作を停止したパッケージを(私はUbuntuのサーバ上でこれをやってる)削除して再インストールしてみました。これはもちろん簡単に解決できます。

どうすればいいですか?

注:私はthis answerを見ましたが、rs.conf()が機能しないため、これも機能しません。

答えて

25

生成した設定で強制的に再設定すると、問題は解決しますか?

あなたは{{モンゴ}}シェルからのフォローに似てこれを行うことができます:

> cfg = { 
...  "_id" : "rs0", 
...  "version" : 1, 
...  "members" : [ 
...   { 
...    "_id" : 0, 
...    "host" : "0.0.0.0:27017" 
...   } 
...  ] 
... } 

>rs.reconfig(cfg, {force:true}) 

can't find self in new replset configエラーが返されますようあなたは、あなたのホスト名とポート名を持つようにチューニングするcfg変数が必要な場合がありますreplセットが実行中のノードをconfigで見つけることができない場合は、シェルに追加します。

+5

私は 'rs.reconfig'の代わりに' rs.initiate(cfg) 'を使わなければなりませんでした。 – obeq

+2

私のために働いた、私は ''ホスト ":" 127.0.0.1:27017 "と' rs.initiate'を使用しなければならなかった。 mongoサーバ '2.0.4-1ubuntu2.1'がubuntuで正確 – danza

+0

私もrs.initiate(cfg)を使用しなければならなかった – machunter

54

また、マシンのホスト名が127.0.0.1に戻されない場合にもこのエラーが発生します。/etc/hostsや/ etc/hostname、rs.initiate()を更新しても問題ないでしょう。

+2

私の問題を解決しました。クラウドインスタンスでホスト名を変更する場合は、新しいホスト名を/ etc/hostsに追加してください。 –

+1

また、割り当てられたIPアドレスが/ etc/mongodのbind_ip設定にもバインドされていることを確認して、この問題を修正しました。 confファイル。 127.0.0.1にバインドされていることは、必ずしも十分ではありません。 – Felby

+2

似たようなことをしなければならなかった:LAN IPが解決したが、127.0.0.1ではなく、 'bind_ip = 10.10.1.1,127.0.0.1'の両方を追加した。 –

9

bind_ip/etc/mongod.confにコメントアウトすると、正しい結果が得られ、rs.initiate()コマンドを再発行してレプリカをセットアップまたは再構成できるようになります。

関連する問題