mongosync. Ver el
documentación actual para obtener orientaciones actualizadas sobre mongosync e instrucciones sobre cómo realizar la actualización a la última versión.Nuevo en la versión 1.9.
mongosync incluye un verificador integrado para realizar una serie de comprobaciones en el clúster de destino para verificar la sincronización de las colecciones admitidas. mongosync habilita el verificador por defecto en los clústeres de sets de réplicas.
A partir de la versión 1.10, mongosync activa el verificador por defecto en clústeres particionados.
Nota
mongosync lee usando primary la 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 revisa los documentos en función del nodo primario del clúster de origen, pero en un momento diferente al de cuando mongosync los lee. Por esta razón, en casos poco frecuentes, las discrepancias en el orden de los campos de documentos entre los nodos del clúster de origen pueden causar que el verificador incrustado falle en la migración, aunque mongosync haya copiado los documentos correctamente.
Acerca de esta tarea
Compatibilidad
El verificador integrado no está disponible en mongosync 1.8 y anteriores.
Para métodos alternativos de verificación, consulta Verificar transferencia de datos.
Limitaciones
El verificador integrado tiene las siguientes limitaciones:
mongosyncalmacena el estado del verificador en la memoria, lo que puede causar una sobrecarga significativa de memoria. Para ejecutar el verificador,mongosyncrequiere aproximadamente 10 GB de memoria, además de 500 MB adicionales por cada 1 millones de documentos.No se puede reanudar el verificador. Si un usuario detiene o pausa la sincroniza y luego inicia
mongosyncnuevamente por cualquier motivo, el proceso de verificación se reinicia desde el principio. Esto puede hacer que la verificación quede sustancialmente por detrás de la migración.Si inicias 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 suceder después de que llames al endpoint/starto mucho más tarde, como cuando un usuario crea un índice TTL en el clúster de origen mientras una migración está en curso.Para sincronizar colecciones TTL sin crear índices en el clúster de destino, debes iniciar la sincronización con el verificador deshabilitado.
Verificaciones no compatibles
El verificador no comprueba los siguientes espacios de nombres:
Colecciones con tamaño fijo
Colecciones con índices TTL, incluidos los índices TTL que se agregan o descartan durante la migración
Colecciones que no usan la intercalación por defecto
Vistas
El verificador no revisa las siguientes funcionalidades de colección:
Metadatos de la colección
Indexes
Para verificar los datos y metadatos anteriores, escriba comprobaciones adicionales para estas colecciones y funcionalidades de colección. Para obtener más información, consulta Verificar transferencia de datos.
Nota
A partir de la versión 1.10, el verificador verifica las inconsistencias de datos de un evento DDL que ocurrió en el pre-6.0 clúster de origen durante la migración. Esto se debe a que antes de6.0 las migraciones no soportan eventos DDL.
Para obtener más información, consulta Limitaciones de la migración previa a6.0.
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"
Iniciar sincronizar
Para empezar a sincronizar datos desde el clúster de origen al destino, usa el /start endpoint.
curl localhost:27182/api/v1/start -XPOST \ --data ' { "source": "cluster0", "destination": "cluster1", } '
Ejemplo de salida:
{"success":true}
Examina el avance
Para comprobar el estado de la sincronización, utiliza el /progress endpoint:
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" }, "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 información sobre el estado del verificador embebido.
Comportamiento
Verificación de comprobaciones
El verificador incorporado realiza una serie de comprobaciones en el clúster de destino. Verifica todas las colecciones compatibles para confirmar que mongosync fue exitoso en la transferencia de documentos del clúster de origen al de destino.
Si el verificador encuentra errores, falla la migración con un error. Si el verificador no encuentra errores, el endpoint /progress devuelve canWrite: true. Para obtener más información sobre el campo canWrite, consulte puedeEscribir y COMMITTED.
Por favor, contacte con soporte 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 endpoint /start devuelve un error. Si esto ocurre, para usar mongosync con el verificador, primero debes 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.