Descripción
Invierte la dirección de una operación de sincronización confirmada.
Por ejemplo:
Tienes una operación de sincronización
COMMITTED.cluster0es la fuente ycluster1es el destino.Después de la operación de sincronización
COMMITTED, las nuevas escrituras solo se realizan en el clúster de destino. El clúster de origen no las aceptará.
En este escenario, puede usar el punto final reverse para sincronizar las escrituras de cluster1 a cluster0, incluidas las escrituras que ocurrieron en cluster1 después de que mongosync llegara a canWrite=true. Para comprobar el estado de canWrite durante la sincronización, use el /progress punto final.
Para obtener más información y un tutorial sobre cómo utilizar el endpoint reverse, consulta Sentido inverso de sincronizar.
Requisitos
Para utilizar el punto final reverse:
mongosyncDebe configurarse al iniciar la sincronización inicial. La llamada al punto final de la API /start debe configurar:reversibletotrueenableUserWriteBlockinga"sourceAndDestination".
Nota
Elbloqueo de escritura dual es un requisito previo para ejecutar.reverse
No puedes actualizar estas opciones una vez iniciada la sincronización.
mongosyncdebe estar en el estadoCOMMITTED.El registro de operaciones del clúster de destino no debe renovarse entre el momento en que
mongosyncllega acanWrite=truey la recepción de la solicitud/reverse.
Advertencia
Los índices únicos en el clúster de origen no deben usar el formato heredado.
Para validar que los índices de colección en el clúster de origen utilicen el formato adecuado, consulte Validar índices únicos.
Los clústeres de origen y destino deben tener el mismo número de fragmentos. No se puede revertir la sincronización cuando los clústeres tienen topologías o versiones principales diferentes.
El usuario especificado en la cadena de conexión
mongosyncdebe tener los permisos necesarios en los clústeres de origen y destino. Los permisos varían según el entorno y si desea modificar la configuración de bloqueo de escritura o usar la sincronización inversa.
Nota
Cuando configura varias instancias mongosync para sincronizar entre clústeres fragmentados, debe enviar comandos de punto final de API idénticos a cada instancia mongosync.
Para obtener más información, consulte Invertir múltiples Mongosyncs.
Validate Unique Indexes
Para invertir la dirección, requieremongosync que todos los índices únicos en el clúster de origen _id (excepto) no tengan claves de índice únicas heredadas.
Antes de comenzar
Puede garantizar que los_id índices únicos no utilicen el formato correcto en el clúster de origen con la $collStats etapa de agregación. Para ejecutar esta canalización de agregación en su colección, copie y pegue el código de ejemplo, reemplazando <collection> por <field_name> el nombre de la colección y por el nombre del campo indexado. Debe ejecutar esto en todos los nodos de todas las colecciones que tengan índices únicos. Tenga en cuenta que solo los_id índices únicos no deben tener formatVersion 13 14o.
db.<collection>.aggregate( [ { $collStats: { storageStats: { } } }, { $project: { "storageStats.indexDetails.<index_name>.metadata.formatVersion": 1 } } ] )
[ { storageStats: { indexDetails: { <field_name>: { metadata: { formatVersion: 14 } } } } } ]
Se garantiza que los índices únicos con formato 13 o 14 no tendrán claves heredadas.
Si tiene índices únicos con una versión de formato diferente, también puede usar el método db.collection.validate() con full = false para confirmar si existen claves de índice heredadas. Debe ejecutarlo en todos los nodos de todas las colecciones con índices únicos. validate() devuelve una advertencia si se detectan claves de índice con formato heredado.
Pasos
Para actualizar la versión de formato de los índices para que sean compatibles mongosync con, debe resincronizar todos los nodos del clúster de origen original. Para resincronizar todos los nodos:
Resincronizar todos los secundarios, uno por uno.
Para obtener un tutorial sobre cómo resincronizar nodos, consulte Resincronizar un miembro de un conjunto de réplicas.
Solicitud
POST /api/v1/reverse
Parámetros del cuerpo de la solicitud
Este punto final no utiliza parámetros del cuerpo de la solicitud HTTP. Sin embargo,debe especificar la --data opción con un objeto { } vacío.
Respuesta
Campo | Tipo | Descripción |
|---|---|---|
| booleano | Cuando la solicitud es exitosa, este valor es |
| string | Si se produjo un error, indica su nombre. Este campo se omite en la respuesta cuando |
| string | Descripción detallada del error ocurrido. Este campo se omite en la respuesta cuando |
Ejemplo
El siguiente ejemplo invierte la dirección de una operación de sincronización confirmada.
Solicitud
curl localhost:27182/api/v1/reverse -XPOST --data '{ }'
Respuesta
{"success":true}
Comportamiento
El terminal reverse inicia el estado REVERSING. mongosync intercambia los clústeres de origen y destino y reanuda la aplicación de eventos de cambio.
Si la sincronización reverse se realiza correctamente, mongosync pasa al estado RUNNING. La sincronización continúa en sentido inverso al trabajo de sincronización original. No es necesario reiniciar todo el proceso de sincronización para copiar los datos originales.
Para ver la dirección de mapeo para la sincronización de los clústeres de origen y destino, utilice el punto final de progreso y verifique el directionMapping objeto.
Verificador integrado
El verificador incorporado está habilitado de forma predeterminada para las migraciones de conjuntos de réplicas.
Protección de endpoints
mongosync No protege el punto final reverse. Sin embargo, por defecto, la API se vincula únicamente al host local y no acepta llamadas de otras fuentes. Además, la llamada reverse no expone las credenciales de conexión ni los datos del usuario.
Limitaciones
El punto final reverse no admite:
migraciones desde clústeres de origen anteriores a.6.0