シャーディングされたコレクションのデフラグの監視
シャーディングされたコレクションのデフラグをモニターするには、 balancerCollectionStatus
コマンドを使用します。
現在のデフラグ状態と、処理する残りのチャンク数を確認できます。 これにより、デフラグの進行状況が表示されます。
このタスクについて
デフラグでは、次のフェーズを使用してコレクション内のチャンクの数を減らし、パフォーマンスを向上させます。
マージ可能な同じシャード上のチャンクをマージします。
小さいチャンクを他のシャードに移行します。 小さいチャンクとは、
chunkSize
設定の25 % 未満のデータを含むチャンクです。マージ可能な同じシャード上の残りのチャンクをマージします。
このタスクの手順では、 test
という名前のデータベース内のordersShardedCollection
という名前のシャーディングされたコレクションの例を使用します。
手順では、独自のシャーディングされたコレクションとデータベースを使用できます。
このタスクの手順では、 フェーズを監視し、デフラグの進行状況を確認します。
始める前に
シャーディングされたコレクションのデフラグを開始します。 詳しくは、「シャーディングされたコレクションのデフラグの開始 」を参照してください。
手順
出力ドキュメントの確認
前のコマンドは、デフラグ ステータス、現在のフェーズ、および残りのデフラグ作業に関する情報を含むドキュメントを返します。 例:
{ "balancerCompliant": false, "firstComplianceViolation": "defragmentingChunks", "details": { "currentPhase": "moveAndMergeChunks", "progress": { "remainingChunksToProcess": 1 } } }
以下の表は、ドキュメントフィールドの説明です。
フィールド | タイプ | 説明 |
---|---|---|
balancerCompliant | ブール値 | false コレクション チャンクを移動する必要がある場合は、。 それ以外の場合は、 true 。 |
firstComplianceViolation | 文字列 | 名前空間の チャンク を移動またはマージする必要がある理由を示します。 balancerCompliant がfalse の場合にのみ返されます。 |
details | オブジェクト | 現在のデフラグ状態に関する追加情報。 firstComplianceViolation がdefragmentingChunks の場合にのみ返されます。 |
currentPhase | 文字列 | 現在のデフラグ フェーズ:
|
remainingChunksToProcess | 整数 | 現在のフェーズで処理する残りのチャンクの数。 |
返されるドキュメント フィールドの詳細については、バランサー コレクションのステータス出力ドキュメント を参照してください。
デフラグが完了したことを確認する
デフラグが完了すると、コマンドは次のいずれかを返します。
balancerCompliant: true
コレクションのバランスがとれている場合。balancerCompliant: false
コレクションがバランシングされていない場合は、firstComplianceViolation
がdefragmentingChunks
以外のstringに設定されます。
デフラグ完了後のバランスの取れたコレクションの出力例は次のとおりです。
{ chunkSize: 0.2, balancerCompliant: true, ok: 1, '$clusterTime': { clusterTime: Timestamp({ t: 1677543079, i: 1 }), signature: { hash: Binary(Buffer.from("0000000000000000000000000000000000000000", "hex"), 0), keyId: Long("0") } }, operationTime: Timestamp({ t: 1677543079, i: 1 }) }
次のステップ
デフラグがまだ完了していない場合は、停止できます。 詳細については、「シャーディングされたコレクションのデフラグの停止 」を参照してください。
詳細
バランサー コレクションのステータス出力ドキュメントを表示するには、 バランサー コレクションのステータス出力ドキュメントを参照してください。
シャードの状態を出力します。次を参照してください:
db.printShardingStatus()
シャード ステータスの詳細を取得します。次を参照してください。
sh.status()
シャード ステータス コレクション フィールドの表示。「シャーディングされたコレクション 」を参照
アクティブな mongos インスタンスを確認するには、「アクティブな
mongos
インスタンス」を参照してくださいMongoDB Atlas を使用してシャードをモニタリングする( シャーディングされたクラスターの確認) を参照してください