ソースクラスターから宛先クラスターに同期されたコレクションの MD5dbHash ハッシュを比較することで、同期を確認できます。ハッシュの比較により、宛先クラスターがソースからのすべての変更を受け取ったことが保証されますが、 コマンドはクラスターをロックし、完了するまで追加の書込みを防ぎます。このプロセスは、ドキュメント数を使用する検証よりもはるかに遅くなる可能性があります。
このタスクについて
シャーディングされたクラスターではハッシュ比較はできません。
シャーディングされたクラスターや MongoDB の古いリリースを同期する必要がある場合、またはアプリケーション ワークロードでロックが受け入れられない場合は、別の検証方法を使用します。
dbHashコマンドは現在のデータベース内のコレクションのみをハッシュし、collections フィールドは必要最低限のコレクション名を受け入れます。コレクション名( など)にデータベース名を含めると、accounts.us_accounts dbHashは一致するコレクションを見つけず、両方のクラスターの空の入力のハッシュを返します。複数のデータベースのコレクションをハッシュするには、順に各データベースに切り替え、データベースごとにmd5 コマンドを 1 回実行し、各データベースの 値を個別に比較します。
手順
ソース ハッシュの取得
同期されたコレクションを含むデータベースに切り替え、ソースクラスターで dbHashコマンドを実行します。 フィールドに、データベースプレフィックスを除いて、同期に含まれる各コレクションを名前で一覧表示します。次に、 の出力フィールドを返します。collectionsmd5
use accounts db.runCommand({ dbHash: 1, collections: [ "us_accounts", "eu_accounts", ... ]}).md5
9a1e4b7c2f8d3056ae91cbd4f72608b3
このコマンドを実行しながら、宛先ハッシュを取得します。
宛先ハッシュの取得
同期されたコレクションを含むデータベースに切り替え、宛先クラスターで dbHashコマンドを実行します。 フィールドに、データベースプレフィックスを除いて、同期に含まれる各コレクションを名前で一覧表示します。次に、 の出力フィールドを返します。collectionsmd5
use accounts db.runCommand({ dbHash: 1, collections: [ "us_accounts", "eu_accounts", ... ]}).md5
9a1e4b7c2f8d3056ae91cbd4f72608b3
ハッシュに注目してください。