すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB for MongoDB:ApsaraDB for MongoDBインスタンスのディスク容量の解放

最終更新日:Jun 14, 2024

このトピックでは、ApsaraDB for MongoDBインスタンスのディスク領域を解放する方法について説明します。

背景情報

MongoDB 3.2のデフォルトのストレージエンジンとしてWiredTigerが使用されます。 storage.directoryPerDB:trueパラメーターは、ApsaraDB for MongoDBで定義されています。 各データベースは別々のフォルダとしてディスクに保存され、コレクションはフォルダ内の別々のファイルです。 storage.directoryPerDB:trueパラメーターの詳細については、「storage.directoryPerDB」をご参照ください。

手順

1. 未使用のインデックス、コレクション、またはデータベースが存在するかどうかを確認します。 dropIndexesdrop、またはdropDatabaseコマンドを実行して、未使用のインデックス、コレクション、またはデータベースを削除します。 コマンドが実行されると、ファイルはすぐに削除され、ディスク領域が解放されます。

2. 不要な文書がないか確認してください。 deleteコマンドを実行して、不要なドキュメントを削除します。 MySQLと同様に、削除されたMongoDBドキュメントには削除タグが添付されているだけで、対応するストレージスペースが無料としてマークされ、再利用を待ちます。 したがって、deleteコマンドはすぐにディスク領域を解放することはできません。 ディスク領域をすぐに解放する場合は、次の手順を実行します。

3. コレクションに大量の空き領域が存在するかどうかを確認します。 collStatsコマンドを実行してStorageSizeフィールドとfreeStorageSizeフィールドを比較し、compactコマンドを実行して空き物理領域を再利用します。 詳細については、「ディスクのデフラグメントによるディスク使用率の向上」をご参照ください。

説明
  • 各ノードでcompactコマンドを実行する必要があります。

  • MongoDB 4.4より前のバージョンでは、compactコマンドを実行すると他のすべての操作がブロックされます。 作業は慎重に行ってください。

  • cursor.forEachメソッドを使用してすべてのドキュメントを新しいコレクションにコピーし、コレクションの名前を変更してディスク領域を解放します。 これはオフラインシナリオにのみ適用されます。