Puedes verificar la sincronización comparando los hashes MD5 de las colecciones sincronizadas desde el clúster de origen al clúster de destino. Mientras que la comparación de hash garantiza que el clúster de destino haya recibido todos los cambios del origen, el comando dbHash bloquea el clúster, evitando escrituras adicionales hasta que se complete. Este proceso también puede ser mucho más lento que la verificación utilizando recuento de documentos.
Acerca de esta tarea
No es posible realizar una comparación de hash en clústeres fragmentados.
Si necesitas sincronizar un clúster fragmentado o una versión anterior de MongoDB, o si los bloqueos no son aceptables para la carga de trabajo de tu aplicación, utiliza un método de verificación diferente.
El comando dbHash calcula el hash de las colecciones solo en la base de datos actual, y el campo collections acepta nombres de colección sin formato. Si incluye el nombre de la base de datos en el nombre de una colección, como en accounts.us_accounts, dbHash no encuentra ninguna colección coincidente y devuelve el hash de una entrada vacía en ambos clústeres. Para calcular el hash de colecciones en más de una base de datos, cambie a cada base de datos sucesivamente, ejecute el comando una vez por base de datos y compare los valores md5 de cada base de datos por separado.
Pasos
Recuperar el hash de origen
Cambie a la base de datos que contiene las colecciones sincronizadas y, a continuación, ejecute el comando dbHash en el clúster de origen. En el campo collections, liste cada colección incluida en la sincronización por su nombre, sin el prefijo de la base de datos. A continuación, devuelva el campo de salida md5:
use accounts db.runCommand({ dbHash: 1, collections: [ "us_accounts", "eu_accounts", ... ]}).md5
9a1e4b7c2f8d3056ae91cbd4f72608b3
Mientras ejecuta este comando, recupere el hash de destino.
Recuperar el hash de destino
Cambie a la base de datos que contiene las colecciones sincronizadas y, a continuación, ejecute el comando dbHash en el clúster de destino. En el campo collections, liste cada colección incluida en la sincronización por su nombre, sin el prefijo de la base de datos. A continuación, devuelva el campo de salida md5:
use accounts db.runCommand({ dbHash: 1, collections: [ "us_accounts", "eu_accounts", ... ]}).md5
9a1e4b7c2f8d3056ae91cbd4f72608b3
Toma nota del hash.