web-dev-qa-db-ja.com

mongodbのレプリカ構成からやり直す

Mongodbでレプリカセットを構成するときに間違えました。私が間違ったことは、両方のノードでrs.initialize()を実行したため、何らかの方法で混乱したことだと思います。よく分かりません。

今、私がやりたいのは最初からやり直すことだけですが、ノードを非初期化する方法を見つけることができませんでした。そこで、アドバイスに従ってlocal * 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

パッケージを削除して再インストールしようとしました(Ubuntuサーバーでこれを行っています)。これは、mongodb.confが消え、initスクリプトが機能しなくなったことを意味します。もちろん、これは簡単に解決できます。

では、どうすれば最初からやり直すことができますか?

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

17
obeq

生成した構成で強制的に再構成した場合、問題は解決しますか?

これは、{{mongo}}シェルの次のように実行できます。

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

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

cfg変数を調整して、ホスト名とポート名を設定する必要がある場合があります。これは、replセットが実行中のノードを見つけることができない場合、can't find self in new replset configエラーがシェルに返されるためです。構成。

26
Andre de Frere

マシンのホスト名が127.0.0.1にマップされていない場合にも、このエラーが発生します。/etc/hostsおよび/または/ etc/hostnameを更新すると、設定なしでrs.initiate()が機能するはずです。

54
rbrc