2016-12-28 10 views
0

3つの異なるAmazonサーバーインスタンスで3ノードレプリカセット(1プライマリ、1セカンダリ、1アービタ)があります。彼らがホストされているサーバはメモリアップグレードが必要でしたので、MongoDBインスタンスもシャットダウンする必要がありました。再起動後にPRIMARYがRECOVERINGに移行しています

は、私がこの順でMongoDBのインスタンスをシャットダウンします。

  1. アービタ
  2. プライマリIは、以下の各サーバー

    use admin 
    db.shutdownServer() 
    
    をシャットダウンするためのプロセスを使用

すべてMong oDBインスタンスは問題なく正常にシャットダウンされました。これまでのところすべてが問題ありません。

アマゾンサーバーのアップグレード後、私は次の順序でのMongoDBインスタンスを開始しました:

  1. アービタ
  2. プライマリ

は、アービタがアービタモードで、二次的なものであるがセカンダリモードでは、私の驚いたことに、プライマリマシンは "回復"モードになりました。

理由がわからないので、なぜプライマリマシンが「回復」に行ったのですか?

私はログを調べました。それは同期するメンバを示していません...そのようなもの

私の基本的な疑問は "レプリカセットに再構成が起こるまでPRIMARYがPRIMARYになければなりません"です。

サーバーのシャットダウン中に手順がありません。または、サーバーの再起動中に一歩も欠けていますか?

私はこの問題をどのように克服することができるように、これについていくつか光を当ててください。 Amazonサーバーでは多くのアップグレードが行われているので、頻繁にMongoDBサーバーをシャットダウンする必要があります。

+0

"RECOVERING"には永遠に滞在しますか? – gzc

+0

以前にプライマリだったサーバーのログに何が表示されますか?それは重要だと思います。再起動後にプライマリが復旧しました。 –

答えて

0

レプリカセットを開始した後は、「セカンダリ」が「プライマリ」になり、「プライマリ」はおそらく短い時間の後にセカンダリ状態になっていた可能性があります。プライマリステータスを "PRIMARY"に保つには、 "SECONDARY"のプライオリティよりも高いプライオリティを与える必要があります。

rs.conf()コマンドで確認してください。

Check here how to force node to be primary

+0

それで、私はそれをプライマリに戻すことはできません –

+0

それで、それは回復して滞在しました.. Strange。完全な初期同期を行うそのノードをシャットダウンし、データディレクトリからすべてのファイルを削除して、再びノードを開始すると、他のノードから再同期します。 (もちろん、それ以前にあなたは状態を回復するために理由を述べるログファイルをチェックすることができます) – JJussi

関連する問題