Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/
MongoDB Mongosync
/

データ転送を確認する

アプリケーションの負荷をソースクラスターから宛先クラスターに切り替える前に、移行が成功したことを確認する必要があります。

1.9 以降、mongosync は、ソースクラスターと宛先クラスターに対して一連の検証チェックを実行して同期が成功したことを確認できる埋め込み検証子を提供します。

同期ごとにデータを検証する必要があります。 これは、アプリケーション負荷をソースクラスターから宛先クラスターに移動する予定の場合に重要です。

検証方法
説明

埋め込み検証子

1.9 以降、mongosync には埋め込み検証子が含まれています。これはソースクラスターと宛先クラスターに対して一連の検証チェックを実行し、移行が成功したことを確認します。 これは、要件を満たす配置に推奨される検証方法です。

mongosync プロセスが開始されると、埋め込み検証子に関する 条件ではないユーザーへのプロンプトが表示されます。 mongosync--acceptDisclaimer資格ドを受け入れる必要があります。すでに読み取って確認している場合は、検証子を使用するために オプションを使用して を起動します。

検証子は移行のすべての要素をチェックするわけではありません。

  • サポートされていない名前空間とシャーディングされたクラスターの同期を確認するには、別の検証方法を使用します。

  • インデックスの同期を確認するには、 インデックスの比較 メソッドを使用します。

  • メタデータの同期を確認するには、 メタデータ比較 メソッドを使用します。

最も基本的な検証方法は、ソースクラスターの同期された各コレクション内のドキュメント数と宛先クラスターの数を比較することです。

この方法でデータ転送を確認する前に、mongosyncCOMMITTED 状態である必要があります。

このメソッドは、挿入専用のワークロードを持つクラスターに対して実行された場合にのみ、同期の成功を検証します。

ソースクラスターから宛先クラスターに同期されたコレクションの MD5 ハッシュを比較することで、同期を確認できます。

この方法でデータ転送を確認する前に、mongosyncCOMMITTED 状態である必要があります。

ハッシュの比較により、宛先クラスターがソースからのすべての変更を受け取ったことが保証されますが、 dbHashコマンドはクラスターをロックし、完了するまで追加の書込みを防ぎます。

シャーディングされたクラスターではハッシュ比較はできません。また、ドキュメントフィールドの順序はさまざまであるため、 MongoDB 4.4 またはそれ以前のリリースを使用するスタンドアロンサーバーとレプリカセットでは動作しません。

ドキュメントの比較

ソースクラスターと宛先クラスターのドキュメントを比較することで、同期を確認できます。

ソースクラスターのコレクションをクエリし、宛先クラスターに同じ値を持つ正しいドキュメント、インデックス、コレクション、メタデータ、ビューが存在することを確認するスクリプトを記述します。

この方法でデータ転送を確認する前に、mongosyncCOMMITTED 状態である必要があります。

インデックスの比較

インデックスの転送を確認するには、ソースクラスターと宛先クラスターでdb.collection.getIndexes() メソッドを実行し、結果を比較します。

メタデータの比較

メタデータの転送を確認するには、ソースクラスターと宛先クラスターでdb.getCollectionInfos() メソッドを実行し、結果を比較します。

シャードキーの比較

同期されたコレクションへのシャードキーの転送を確認するには、config.collectionsコレクションに対してクエリを実行して、_id がターゲットコレクションの名前空間であるドキュメントを見つけます。 ソースクラスターと宛先クラスターでこのドキュメントの key 値を比較します。

例、pets recordsデータベース内の という名前のコレクションでは、 の次のクエリを使用してシャードキーを確認できます。mongosh

db.getSiblingDB("config").collections.find({ _id : "records.pets" })
{
"_id" : "records.pets",
"lastmod" : ISODate("2021-07-21T15:48:15.193Z"),
"timestamp": Timestamp(1626882495, 1),
"key" : {
"_id" : 1
},
"unique" : false,
"lastmodEpoch" : ObjectId("5078407bd58b175c5c225fdc"),
"uuid" : UUID("f8669e52-5c1b-4ea2-bbdc-a00189b341da")
}

Migration Verifier は、ソースクラスターと宛先クラスターに接続し、ドキュメント、ビュー、インデックスを比較して同期が成功したことを確認する一連の検証チェックを実行します。

データを検証するために使用する具体的な方法は、アプリケーションのワークロードとデータの複雑さによって異なります。

戻る

テレメトリー

項目一覧