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