Descripción
Devuelve el estado actualizado del proceso de sincronización o un error.
Solicitud
GET /api/v1/progress
Respuesta
El endpoint progress devuelve un estado actualizado o un error.
Respuesta exitosa
El objeto de respuesta contiene 2 campos de nivel superior, success y progress.
El campo success contiene el estado del comando progress. El valor es true si el comando tiene éxito y false si el comando falla.
Si mongosync obtiene correctamente el estado del proceso de sincronización, todos los campos de respuesta se incluyen en el objeto progress de nivel superior con los siguientes campos:
Campo | Tipo | Descripción | ||||
|---|---|---|---|---|---|---|
| string | El estado actual de | ||||
| booleano | Si
Si estableces buildIndexes en Modificado en la versión 1.21:
| ||||
| booleano | Si La validación del índice continúa hasta que se complete el commit. | ||||
| Objeto | Muestra el progreso en tiempo real de las creaciones de índices en el clúster de destino si se configura IMPORTANTE: debido a que | ||||
| entero | El número de índices que | ||||
| entero | El número total de índices que | ||||
| entero | El número de colecciones para las que | ||||
| entero | El número total de colecciones para las que | ||||
| string | Ofrece información adicional sobre el progreso de la sincronización. Los posibles valores de
| ||||
| string | Etapa de la fase de Aplicación de eventos de cambio (CEA). Solo aparece cuando
Utilice este campo para interpretar el retraso de sincronización. Para obtener más información, consulte Etapas de la aplicación de eventos de cambio. Nuevo en la versión 1.22. | ||||
| Objeto | Informa el retraso de sincronización desglosado por componente. El objeto Nuevo en la versión 1.21. | ||||
| entero | Diferencia de tiempo en segundos entre la marca de tiempo del último evento que Nuevo en la versión 1.21. | ||||
| entero | Componente CRUD del retraso de sincronización en segundos. Este campo es Nuevo en la versión 1.21. | ||||
| entero | Componente DDL del retraso de sincronización en segundos. Este campo es Nuevo en la versión 1.21. | ||||
| entero | Obsoleto en Mongosync 1.21. Utilice Diferencia de tiempo en segundos entre la marca de tiempo del último evento que
Debido a constantes operaciones nulas en el clúster de origen, la diferencia de tiempo suele ser de unos segundos sobre cero, incluso si no hay guardados reales en el clúster de origen. La diferencia de tiempo se vuelve cero cuando A partir de la versión 1.9, | ||||
| entero | La cantidad aproximada de eventos de cambio que esta instancia de Este valor puede no representar con precisión el número total de eventos porque no se conserva y omite ciertos eventos del recuento. | ||||
| Objeto | Estima la cantidad total de datos que se están copiando de las colecciones y la cantidad que ya se ha copiado al clúster de destino | ||||
| entero | Número total estimado de bytes que se copiarán globalmente mediante todas las instancias de
| ||||
| entero | Número estimado de bytes copiados al clúster de destino por esta instancia de Para calcular el progreso total estimado como porcentaje:
Ambos valores son estimaciones de mejor esfuerzo y es posible que no reflejen con precisión el progreso real de la migración. | ||||
| entero | Proporciona la última latencia de ping conocida, en milisegundos, desde Nuevo en la versión 1.17. | ||||
| Objeto | Describe la dirección de mapeo para la sincronización, es decir, los clústeres de origen y destino. | ||||
| string | clúster de origen. Devuelto en el formulario | ||||
| string | Clúster de destino. Devuelto en la forma | ||||
| string | Muestra la estimación del tiempo de oplog disponible en el clúster de origen. Los valores posibles incluyen una duración (por ejemplo,
IMPORTANTE: Si aumenta el tamaño de oplog en el clúster de origen,
Nuevo en la versión 1.19. | ||||
| entero | Tiempo estimado restante, en segundos, en la fase de Solicitud de aplicación de cambio (CEA), basándose en cuánto se ha reducido
Nuevo en la versión 1.14. | ||||
| string | string de identificación de la instancia Nuevo en la versión 1.3. | ||||
| string | string de identificador para la instancia del coordinador.
Nuevo en la versión 1.3. | ||||
| entero | Proporciona la última latencia de ping conocida, en milisegundos, desde Nuevo en la versión 1.17. | ||||
| Documento | Proporciona información sobre la fase y el progreso de las comprobaciones de verificación realizadas por el verificador integrado. Nuevo en la versión 1.9. | ||||
| Documento | Proporciona información sobre la fase y el progreso de las comprobaciones de verificación que se ejecutan en el clúster de origen. Nuevo en la versión 1.9. | ||||
| entero | Número estimado de documentos en el clúster de origen. Nuevo en la versión 1.9. | ||||
| entero | Número de documentos encriptados por el verificador en el clúster de origen. Nuevo en la versión 1.9. | ||||
| entero | Tiempo en segundos transcurrido desde que se realizó la última verificación en el clúster de origen. Nuevo en la versión 1.9. | ||||
| string | Fase actual del proceso de verificación en el cluster de origen. Esto puede ser uno de tres valores:
Si el verificador necesita volver a escanear una colección, puede volver a la fase A partir de | ||||
| entero | Número de escaneos de colección realizados por el verificador integrado en el clúster de origen. Nuevo en la versión 1.9. | ||||
| entero | Número de colecciones en el clúster de origen para incluir en las comprobaciones de verificación. | ||||
| Documento | Proporciona información sobre la fase y el progreso de las comprobaciones de verificación que se ejecutan en el clúster de destino. Nuevo en la versión 1.9. | ||||
| entero | Número estimado de documentos en el clúster de destino. Nuevo en la versión 1.9. | ||||
| entero | Cantidad de documentos encriptados por el verificador en el clúster de destino. Nuevo en la versión 1.9. | ||||
| entero | Tiempo en segundos desde la última comprobación de verificación realizada en el clúster de destino. Nuevo en la versión 1.9. | ||||
| string | Fase actual del proceso de verificación en el clúster de destino. Esto puede ser uno de tres valores:
Si el verificador necesita volver a escanear una colección, puede volver a la fase A partir de | ||||
| entero | Número de escaneos de colección por el verificador incorporado en el clúster de destino. Nuevo en la versión 1.9. | ||||
| entero | Número de colecciones en el clúster de destino para incluir en las comprobaciones de verificación. Nuevo en la versión 1.9. | ||||
| Arreglo de cadenas | Mensajes de advertencia que Si el tiempo estimado de operación del log (oplog) restante es muy bajo, Para más detalles, consulta Dimensionamiento del oplog. Si Nuevo en la versión 1.19. |
Respuesta de error
Si mongosync encuentra un error, el endpoint progress devuelve los siguientes campos:
Campo | Tipo | Descripción |
|---|---|---|
| booleano | El estado del comando |
| string | Tipo de error. |
| string | Descripción detallada del error. |
Comportamiento
Cuando
mongosyncestá en el estadoIDLE, todos los campos de salida, exceptostateycanCommit, estánnull.Cuando
mongosyncestá en el estadoPAUSED, el objetolagesnully el campo obsoletolagTimeSecondsesnull.Cuando
mongosyncse encuentra en el estadoINITIALIZING,mongosyncrechaza las solicitudes de/start. Una vez que la inicialización se complete,mongosyncdevuelveIDLEy admite solicitudes/start.Si
mongosyncse reanuda o reinicia después de un bloqueo, una vez completada la inicialización, la respuesta de/progressdevuelve elstateque había antes del bloqueo.El endpoint no se actualiza automáticamente. Para obtener el estado actualizado, llama nuevamente al endpoint
progress.Las llamadas a
/progressantes de quemongosyncllegue a la fase de copia de la recolección retornan 0 paraestimatedCopiedBytesy 1 paraestimatedTotalBytes.Durante la copia de la colección,
estimatedTotalBytessolo cambia siestimatedCopiedByteslo excede. En ese caso,mongosyncaumentaestimatedTotalBytespara que sea igual aestimatedCopiedBytes.Al final de la copia de la colección,
estimatedTotalByteses igual aestimatedCopiedBytes.mongosyncutiliza el total de bytes copiados como fuente de verdad. Ambos valores son estimaciones de mejor esfuerzo.
Etapas de la aplicación de eventos de cambio
Nuevo en la versión 1.22.
El campo ceaStage informa sobre el grado de progreso de mongosync en la fase de Aplicación de Evento de Cambio (CEA). ceaStage puede ayudarle a interpretar el retraso de mongosync.
Durante "collection copy drain", mongosync aplica los eventos de cambio acumulados durante la copia de la colección. Dado que la copia de la colección podría haber copiado previamente un documento cuya inserción permanece en la cola de espera, reproducir dicha inserción puede generar un error de clave duplicada. El manejo de estos errores puede reducir temporalmente el rendimiento de CEA, por lo que la latencia podría aumentar durante esta etapa sin indicar un problema.
Cuando ceaStage es "steady state", mongosync procesa solo las escrituras de origen que se producen después de que finalice la copia de la colección. Si el rendimiento de mongosync supera la tasa de guardar de origen, el retraso debería disminuir.
Advertencia
Si el retardo sigue aumentando mientras ceaStage es "steady state", mongosync no puede seguir el ritmo del clúster de origen. A menos que la tasa de escritura de origen disminuya o el rendimiento de CEA aumente, mongosync no puede ponerse al día y completar la migración. En este caso, puede hacer una de las siguientes cosas:
Incremente el valor de
--loadLevel, si el uso de la CPU lo permite.Amplíe el clúster de destino para añadir más capacidad de CPU.
Reduzca la tasa de escritura del clúster de origen, si es posible.
Protección de endpoints
mongosync no protege el punto de conexión progress. Sin embargo, por defecto, la API se vincula únicamente a localhost y no acepta llamadas de otras fuentes. Además, la llamada progress no expone credenciales de conexión ni datos de usuario.
Ejemplo
El siguiente ejemplo devuelve el estado del proceso de sincronización.
Solicitud
curl localhost:27182/api/v1/progress -XGET
Respuesta
{ "progress": { "state":"RUNNING", "canCommit":true, "canWrite":false, "info":"change event application", "ceaStage":"steady state", "lag": { "overallLagSeconds": 0, "crudLagSeconds": 0, "ddlLagSeconds": null }, "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 }