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

移行検証子による検証

重要

Migration Verifier は、MongoDBバージョン 4.2 以降の移行検証をサポートします。以前のバージョンでは正しく機能しない可能性があります。

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

他の検証方法とは異なり、移行検証ツールはmongosyncと同時に実行でき、同期中に宛先クラスター上のドキュメントをチェックします。 これにより、アプリケーションの負荷をソースクラスターから宛先クラスターに転送する前に、同期の成功を確認するために必要な時間を短縮できます。

注意

Migration Verifier は DDL 操作をサポートしていません。 Migration Verifier でデータを検証している間は、ソースクラスターで DDL 操作を実行しないでください。

インストール手順と使用制限については、Github を参照してください。

1

mongosync を使用してソースクラスターと宛先クラスターを同期します。詳細については、Mongosync クイックスタート を参照してください。

2

Migration Verifier による検証チェックを開始する前に、 mongosyncが 変更イベント アプリケーション(CEA)フェーズに達するまで待つ必要があります。

mongosyncが CEA フェーズに達したことを確認するには、 /progressコマンドを送信し、 progress.infoフィールドがchange event applicationを返すことを確認します。

curl localhost:27182/api/v1/progress -XGET
{ "progress": { "state":"RUNNING", "canCommit":true, "canWrite":false, "info":"change event application", "lagTimeSeconds":0, "collectionCopy": { "estimatedTotalBytes":694, "estimatedCopiedBytes":694 }, "directionMapping": { "Source":"cluster0: localhost:27017", "Destination":"cluster1: localhost:27018" } }}
3

migration-verifierプロセスを開始します。

migration-verifier --verifyAll \ --srcURI example.net:27020 \ --destURI example.net:27021 \ --metaURI example.net:27017
4

検証チェックを開始するには、cURL を使用してcheckコマンドを移行検証子に送信します。

curl -H "Content-Type: application/json" \ -X POST -d '{}' http://127.0.0.1:27020/api/v1/check
5

同期が完了し、 mongosyncがCOMMITTED状態に達したら、cURL を使用してwritesOffコマンドを移行検証子に送信します。

curl -H "Content-Type: application/json" \ -X POST -d '{}' http://127.0.0.1:27020/api/v1/writesOff
6

結果を表示するには、cURL を使用してprogressコマンドを移行検証子に送信します。

curl -H "Content-Type: application/json" \ -X GET http://127.0.0.1:27020/api/v1/progress
{ "progress": { "phase": "idle", "error": null, "verificationStatus": { "totalTasks": 1, "addedTasks": 0, "processingTasks": 0, "failedTasks": 0, "completedTasks": 0, "metadataMismatchTasks": 0, "recheckTasks": 0 } }}

phaseフィールドがidleの場合、検証チェックは完了します。 failedTasksフィールドが 0 を返す場合、同期は成功しました。