1

多数のデータベースを含む 8 つのシャードで構成される mongodb クラスターがあります。大きなコレクションをシャーディングし、他のコレクションはシャーディングせずに残しました。過去に 2.0 を実行していたとき、2 つのシャードを削除したため、これら 2 つのシャードはドレイン状態になりました。これらのシャードにはシャード化されていないコレクションがあったため、ドレインは決して終了できませんでした。

クラスターを 2.2 にアップグレードしたときに、これら 2 つのシャード (消耗しているシャード) を取り除こうとしました。だから私はすべてのプライマリを他のシャードに移動し、シャードを削除しようとしました、私はこれを得ました:

mongos> db.runCommand( { removeShard: "shard0000" } )
{ "ok" : 0, "errmsg" : "Can't have more than one draining shard at a time" }

現在、シャードを削除できません。誰かが何が起こっているのか、それを修正する方法を知っていることを願っています。

前もって感謝します。

4

2 に答える 2

1

削除操作を完了するには、ステータスを確認し、チャンクの移動が完了した場合は、削除コマンドをもう一度実行します。これにより、remove コマンドが「ファイナライズ」され、別の remove shard コマンドを実行できるようになります。

于 2013-12-31T23:12:10.377 に答える
1

後でこの状況を取り除く方法を見つけることができるので、この質問に自分で答えるのが良いと思いました. 私がしたことは次のとおりです。まず、プライマリをシャードから別のシャードに移動しました。すべてのプライマリが別のシャードに移動されたら、config.shard コレクションからエントリを手動で削除しました。そして、ついにmongosを再起動しました。複数の mongo がある場合は、すべての mongo を再起動します。

于 2013-06-05T06:06:15.113 に答える