Nuevo en la versión 1.9.
mongosync incluye un verificador incorporado para realizar una serie de comprobaciones en el clúster de destino para verificar la sincronización de las colecciones compatibles. mongosync habilita el verificador de forma predeterminada en los clústeres de conjuntos de réplicas.
A partir de la versión 1.10, mongosync habilita el verificador de forma predeterminada en clústeres fragmentados.
Nota
mongosync lee usando primary tiene preferencia de lectura, por lo que conserva el orden de los campos del documento desde el nodo principal del clúster de origen. El verificador integrado también verifica los documentos según el nodo principal del clúster de origen, pero en un momento distinto al de mongosync la lectura de. Por ello, en raras ocasiones, las discrepancias en el orden de los campos del documento entre los nodos del clúster de origen pueden provocar que el verificador integrado no pueda realizar la migración, incluso si mongosync copió los documentos correctamente.
Acerca de esta tarea
Compatibilidad
El verificador integrado no está disponible en mongosync 1.8 y anteriores.
Para conocer métodos de verificación alternativos, consulte Verificar transferencia de datos.
Limitaciones
El verificador integrado tiene las siguientes limitaciones:
mongosyncAlmacena el estado del verificador en memoria, lo que puede generar una sobrecarga de memoria significativa. Para ejecutar el verificador,mongosyncrequiere aproximadamente 10 GB de memoria, más 500 MB adicionales por cada 1 millones de documentos.El verificador no se puede reanudar. Si un usuario detiene o pausa la sincronización y luego reinicia
mongosyncpor cualquier motivo, el proceso de verificación se reinicia desde el principio. Esto puede provocar que la verificación se retrase considerablemente con respecto a la migración.Al migrar de un conjunto de réplicas a un clúster fragmentado, no se pueden cambiar los nombres de las colecciones de origen especificadas en las opciones de fragmentación. Si se cambia el nombre de una colección incluida en las opciones de fragmentación durante la fase de CEA, el verificador informa de una discrepancia en la fragmentación.
Si inicia la sincronización con la verificación habilitada y
buildIndexesconfigurado ennever, la migración fallará simongosyncencuentra una colección TTL en el clúster de origen. Esto puede ocurrir después de llamar al punto de conexión/starto mucho más tarde, por ejemplo, cuando un usuario crea un índice TTL en el clúster de origen durante una migración en curso.Para sincronizar colecciones TTL sin crear índices en el clúster de destino, debe iniciar la sincronización con el verificador deshabilitado.
Comprobaciones de verificación no admitidas
El verificador no comprueba los siguientes espacios de nombres:
Colecciones limitadas
Colecciones con índices TTL, incluidos los índices TTL que se agregan o eliminan durante la migración
Colecciones que no utilizan la intercalación predeterminada
Para verificar colecciones no admitidas, añada código de script adicional para examinar las colecciones. Para obtener más información, consulta Verificar transferencia de datos.
Nota
A partir de la 1.10 versión, el verificador busca inconsistencias en los datos de un evento DDL ocurrido en el clúster de origen anterior a la 6.0 durante la migración. Esto se debe a que las migraciones anteriores a la6.0 no admiten eventos DDL.
Para obtener más información, consulte 6.0 Limitaciones de migración anteriores a.
Pasos
Inicializar mongosync
Inicializa el proceso de mongosync:
./bin/mongosync \ --logPath /var/log/mongosync \ --cluster0 "mongodb://clusterAdmin:superSecret@clusterOne01.fancyCorp.com:20020,clusterOne02.fancyCorp.com:20020,clusterOne03.fancyCorp.com:20020" \ --cluster1 "mongodb://clusterAdmin:superSecret@clusterTwo01.fancyCorp.com:20020,clusterTwo02.fancyCorp.com:20020,clusterTwo03.fancyCorp.com:20020"
Examinar el progreso
Para examinar el estado de la sincronización, utilice el punto final /progress:
curl localhost:27182/api/v1/progress -XGET
Ejemplo de salida:
{ "progress": { "state":"RUNNING", "canCommit":true, "canWrite":false, "info":"change event application", "lagTimeSeconds":0, "collectionCopy": { "estimatedTotalBytes":694, "estimatedCopiedBytes":694 }, "directionMapping": { "Source":"cluster0: localhost:27017", "Destination":"cluster1: localhost:27018" }, "source": { "pingLatencyMs":250 }, "destination": { "pingLatencyMs":-1 }, "verification": { "source": { "estimatedDocumentCount": 42, "hashedDocumentCount": 42, "lagTimeSeconds": 2, "totalCollectionCount": 42, "scannedCollectionCount": 10, "phase": "stream hashing" }, "destination": { "estimatedDocumentCount": 42, "hashedDocumentCount": 42, "lagTimeSeconds": 2, "totalCollectionCount": 42, "scannedCollectionCount": 10, "phase": "stream hashing" } } }, "success": true }
Examine el campo de respuesta verification para obtener información sobre el estado del verificador incorporado.
Comportamiento
Comprobaciones de verificación
El verificador integrado realiza una serie de comprobaciones en el clúster de destino. Comprueba todas las colecciones compatibles para confirmar que mongosync transfirió correctamente los documentos del clúster de origen al de destino.
Si el verificador detecta errores, la migración falla con un error. Si el verificador no encuentra errores, el /progress punto final canWrite: true devuelve. Para obtener más información sobre el canWrite campo, consulte canWrite y COMMITTED.
A partir de la versión 1.15, el verificador integrado examina los metadatos, índices y vistas de la colección. Si el verificador encuentra una discrepancia durante la verificación de metadatos, devuelve un error que contiene los tipos de discrepancia y un recuento de sus ocurrencias.
Comuníquese con el soporte técnico para investigar problemas de verificación.
Requisitos de memoria
La verificación requiere 10 GB de memoria más 500 MB adicionales por cada 1 millones de documentos en la migración.
Si la memoria disponible es insuficiente, el punto final /start devuelve un error. En este caso, para usar mongosync con el verificador, primero debe aumentar la memoria del servidor y reanudar la migración.
Si aumentar la memoria del servidor no es una opción, reinicie mongosync con el verificador deshabilitado.