2017-11-28 8 views
0

私のクラスタでは運用環境に問題があります。
私たちの監視は、ディスク容量の監視に失敗しました。
そして、私はマスターシャードノードで直接データの一部を削除する必要がありました。
私は、コマンドでのmongodに言う:
db.collection.remove({query})MongoDB - プライマリシャードから直接削除されたドキュメント

私は、これは危険ですが、私はmongos上のmongoシェルを開くことができないので、現時点での私の唯一のオプションであることを知っています。
クラスタはうまく動作しますが、私は自分の行動の実際の影響を知る必要があります。 そして解決する方法。

答えて

1

実際の影響は、削除したデータが失われることです。データベース自体に他の操作上の影響はないはずです。影響を受ける文書が要求されたときには何も返されません。

シャードに直接この削除(mongosを迂回)することは、いかなる手段によっても推奨されないことをご理解ください。一般に、mongosをバイパスすると、クラスタの動作が未定義になる可能性があり、その結果生じる問題は長時間にわたって休止状態に留まる可能性があります。最悪の場合、これは破損したバックアップにつながります。

これは、mongoシェル(またはドライバ)を使用した削除は、ディレクトリに移動してファイルを削除するよりもはるかに好ましいことです。そのアクションは、回復不能なデータベースにつながる可能性があります。

アプリケーションによってより直接的な影響が感じられる場合があります。あなたのアプリケーションが結果を期待し、それが何も受け取らない場合。アプリケーションのすべてのワークフローをテストし、すべてが期待通りに機能していることを確認することをお勧めします。

関連する問題