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()が機能しないため、これも機能しません。
生成した構成で強制的に再構成した場合、問題は解決しますか?
これは、{{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
エラーがシェルに返されるためです。構成。
マシンのホスト名が127.0.0.1にマップされていない場合にも、このエラーが発生します。/etc/hostsおよび/または/ etc/hostnameを更新すると、設定なしでrs.initiate()が機能するはずです。