17

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() が機能しないため、これも機能しません。

4

3 に答える 3

26

生成した構成で再構成を強制すると、問題は解決しますか?

{{mongo}} シェルから次のようにこれを行うことができます。

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

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

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

于 2012-11-29T01:53:46.003 に答える
9

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

于 2014-05-05T18:05:42.403 に答える