2016-10-31 12 views
0

3ノードのレプリカセットがあります。mongo 3.0.6を実行しているdev-6という名前のサーバと、3.2を実行しているmongosが2つあるdev 5です。私はdev 6がプライマリであることを望んでいます。そして、開始したレプリカセットに他の2つのノードを追加しました。一度それがプライマリになり、他の2つのノードが同期を開始します。ここでは、私がdev 6を立ち上げてからバックアップしたときのセットアップの様子をスクリーンショットで示します。レプリカセットメンバがプライマリ後に再同期しない

enter image description here

として、意図DEV 6は二次であり、従ってDEV 5:27018.私はなぜDEV 5は何と同期する1が、DEV 5がないと言っているもののについて思ったんだけど:27019をdev 5:27018と同期していると言っています。

ここで、mongoの手順に従ってdev 6をプライマリにするつもりですが、今ここに結果があります。

enter image description here

のDev 6は、主であるが、何イムを理解しようとすると、いくつかの結論にジャンプする前に5つのインスタンスはDEV 6と接続されていない他のDEVに来る方法です、私はDEV 5に対してpingを実行することができていますdev 6とその逆の場合、/etc/hostsのプロファイルには互いにIPアドレスが含まれています。

EDIT:レプリカセットが次のメッセージ"lastHeartbeatMessage" : "could not find member to sync from",で接続できないことに基づいています。これは、rs.config(//current cfg)を実行した場合、またはレプリカセットを追加または削除した場合に修正されたようです。

答えて

1

あなたのレプリカセットはどちらの場合でも健全なようです。すべてのセカンダリは、プライマリの操作ログ(optime/optimeDateは同じです)から最後の操作を適用しました。さらに、lastHeartbeatは、dev 6の時間より少し遅れています。

二次同期するソースを選択すると、それは oplogのノードを選択します自己よりも(等しくない)新しいので、起動後、ときにすべて:lastHeartbeatMessageに関しては言うthis JIRAの問題は、参照してください。ノード はいくつかのデータを持っているので、oplogは同じであるので、セカンダリは 同期ソースを選択できません。書き込み操作後に書き込み、プライマリは より新しいoplog、セカンダリは正常に同期するように選択します。姿を消す。

+0

これを試しても機能しませんでした。私がしたことは、新しいコレクションを作成し、同期を開始しなかったアイテムを挿入することでした。 – TheM00s3

+0

レプリカメンバーが同期していないことをどのように知っていますか?例えば、それらのうちの1つがダウンしていて、最新の書き込みがあったかどうかをチェックするために再度試みたことがありますか(セカンダリでは 'db.collection.find()を使用できます)readPref(" secondary " ) ')? –

+0

これはシャード 'lastHeartbeatMessage"でこの行を見ています: "から同期するメンバーを見つけることができませんでした"、 '。私は、RSの同期がいつ行われるのか、そうでないのかについて、さらに詳しく述べました。 – TheM00s3

0

エラーは「メンバーを同期できませんでした」というエラーが表示されます。通常、私はレプリカセットのメンバーと会話できません。ファイアウォールまたは資格情報の問題が原因です。

私はあなたがサーバーにpingすることができますが、mongoclientを使ってセカンダリの1つからプライマリmongoインスタンスに接続しようとしましたか?適切なユーザー資格情報を必要に応じてと

mongo vpc-dev-app-06:27017

アップグレードの一環としてmongod.confで変更されたことはありますか?

+0

いずれかのサーバーから両方のmongosに接続することができます。興味深いのは、同期を開始してから再同期できないためです。 – TheM00s3

関連する問題