Docs Menu
Docs Home
/ /

Finalizar el proceso de cambio.

Puede finalizar una migración y transferir la carga de trabajo de su aplicación desde el clúster de origen al de destino mediante el Proceso de transición demongosync.

mongosync debe permanecer activo hasta alcanzar el estado COMMITED. Esto permite que mongosync sincronice cualquier guardados adicional que ocurra durante la migración.

Nota

Antes de transferir la carga de trabajo de la aplicación al clúster de destino, siempre debe verificar que la sincronización se haya realizado correctamente. Para obtener más información, consulte Verificar la transferencia de datos.

1

Llamar al punto final de progreso para determinar el estado de mongosync antes de iniciar el proceso de transición. Asegúrese de que el mongosync estado del proceso indique los siguientes valores:

  • canCommit es true.

  • lagTimeSeconds es pequeño (cerca de 0).

    Si lagTimeSeconds no está cerca de 0 cuando comienza el cambio, este podría demorar mucho tiempo.

  • Al usar el Verificador Integrado, verifique verification.source los verification.destination documentos de retorno y. Los lagTimeSeconds campos en ambos documentos deben estar cerca 0 phase "stream hashing"de y los campos deben mostrar.

    Si el verificador no está en la fase de hash del flujo, el proceso de transferencia podría llevar mucho tiempo.

El siguiente ejemplo devuelve el estado del proceso de sincronización.

curl localhost:27182/api/v1/progress -XGET
{
"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
}
2
  • Espere a que todas las transacciones en el clúster de origen se confirmen o cancelen.

  • mongosync Habilita el bloqueo de escritura solo en el destino de forma predeterminada. Puede habilitarlo explícitamente iniciando mongosync con enableUserWriteBlocking establecido en "destinationOnly". mongosync solo bloquea las escrituras en el destino y las desbloquea justo antes de que canWrite se establezca en true.

  • Si inicia mongosync con enableUserWriteBlocking configurado en "sourceAndDestination", mongosync bloquea todas las operaciones de guardar en el clúster de destino y las desbloquea justo antes de que canWrite se configure en true. mongosync bloquea los guardados en el origen después de que llames a /commit.

  • Si inicia mongosync con enableUserWriteBlocking establecido en "none", asegúrese de deshabilitar las escrituras. Por ejemplo, ejecute el setUserWriteBlockMode Comando en el clúster de origen:

    db.adminCommand( {
    setUserWriteBlockMode: 1,
    global: true
    } )
  • Si mongosync usa sincronización filtrada, no es necesario deshabilitar las escrituras en todo el clúster de origen. Sin embargo, debe asegurarse de detener las operaciones de escritura en las colecciones que incluye el filtro.

3

Si inicia varias instancias mongosync para su migración, debe emitir una solicitud de confirmación para cada instancia mongosync.

curl localhost:27182/api/v1/commit -XPOST --data '{ }'
{"success":true}

Nota

Después de enviar una solicitud commit, llame al punto final progress para asegurarse de que el estado mongosync sea COMMITTING o COMMITTED.

Si su clúster de origen contiene configuraciones de consulta persistentes (PQS), debe migrar manualmente PQS a su clúster de destino.

Si anteriormente configuraste enableUserWriteBlocking en sourceAndDestination, mongosync bloquea las escrituras en el clúster de origen una vez que completes este paso.

Si previamente configuró enableUserWriteBlocking en sourceAndDestination y mongosync falla durante este paso, debe desbloquear manualmente las escrituras en el clúster de origen setUserWriteBlockMode mediante.

4

Llama al progress punto final para determinar si canWrite truees. Si canWrite es,false espera hasta progress que canWrite muestre que true es. Si estás ejecutando varias instancias de mongosync, solo comprueba que canWrite sea verdadero en el primer mongosync proceso. El canWrite estado de cualquier mongosync proceso posterior no es válido.

curl -sS localhost:27182/api/v1/progress -XGET | jq ".progress.canWrite"
true
5

Verifique la sincronización exitosa de datos desde el clúster de origen al de destino.

Para obtener más información, consulte Verificar transferencia de datos.

6

Para habilitar escrituras,setUserWriteBlockMode actualice:

db.adminCommand(
{
setUserWriteBlockMode: 1,
global: false
}
)

Luego, transfiera la carga de trabajo de su aplicación al clúster de destino.

Si inició mongosync con bloqueo de escritura utilizando la enableUserWriteBlocking opción en el punto final /start, no necesita completar este paso.

7

Cuando la respuesta de progreso mongosync indica que el estado mongosync es COMMITTED, el proceso de transición está completo.

curl -sS localhost:27182/api/v1/progress -XGET | jq ".progress.state"
"COMMITTED"

mongosync permite escrituras en el clúster de destino en una etapa anterior al estado COMMITTED.

Si configura enableUserWriteBlocking como "sourceAndDestination" o "destinationOnly", o si el verificador está activado, puede escribir en el destino después de que /progress informe canWrite: true. De lo contrario, espere hasta que el estado sea COMMITTED. Si ejecuta varias instancias de mongosync, use solo el estado canWrite del primer proceso mongosync.

En la sincronización inicial, mongosync replica los índices únicos del clúster de origen como índices no únicos en el clúster de destino. Durante la confirmación, los índices no únicos relevantes del clúster de destino se establecen en prepareUnique. Al finalizar, el punto de conexión /progress comienza a devolver canWrite: true. Las colecciones con índices prepareUnique rechazan los documentos nuevos que infringen la restricción de índice único. mongosync convierte los índices prepareUnique en índices únicos. Al finalizar, mongosync cambia su estado a COMMITTED.

Nota

La conversión de índices prepareUnique a índices únicos puede ser intensiva en recursos al sincronizar grandes colecciones. Esto puede resultar en un largo tiempo entre el /progress endpoint que devuelve canWrite: true y mongosync que llega al COMMITTED estado.

Aunque las aplicaciones pueden realizar escrituras una vez que se devuelve canWrite: true, las operaciones que requieren bloqueos exclusivos, como la creación de índices, solo pueden proceder después de que se complete la conversión del índice. Además, las operaciones de guardar pueden experimentar una mayor latencia durante este tiempo debido a la contención de recursos en competencia.

Volver

Dimensionamiento del oplog

En esta página