Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

シャーディングされたコレクションのデフラグの監視

項目一覧

  • このタスクについて
  • 始める前に
  • 手順
  • 次のステップ
  • 詳細

シャーディングされたコレクションのデフラグをモニターするには、 balancerCollectionStatusコマンドを使用します。

現在のデフラグ状態と、処理する残りのチャンク数を確認できます。 これにより、デフラグの進行状況が表示されます。

デフラグでは、次のフェーズを使用してコレクション内のチャンクの数を減らし、パフォーマンスを向上させます。

  1. マージ可能な同じシャード上のチャンクをマージします。

  2. 小さいチャンクを他のシャードに移行します。 小さいチャンクとは、 chunkSize設定の25 % 未満のデータを含むチャンクです。

  3. マージ可能な同じシャード上の残りのチャンクをマージします。

このタスクの手順では、 testという名前のデータベース内のordersShardedCollectionという名前のシャーディングされたコレクションの例を使用します。

手順では、独自のシャーディングされたコレクションとデータベースを使用できます。

このタスクの手順では、 フェーズを監視し、デフラグの進行状況を確認します。

1

実行:

db.adminCommand(
{
balancerCollectionStatus: "test.ordersShardedCollection"
}
)
2

前のコマンドは、デフラグ ステータス、現在のフェーズ、および残りのデフラグ作業に関する情報を含むドキュメントを返します。 例:

{
"balancerCompliant": false,
"firstComplianceViolation": "defragmentingChunks",
"details": {
"currentPhase": "moveAndMergeChunks",
"progress": { "remainingChunksToProcess": 1 }
}
}

以下の表は、ドキュメントフィールドの説明です。

フィールド
タイプ
説明
balancerCompliant
ブール値
false コレクション チャンクを移動する必要がある場合は、。 それ以外の場合は、 true
firstComplianceViolation
文字列
名前空間の チャンク を移動またはマージする必要がある理由を示します。 balancerCompliantfalseの場合にのみ返されます。
details
オブジェクト
現在のデフラグ状態に関する追加情報。 firstComplianceViolationdefragmentingChunksの場合にのみ返されます。
currentPhase
文字列

現在のデフラグ フェーズ:

  • フェーズ 1 の場合、 currentPhasemergeAndMeasureChunksです。

    フェーズ 1 では、同じシャード上にある連続する チャンク がマージされ、それらのチャンクのデータ サイズが計算されます。

  • フェーズ 2 の場合、 currentPhasemoveAndMergeChunksです。

    フェーズ 1 が完了すると、小さなチャンクがいくつか残っている場合があります。 フェーズ 2 では、これらの小さなチャンクを他のシャードに移行し、それらのシャード上のチャンクをマージします。

remainingChunksToProcess
整数
現在のフェーズで処理する残りのチャンクの数。

返されるドキュメント フィールドの詳細については、バランサー コレクションのステータス出力ドキュメント を参照してください。

3

デフラグが完了すると、コマンドは次のいずれかを返します。

  • balancerCompliant: true コレクションのバランスがとれている場合。

  • balancerCompliant: false コレクションがバランシングされていない場合は、firstComplianceViolationdefragmentingChunks以外の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 を使用してシャードをモニタリングする( シャーディングされたクラスターの確認) を参照してください

戻る

始める