AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

埋め込み検証子による検証

バージョン1.9の新機能。

mongosync には、サポートされているコレクションの同期を検証するために宛先クラスターで一連のチェックを実行するための埋め込み検証子が含まれています。mongosync は、レプリカセットクラスターでデフォルトで検証子を有効にします。

バージョン 1.10 以降、シャーディングされたクラスターで mongosync はデフォルトで検証子を有効にします。

バージョン1.22 以降、検証子はデフォルトで 変更イベント アプリケーション(CEA) フェーズで操作を開始します。検証付きで実行されるほとんどの移行は、より高速かつ確実に完了します。検証子が CEA フェーズで開始されるため、コレクションのコピー中に /progress エンドポイントは検証子 をphase "not started"として報告します。

注意

mongosync reads using primary read preference, so it preserves document field order from the source cluster's primary node. The embedded verifier also checks documents based on the source cluster’s primary node, but at a different time from when mongosync reads them. Because of this, in rare cases, discrepancies in document field order between the source cluster’s nodes can cause the embedded verifier to fail the migration, even if mongosync copied the documents correctly.

埋め込み検証子は Mongosync 1.8 以前では使用できません。

別の検証方法については、「 データ転送の検証 」を参照してください。

埋め込み検証子には次の制限があります。

  • mongosync は検証子の状態をメモリに保存するため、大幅なメモリ オーバーヘッドが発生する可能性があります。 検証子を実行するには、mongosync は約 10 GBのメモリに加えて、100 万ドキュメントごとに追加の 500 MB を必要とします。

  • 検証子は再開できません。 ユーザーが同期を停止または一時停止した後、何らかの理由で mongosync を再度開始した場合、検証プロセスは最初から再開されます。 これにより検証が移行より大幅に遅れる可能性があります。

  • レプリカセットからシャーディングされたクラスターに移行する場合、シャーディングオプションで指定したソース コレクションの名前を変更することはできません。CEA フェーズ 中にシャーディングオプションに含まれるコレクションの名前を変更すると、検証子はシャーディングの不一致を報告します。

  • 検証を有効にして同期を開始し、buildIndexesnever に設定している場合、mongosync がソースクラスターで TTLコレクションを見つけると、移行は失敗します。 これは、/start エンドポイントを呼び出した後に発生する可能性があり、移行の進行中にユーザーがソースクラスターに TTLインデックスを作成する場合などです。

    宛先クラスターでインデックスを構築せずに TTL コレクションを同期するには、 検証子を無効にして同期を開始する必要があります。

検証子は、次の名前空間はチェックしません。

  • 上限付きコレクション

  • TTL インデックスを持つコレクション(移行中に追加または削除される TTL インデックスを含む)

  • デフォルトの照合を使用しないコレクション

サポートされていないコレクションを確認するには、コレクションを確認するための追加のスクリプトコードを追加します。詳細については、データ転送を確認する を参照してください。

注意

バージョン1.10 以降、検証子は、 より前に発生した DDLイベントからのデータの不整合をチェックします。6.0移行中のソースクラスター。 これは、6.0 より前に 移行は DDL イベントをサポートしていません。

詳細については、「 6.0以前の移行制限 」を参照してください。

1

mongosync プロセスを初期化します。

./bin/mongosync \
--logPath /var/log/mongosync \
--cluster0 "mongodb://clusterAdmin:superSecret@clusterOne01.fancyCorp.com:20020,clusterOne02.fancyCorp.com:20020,clusterOne03.fancyCorp.com:20020" \
--cluster1 "mongodb://clusterAdmin:superSecret@clusterTwo01.fancyCorp.com:20020,clusterTwo02.fancyCorp.com:20020,clusterTwo03.fancyCorp.com:20020"
2

ソースクラスターから宛先クラスターへのデータの同期を開始するには、 /start エンドポイントを使用します。

curl localhost:27182/api/v1/start -XPOST \
--data ' {
"source": "cluster0",
"destination": "cluster1",
} '

出力例:

{"success":true}
3

同期のステータスを調べるには、 /progress エンドポイントを使用します。

curl localhost:27182/api/v1/progress -XGET

出力例:

{
"progress":
{
"state":"RUNNING",
"canCommit":true,
"canWrite":false,
"info":"change event application",
"ceaStage":"steady state",
"lag": {
"overallLagSeconds": 0,
"crudLagSeconds": 0,
"ddlLagSeconds": null
},
"lagTimeSeconds":0,
"collectionCopy":
{
"estimatedTotalBytes":694,
"estimatedCopiedBytes":694
},
"directionMapping":
{
"Source":"cluster0: localhost:27017",
"Destination":"cluster1: localhost:27018"
},
"source":
{
"pingLatencyMs":250
},
"destination":
{
"pingLatencyMs":-1
},
"verification":
{
"source":
{
"estimatedDocumentCount": 42,
"hashedDocumentCount": 42,
"lagTimeSeconds": 2,
"totalCollectionCount": 42,
"scannedCollectionCount": 10,
"phase": "stream hashing"
},
"destination": {
"estimatedDocumentCount": 42,
"hashedDocumentCount": 42,
"lagTimeSeconds": 2,
"totalCollectionCount": 42,
"scannedCollectionCount": 10,
"phase": "stream hashing"
}
}
},
"success": true
}

埋め込み検証子のステータスに関する情報については、verification レスポンスフィールドを調べます。

埋め込み検証子は、宛先クラスターに対して一連のチェックを実行します。 サポートされているすべてのコレクションをチェックして、mongosync がソースクラスターから宛先にドキュメントを正常に転送したことを確認します。

検証子が エラーを発生させると、エラーとなり移行は失敗します。 検証子がエラーを 見つけられない場合 、/progress エンドポイントは canWrite: true を返します。 canWriteフィールドの詳細については、 canWrite と Committed を参照してください。

バージョン 1.15 以降、埋め込み検証子はコレクションメタデータ、インデックス、ビューを検査します。メタデータの検証中に検証演算子が不一致を見つけた場合、不一致のタイプとその発生回数を含むエラーが返されます。

Please contact support to investigate verification issues.

検証には、10 GBのメモリと、移行内の 100 万ドキュメントごとに追加の 500 MB が必要です。

使用可能なメモリが不足している場合、/start エンドポイントはエラーを返します。 この状況が発生した場合、 検証子とともに mongosync を使用するには、まずサーバーのメモリを増やして移行を再開 する必要があります。

サーバーメモリの増加がオプションでない場合は、検証子を無効にしてmongosync を再起動します。