問題タブ [wiredtiger]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
4230 参照

mongodb - MongoDB の「repairDatabase」と「compact」コマンドをレプリカ セットで動作させるにはどうすればよいですか? ダウンタイムもOK

MongoDB スペースの一部を解放する必要があり、コレクションから安全に削除できる 100Gb 以上のドキュメントを特定しました。

したがって、この設定を持つテスト環境からそれらを削除しました。

  • mongodb バージョン 3.0.1
  • シャーディングなし
  • 1 ノード、レプリカなし
  • ワイヤードタイガーエンジン

完了すると、ディスク上のスペースがまだ使用されており、再利用する必要があることがわかりました。この投稿を見つけて助けてくれました:両方を実行した後

100Gb +を解放しました。

次に、レプリカ ノードが 1 つあったため、設定が異なっていたことを忘れて、本番環境に進みました。

  • mongodb バージョン 3.0.1
  • シャーディングなし
  • 1 つのプライマリ ノード、1 つのレプリカ ノード
  • ワイヤードタイガーエンジン

ドキュメントを削除した後、実行します

OKメッセージを受け取りました(しばらくすると、10分+)。走ってみました

このエラーが発生しました:

これは低速のブロッキング操作であるため、アクティブなレプリカ セット プライマリではコンパクトを実行しません。force:true を使用して強制します

だから私たちは走る

OKメッセージを(ほぼ瞬時に)受け取りましたが、スペース上のディスクはまだ使用されており、解放されていません。

repairDatabase我々は、レプリカ セットでandコマンドを実行するための解決策を探しましcompactたが、アドバイスはダウンタイムを回避することに重点を置いており、それが唯一の問題であるかのように見えました。ただし、ダウンタイムをスケジュールすることはできますが、スペースが実際に再利用されないため、コマンドが期待どおりに機能しないという問題があります。

私たちは何を間違えましたか?