Amazon DynamoDB から ApsaraDB for MongoDB へのデータ移行が完了した後は、すべてのレコードが正しく転送されたことを検証する必要があります。NimoFullCheck は、Alibaba Cloud が提供するツールであり、2 つのデータベース間で 2 段階の整合性チェックを自動実行することで、この検証を支援します。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
NimoShake を使用して、Amazon DynamoDB から ApsaraDB for MongoDB への完全なデータ移行を完了済みであること。詳細については、「NimoShake を使用した Amazon DynamoDB データベースから ApsaraDB for MongoDB への移行」をご参照ください。
制限事項
NimoFullCheck は、完全なデータ移行に対する整合性チェックのみをサポートしています。増分同期後にチェックを実行すると、不正確な結果が得られる場合があります。
NimoFullCheck の仕組み
NimoFullCheck では、ApsaraDB for MongoDB をベースラインとして使用し、Amazon DynamoDB のデータがこれと一致しているかを検証します。チェックは、以下の 2 つの順次実行されるフェーズで実行されます。
簡易チェック:各 DynamoDB テーブル内のアイテム数と、対応する ApsaraDB for MongoDB コレクション内のドキュメント数を比較します。件数が一致しない場合、チェックは中止され、エラーが返されます。
精密チェック:簡易チェックが正常に完了した後に実行されます。NimoFullCheck は Amazon DynamoDB からデータをフェッチ・解析し、ApsaraDB for MongoDB と比較します。
データに一意なインデックスが存在する場合、NimoFullCheck はそのインデックスに基づいてレコードを比較します。
データに一意なインデックスが存在しない場合、NimoFullCheck はすべてのエントリを 1 件ずつ比較します。この方法は処理速度が遅くなります。
NimoFullCheck の実行
NimoShake パッケージをダウンロードします。
説明 NimoShake のリリースページから最新版の NimoShake パッケージをダウンロードしてください。wget https://github.com/alibaba/NimoShake/releases/download/release-v1.0.0-20191015/nimo.tar.gzパッケージを展開します。
tar zxvf nimo.tar.gznimoディレクトリに移動します。cd nimo必要なパラメーターを指定して NimoFullCheck を実行します。
./nimo-full-check.linux --<パラメーター 1>=<値 1> --<パラメーター 2>=<値 2>以下の表に、各パラメーターの説明を示します。

パラメーター 説明 例 id移行タスクの ID。NimoShake 実行時に指定したタスク ID と同じ値を設定してください。詳細については、「NimoShake を使用した Amazon DynamoDB データベースから ApsaraDB for MongoDB への移行」をご参照ください。 --id=nimo-shakelogLevelログレベル。有効な値: none、error、warn、info、debug。デフォルト値:info。--logLevel=infosourceAccessKeyIDソース Amazon DynamoDB データベースへの接続に使用する AccessKey ID。 --sourceAccessKeyID=xxxxxxxxxxsourceSecretAccessKeyソース Amazon DynamoDB データベースへの接続に使用するシークレットアクセスキー。 --sourceSecretAccessKey=xxxxxxxxxxsourceSessionToken(任意)ソース Amazon DynamoDB データベースへのアクセスに使用するセッショントークン。 --sourceSessionToken=xxxxxxxxxxsourceRegion(任意)ソース Amazon DynamoDB データベースが配置されているリージョン。 --sourceRegion=us-east-2qpsFullScanコマンドをテーブルに対して 1 秒間に実行する回数。デフォルト値:10000。--qpsFull=10000qpsFullBatchNum1 秒間にフェッチするデータエントリ数。デフォルト値: 128。--qpsFullBatchNum=128targetAddress送信先 ApsaraDB for MongoDB データベースのエンドポイント。エンドポイントの確認方法については、「レプリカセットインスタンスへの接続」または「シャードクラスターインスタンスへの接続」をご参照ください。 --targetAddress=mongodb://username:password@s-*****-pub.mongodb.rds.aliyuncs.com:3717diffOutputFile不整合データを保存するファイル名。デフォルト値: nimo-full-check-diff。--diffOutputFile=nimo-full-check-diffparallel整合性チェックに使用するスレッド数。デフォルト値: 16。--parallel=16sampleコレクションごとにチェックするドキュメントの最大数。すべてのドキュメントをチェックする場合は 0を指定します。デフォルト値:1000。--sample=1000filterCollectionWhiteチェック対象のコレクション名のセミコロン区切りの許可リスト。リストに記載されたコレクションのみがチェックされます。 --filterCollectionWhite=ci;c2filterCollectionBlackチェック対象から除外するコレクション名のセミコロン区切りの拒否リスト。リストに記載されていないコレクションがすべてチェックされます。 --filterCollectionBlack=ci;c2convertType移行中にソースデータが変換されたかどうかを指定します。有効な値: raw(変換なし)、change(変換あり — 例:{"hello":"1"}→{"hello": 1})。この値は、移行時に設定した値と一致させる必要があります。一致しない場合、チェックは失敗します。--convertType=changeversionNimoFullCheck のバージョン番号を表示します。値は不要です。 --versionhelpサポートされるすべてのパラメーターを表示します。 --help
結果の解釈
成功:チェックがエラーなく完了すると、NimoFullCheck は
full check done!を出力します。失敗:NimoFullCheck は終了し、エラーメッセージを返します。エラーメッセージを確認して、問題の原因を特定してください。