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 activa el verificador por defecto en clústeres particionados.
Nota
mongosync lee usando primary preferencia de lectura, así que conserva el orden de los campos de documentos desde el nodo primario 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.Al migrar de un set de réplicas a un clúster, no puedes renombrar las colecciones de origen que especificas en las opciones de particionado. Si renombras una colección incluida en las opciones de particionado durante la fase de CEA, el verificador informa un desajuste de particionado.
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, debe 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 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 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" }, "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 información sobre el estado del verificador embebido.
Comportamiento
Verificación de comprobaciones
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 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.
A partir de la versión 1.15, el verificador incorporado examina los metadatos de la colección, los índices y las vistas. Si el verificador encuentra una discrepancia durante la verificación de metadatos, devuelve un error que contiene los tipos de discrepancia y una contabilidad de sus ocurrencias.
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.