0

誰かが「moveChunk.from」と「moveChunk.to」のすべての手順を明確にすることができますか? これらのステップで、どの操作が実行されるかを知りたいです (ステップの値は、ステップにかかった時間 ms を表していると思います)。これは、チャンクの移行中に発生する最も遅いステップを導き出すのに役立ちます。

{
    "_id" : "bdvlpabhishekk-2013-07-20T17:46:28-51eaccf40c5c5c12e0e451d5",
    "server" : "bdvlpabhishekk",
    "clientAddr" : "127.0.0.1:50933",
    "time" : ISODate("2013-07-20T17:46:28.589Z"),
    "what" : "moveChunk.from",
    "ns" : "test.test",
    "details" : {
        "min" : {
            "key1" : 151110
        },
        "max" : {
            "key1" : 171315
        },
        "step1 of 6" : 0,
        "step2 of 6" : 1,
        "step3 of 6" : 60,
        "step4 of 6" : 2067,
        "step5 of 6" : 7,
        "step6 of 6" : 0
    }
}


{
    "_id" : "bdvlpabhishekk-2013-07-20T17:46:31-51eaccf7d6a98a5663942b06",
    "server" : "bdvlpabhishekk",
    "clientAddr" : ":27017",
    "time" : ISODate("2013-07-20T17:46:31.671Z"),
    "what" : "moveChunk.to",
    "ns" : "test.test",
    "details" : {
        "min" : {
            "key1" : 171315
        },
        "max" : {
            "key1" : 192199
        },
        "step1 of 5" : 0,
        "step2 of 5" : 0,
        "step3 of 5" : 1712,
        "step4 of 5" : 0,
        "step5 of 5" : 344
    }
}
4

2 に答える 2

1

これらの手順はすべて、オンラインで無料で利用できる「M202: MONGODB ADVANCED DEPLOYMENT AND OPERATIONS」コースで説明されています (投稿された URL のスタックオーバーフローの制限のため、このリンクをここに投稿することはできません。グーグルのコース)

このコースの関連ビデオは、「移行の概要の解剖学」と「移行の詳細な分析の解剖学」です

説明は次のとおりです。

すべての時間値はミリ秒単位です。F が「moveChunk.from」で、T が「moveChunk.to」であるとしましょう。ステップは F1..F6 および T1..T5 です。ステップは、F1、F2、F3、F4 の順に実行されます: {T1、T2、T3、T4、T5}、F5、F6。ステップ F4 には {T1..T5} が含まれ、F4 のタイミングは T1..T5 の合計です (ただし、完全に一致するものはありません)。

  1. F1 - mongos は「moveChunk」コマンドを F (移行元のシャードのプライマリ) に送信します
  2. F2 - コマンドの健全性チェック
  3. F3 - F はコマンドを T に送信します (このチャンクを私から読み取ります)
  4. F4,T1..T3 - 転送が開始され、T はサニティ チェック、インデックス チェックなどを実行します。
  5. F4,T4 - 後続の操作に追いつきます (転送中にチャンクへの挿入があった場合は、F から T に更新を送信します)
  6. F4、T5 - 定常状態 (変更は 1 次ログに書き込まれます)
  7. F5 - 新しいチャンクの場所に関する構成サーバーの変更をコミットしようとしています (重要なセクション)
  8. F6 - クリーンアップ
于 2015-06-19T01:48:57.360 に答える
0

すべてのチャンクの移行では、次の手順を使用します。

  1. バランサー プロセスは、moveChunk コマンドをソース シャードに送信します。
  2. ソースは、内部の moveChunk コマンドで移動を開始します。移行プロセス中、チャンクへの操作はソース シャードにルーティングされます。ソース シャードは、チャンクの着信書き込み操作を担当します。
  3. 宛先シャードはチャンク内のドキュメントのリクエストを開始し、データのコピーの受信を開始します。
  4. チャンク内の最終ドキュメントを受信した後、宛先シャードは同期プロセスを開始して、移行中に発生した移行済みドキュメントへの変更が含まれていることを確認します。
  5. 完全に同期されると、宛先シャードは構成データベースに接続し、クラスターのメタデータをチャンクの新しい場所で更新します。
  6. 宛先シャードがメタデータの更新を完了した後、チャンクに開いているカーソルがなくなると、ソース シャードはドキュメントのコピーを削除します。

これから取られる

于 2013-08-20T11:04:50.270 に答える