NimoFullCheck は、Alibaba Cloud が開発した、ソースの Amazon DynamoDB と送信先の ApsaraDB for MongoDB との間のデータ整合性を検証するためのツールです。このトピックでは、NimoFullCheck を使用してデータ整合性を検証する方法について説明します。
前提条件
NimoShake を使用して、Amazon DynamoDB から ApsaraDB for MongoDB にデータを移行済みであること。詳細については、「NimoShake を使用した Amazon DynamoDB から Alibaba Cloud への移行」をご参照ください。
背景情報
NimoFullCheck は、NimoShake による移行後に、ソースの Amazon DynamoDB と送信先の ApsaraDB for MongoDB との間のデータ整合性を検証するために使用されます。
検証プロセスは、次の 2 つの部分で構成されます。
-
簡易チェック:Amazon DynamoDB テーブルのアイテム数と ApsaraDB for MongoDB コレクションのドキュメント数を比較します。数が一致しない場合、プロセスは終了し、エラーを報告します。
-
詳細チェック:簡易チェックに合格すると、詳細チェックが開始されます。ツールはソースからデータをフェッチして解析します。一意なインデックスが存在する場合、ツールはそれを使用して ApsaraDB for MongoDB とのデータ整合性を検証します。一意なインデックスが見つからない場合、ツールはソースと送信先のすべてのデータアイテムを 1 つずつ比較するため、処理が遅くなる可能性があります。
注意事項
-
NimoFullCheck は、完全なデータ移行の整合性検証のみをサポートします。増分データ同期のフェーズで検証を実行すると、ツールはデータが不整合であると報告します。
-
NimoFullCheck は一方向の検証を実行します。送信先の ApsaraDB for MongoDB のデータをベースラインとして使用し、ソースの Amazon DynamoDB のデータを検証します。
操作手順
以下の手順では、Ubuntu 上で NimoFullCheck を使用して Amazon DynamoDB と ApsaraDB for MongoDB 間のデータ整合性を検証する方法を示します。
-
次のコマンドを実行して、NimoShake パッケージをダウンロードします。
wget https://github.com/alibaba/NimoShake/releases/download/release-v1.0.0-20191015/nimo.tar.gz説明最新バージョンの NimoShake パッケージをダウンロードすることを推奨します。ダウンロードリンクについては、「NimoShake」をご参照ください。
-
次のコマンドを実行して、NimoShake パッケージを解凍します。
tar zxvf nimo.tar.gz -
パッケージを解凍した後、
cd nimoコマンドを実行して nimo ディレクトリに移動します。 -
次のコマンドに必要なパラメーターを指定して実行し、検証を開始します。
./nimo-full-check.linux --<parameter>=<value> --<parameter>=<value>次の表にパラメーターを示します。
パラメーター
説明
例
id
移行タスクの ID です。この ID は、NimoShake の移行タスクで指定された ID と一致する必要があります。詳細については、「NimoShake を使用した Amazon DynamoDB から Alibaba Cloud への移行」をご参照ください。
--id=nimo-shakelogLevel
ログレベルです。有効な値:
-
none:ログは出力されません。
-
error:エラーレベルの情報を含むログ。
-
warn:警告レベルの情報を含むログ。
-
info:現在のシステムステータスを反映するログ。
-
debug:デバッグ情報を含むログ。
デフォルト値:info。
--logLevel=infosourceAccessKeyID
ソース Amazon DynamoDB のアクセスキー ID です。
--sourceAccessKeyID=xxxxxxxxxxsourceSecretAccessKey
ソース Amazon DynamoDB のシークレットアクセスキーです。
--sourceSecretAccessKey=xxxxxxxxxxsourceSessionToken
ソース Amazon DynamoDB のセッショントークンです。このパラメーターはオプションです。
--sourceSessionToken=xxxxxxxxxxsourceRegion
ソース Amazon DynamoDB インスタンスのリージョンです。このパラメーターはオプションです。
--sourceRegion=us-east-2qpsFull
テーブルに対する
Scanコマンドの頻度です。1 秒あたりにScanを呼び出すことができる最大回数を指定します。デフォルト値:10000。--qpsFull=10000qpsFullBatchNum
各 Scan 操作でフェッチするデータエントリの数です。デフォルト:128。
--qpsFullBatchNum=128targetAddress
送信先 ApsaraDB for MongoDB インスタンスのエンドポイントです。エンドポイントを確認するには、「レプリカセットインスタンスへの接続」または「シャードクラスターインスタンスへの接続」をご参照ください。
例:mongodb://username:password@s-*****-pub.mongodb.rds.aliyuncs.com:3717
--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で、比較のためにテーブルから最大 1,000 ドキュメントがサンプリングされることを意味します。--sample=1000filterCollectionWhite
検証するコレクションのホワイトリストです。指定されたコレクションのみが検証されます。たとえば、
--filterCollectionWhite=c1;c2はコレクション c1 と c2 のみを検証します。--filterCollectionWhite=c1;c2filterCollectionBlack
検証から除外するコレクションのブラックリストです。たとえば、
--filterCollectionBlack=c1;c2は、c1 と c2 を除くすべてのコレクションが検証されることを示します。--filterCollectionBlack=c1;c2convertType
移行フェーズで DynamoDB のデータ型が変換されたかどうかを指定します。有効な値:
-
raw:データは変換されずに直接書き込まれます。
-
change:データは変換されます。たとえば、
{"hello":"1"}は{"hello": 1}に変換されます。
説明この値は、移行中に使用された convertType の設定と一致する必要があります。不一致の場合、検証は失敗します。
--convertType=changeversion
NimoFullCheck の現在のバージョン番号を出力します。
説明このパラメーターは値を取らないフラグです。
--versionフラグを含めると、ツールはバージョン番号を出力して終了します。--versionhelp
NimoFullCheck でサポートされているすべてのパラメーターを表示します。
--help説明検証が成功すると、
full check done!というメッセージが表示されます。致命的なエラーが発生した場合、プログラムは終了し、エラーメッセージを出力します。 -