NimoFullCheckは、Amazon DynamoDBデータベースとApsaraDB for MongoDBデータベース間のデータの整合性をチェックするためにAlibaba Cloudによって開発されたツールです。 このトピックでは、Amazon DynamoDBデータベースからApsaraDB for MongoDBデータベースにデータを移行した後、NimoFullCheckを使用してデータの整合性を確認する方法について説明します。
前提条件
データは、NimoShakeを使用して、Amazon DynamoDBデータベースからApsaraDB for MongoDBデータベースに移行されます。 詳細については、「NimoShakeを使用したAmazon DynamoDBデータベースからApsaraDB For MongoDBへのデータの移行」をご参照ください。
背景情報
Amazon DynamoDBデータベースからApsaraDB for MongoDBデータベースにデータを移行した後、NimoFullCheckを使用して2つのデータベース間のデータの整合性を確認できます。
チェックは次の2つのステップで構成されます。
簡単なチェック: Amazon Dynamoデータベースのテーブルのアイテム数が、ApsaraDB for MongoDBデータベースの対応するコレクションのドキュメント数と等しいかどうかを確認します。 番号が異なる場合、チェックは終了し、エラーメッセージが返されます。 返されたエラーメッセージに基づいて問題を特定できます。
正確なチェック: 簡単なチェックに合格した後、2つのデータベースのデータを正確に比較します。 NimoFullCheckは、Amazon Dynamoデータベースからデータをフェッチし、データを解析します。 データに一意のインデックスが含まれている場合、NimoFullCheckは、一意のインデックスに基づいて、データをターゲットApsaraDB for MongoDBデータベースのデータと比較します。 データに一意のインデックスが含まれていない場合、NimoFullCheckは2つのデータベースのすべてのデータエントリを1つずつ比較します。
使用上の注意
NimoFullCheckは、完全データ移行の整合性チェックのみをサポートします。 増分データ同期後にデータの整合性をチェックすると、結果に一貫性がありません。
NimoFullCheckは、ApsaraDB for MongoDBデータベースのデータをチェックのベースラインとして使用します。 つまり、NimoFullCheckは、Amazon DynamoDBデータベースのデータがApsaraDB for MongoDBデータベースのデータと一致しているかどうかを確認します。
手順
次の手順では、UbuntuオペレーティングシステムでNimoFullCheckを実行することを前提としています。
次のコマンドを実行して、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ディレクトリに移動します。次のコマンドを実行して、必要なパラメーターでNimoFullCheckを起動します。
. /nimo-full-check.linux -- <パラメータ1 >=< 値1> -- <パラメータ2 >=< 値2>NimoFullCheckのパラメーターを次の表に示します。

パラメーター
説明
例
id
移行タスクのID。 NimoShakeを使用してデータを移行するときに指定された移行タスクのIDに値を設定します。 詳細については、「NimoShakeを使用したAmazon DynamoDBデータベースからApsaraDB For MongoDBへのデータの移行」をご参照ください。
-- 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秒あたりに実行された回数。 デフォルト値: 10000。-- qpsFull=10000qpsFullBatchNum
1秒あたりにフェッチするデータエントリの数。 デフォルト値: 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=16サンプル
各コレクションでチェックするドキュメントの最大数。 値0は、コレクション内のすべてのドキュメントがチェックされていることを示します。 デフォルト値は 1000 です。 値1000は、コレクション内で最大1,000のドキュメントをチェックできることを示します。
-- sample=1000filterCollectionWhite
整合性チェック用のコレクションホワイトリスト。 チェックする必要があるコレクションの名前に値を設定します。 例:
-- filterCollectionWhite = c1;c2。コレクションc1とc2のみがチェックされていることを示します。-- filterCollectionWhite=ci;c2filterCollectionBlack
整合性チェック用のコレクションブラックリスト。 チェックする必要のないコレクションの名前に値を設定します。 例:
-- filterCollectionBlack = c1;c2。c1とc2以外のすべてのコレクションがチェックされていることを示します。-- filterCollectionBlack=ci;c2convertType
Dynamoプロトコルを使用するソースデータが移行中に変換されたかどうかを指定します。 有効な値:
raw: データは変換されずに宛先データベースに書き込まれました。
change: データは、ターゲットデータベースに書き込まれる前に変換されました。 たとえば、
{"hello":"1"}は{"hello": 1}に変換されました。
説明パラメーターの値は、移行用に指定された値と同じである必要があります。 値が異なる場合、チェックは失敗します。
-- convertType=changeversion
NimoFullCheckのバージョン番号を表示します。
説明パラメーターの値を指定する必要はありません。 バージョン番号を表示する必要がある場合は、コマンドに
-- versionパラメーターを追加します。-- versionhelp
NimoFullCheckでサポートされているすべてのパラメーターを表示します。
-- ヘルプ説明チェックが成功した場合、メッセージの
完全なチェックが完了しました!が返されます。 エラーによりチェックが終了した場合、NimoFullCheckは終了し、エラーメッセージが返されます。 返されたエラーメッセージに基づいて問題を見つけることができます。