Descripción
Finaliza la sincronización entre el clúster de origen y el clúster de destino.
Para más información, consulte Finalizar el proceso de Cutover.
Requisitos
Antes de utilizar el endpoint commit:
Detén tu aplicación para evitar que se realicen más guardados en el clúster de origen. Durante la confirmación, aún puede leer desde el clúster de origen.
Advertencia
Si escribe en el clúster de origen durante la confirmación, podría experimentar pérdida de datos.
Utilice el punto final de progreso para confirmar los siguientes valores:
lagTimeSecondsparamongosync, el clúster de origen del verificador y el clúster de destino del verificador están todos cerca de0(Recomendado, pero no obligatorio)Nota
lagTimeSeconds
lagTimeSecondsindica el tiempo entre el último evento aplicado y el momento del último evento actual. Cuando envías una solicitud decommit,mongosyncentra en el estadoCOMMITTINGdurante la cantidad de segundos reportados porlagTimeSeconds, y luego pasa al estadoCOMMITTED.Cuando
lagTimeSecondsestá0, los clústeres de origen y destino están en un estado coherente.Para obtener más información sobre los
lagTimeSecondscampos,progressconsulte.state: "RUNNING"canCommit: true
Nota
Cuando configures múltiples instancias de mongosync para sincronizarse entre clústeres fragmentados, debes enviar comandos idénticos de puntos finales API a cada instancia de mongosync.
Para obtener más información, consulta Sincronización de confirmaciones desde múltiples instancias de mongosync.
Solicitud
POST /api/v1/commit
Parámetros del cuerpo de la solicitud
Este endpoint no utiliza parámetros del cuerpo de la solicitud HTTP. Sin embargo, debes especificar la opción --data con un objeto vacío { }.
Respuesta
Campo | Tipo | Descripción |
|---|---|---|
| booleano | Cuando la solicitud es exitosa, este valor es |
| string | Si se produce un error, se indicará el nombre del error. Este campo se omite de la respuesta cuando |
| string | Descripción detallada del error ocurrido. Este campo se omite en la respuesta cuando |
Ejemplo
El siguiente ejemplo compromete la operación de sincronización en el clúster de destino.
Confirmar que la sincronización está lista
Antes de enviar una solicitud al punto final de commit, utiliza el punto final de progreso para confirmar que la sincronización está lista para ser confirmada.
Solicitud
curl localhost:27182/api/v1/progress -XGET
Respuesta
{ "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 }
El punto final progress devolvió "canCommit":true, lo que significa que la solicitud commit puede ejecutarse correctamente.
Enviar la solicitud de confirmación
El siguiente comando envía una solicitud al punto final commit:
Solicitud
curl localhost:27182/api/v1/commit -XPOST --data '{ }'
Respuesta
{"success":true}
Comportamiento
Estado
Si la commit solicitud es exitosa, mongosync pasa al COMMITTED estado. Una vez que mongosync entra en el estado de COMMITTED, la migración de datos entre los clústeres se detiene.
Verificación de datos
Antes de transferir la carga de la aplicación del clúster de origen al destino, verifica tus datos para asegurarte de que la sincronización haya sido exitosa.
Nota
Si mongosync se detiene durante la confirmación, antes de que el punto final /progress canWrite: true informe, debe reiniciar toda la migración para asegurarse de que esté verificada.
Para obtener más información, consulta Verificar la transferencia de datos.
Creación de índices
Si configura buildIndexes en "afterDataCopy" o "excludeHashedAfterCopy" al llamar /start a, mongosync commit bloquea solicitudes hasta que haya creado todos los índices de origen en el clúster de destino.
Cambios en las características de la colección
commit restaura las características de la colección que mongosync modifica temporalmente durante la sincronización.
La siguiente tabla ilustra el impacto de commit en las características de la colección que mongosync altera durante el proceso de sincronización.
Característica de colección | Impacto de commit |
|---|---|
Unique Indexes |
|
TTL Indexes |
|
Hidden Indexes |
|
Bloqueo de escritura | Si se habilita el bloqueo dual de guardar,
Para obtener más información, consulte Bloqueo de Escritura. |
Colecciones con tamaño fijo |
|
Protección de endpoints
mongosync no protege el punto de conexión commit. Sin embargo, por defecto, la API se vincula únicamente a localhost y no acepta llamadas de otras fuentes. Además, la llamada commit no expone credenciales de conexión ni datos de usuario.