0

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

次の順序で MongoDB インスタンスをシャットダウンします。

  1. セカンダリ
  2. アービタ
  3. 主要な

以下のプロセスを使用して、各サーバーをシャットダウンしました

use admin
db.shutdownServer() 

すべての MongoDB インスタンスは問題なく適切にシャットダウンされました。これまでのところ、すべて問題ありません。

Amazon サーバーのアップグレード後、MongoDB インスタンスを次の順序で開始しました。

  1. アービタ
  2. セカンダリ
  3. 主要な

アービターはアービター モードで、セカンダリはセカンダリ モードですが、驚いたことに、プライマリ マシンは "RECOVERING" モードになりました。

プライマリ マシンが "RECOVERING" になった理由はわかりません。

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

私の基本的な疑問は、「レプリカセットで再構成が行われるまで、プライマリはプライマリでなければならない」ということです。

サーバーのシャットダウン中のステップが抜けていませんか? または、サーバーの再起動中のステップが抜けていますか?

どうすればこの問題を克服できるのでしょうか。Amazon サーバーでは多くのアップグレードが行われているため、MongoDB サーバーを頻繁にシャットダウンする必要があります。

4

1 に答える 1

0

レプリカ セットを開始した後、"SECONDARY" は "PRIMARY" になり、"PRIMARY" はしばらくするとセカンダリ状態になった可能性があります。プライマリ ステータスを「プライマリ」に維持するには、「セカンダリ」よりも優先度を高くする必要があります。

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

ノードを強制的にプライマリにする方法はこちらを確認してください

于 2016-12-29T12:08:18.737 に答える