Docs Menu
Docs Home
/ /
Puntos de conexión de API de mongosync

start

Inicia la sincronización entre un clúster de origen y uno de destino.

Para utilizar el punto final start, mongosync debe estar en el estado IDLE.

El usuario especificado en la cadena de conexión mongosync debe tener los permisos necesarios en los clústeres de origen y destino. Consulte Permisos de usuario para garantizar que el usuario tenga los permisos correctos para iniciar la sincronización.

Asegura que uses el usuario mongosync configurado en las cadenas de conexión para la configuración de cluster0 o cluster1 cuando inicies mongosync.

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 Iniciar múltiples Mongosyncs.

POST /api/v1/start
Parameter
Tipo
Necesidad
Descripción

source

string

Requerido

Nombre del clúster de origen.

destination

string

Requerido

Nombre del clúster de destino.

buildIndexes

string

Opcional

Configura las compilaciones de índices durante la sincronización.

Opciones admitidas:

  • beforeDataCopy (predeterminado) hace que mongosync cree índices en el clúster de destino. Estos incluyen tanto los índices existentes como los creados durante la migración en el clúster de origen.

  • never Hace que mongosync omita la creación de índices innecesarios durante la sincronización. Esto puede mejorar el rendimiento de la migración, especialmente con cargas de trabajo con índices pesados.

    Si inicia la sincronización con la verificación habilitada y buildIndexes configurado en never, la migración fallará si mongosync encuentra una colección TTL en el clúster de origen. Esto puede ocurrir después de llamar al punto de conexión /start o mucho más tarde, por ejemplo, cuando un usuario crea un índice TTL en el clúster de origen durante una migración en curso.

    Para sincronizar colecciones TTL sin crear índices en el clúster de destino, debe iniciar la sincronización con el verificador deshabilitado.

    ADVERTENCIA: No cree índices manualmente mientras mongosync esté realizando una migración. Espere hasta que la migración se haya confirmado por completo.

    Para obtener más información sobre los índices que crea, consulte Índices obligatorios.

/start devuelve un error cuando buildIndexes se establece en never y reversible se establece en true.

Si llama a /start sin especificar la opción buildIndexes, mongosync crea índices en el clúster de destino.

Novedades en la versión 1.3.0.

enableUserWriteBlocking

booleano

Opcional

Si se establece en true, bloquea las escrituras en el clúster de destino mientras la sincronización está en curso. Una vez confirmada la sincronización con el clúster de destino, el clúster de origen original bloquea las escrituras y el clúster de destino las acepta.

Para revertir la sincronización, el campo enableUserWriteBlocking debe estar configurado como true. Para permitir que el clúster de origen acepte escrituras de nuevo, por ejemplo, después de ejecutar pruebas de migración, ejecute el siguiente comando:

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

El valor predeterminado es false.

includeNamespaces

arreglo

Opcional

Filtra las bases de datos o colecciones para incluir en la sincronización.

Si configura un filtro en un clúster de origen que tiene varias bases de datos, mongosync solo sincroniza las bases de datos especificadas en la definición del filtro. mongosync no sincronizará las demás bases de datos existentes.

Si desea modificar el filtro para agregar una base de datos recién creada, deberá reiniciar la sincronización filtrada desde el principio.

Para obtener más detalles, consulte Sincronización filtrada.

Para conocer las limitaciones actuales, consulte Sincronización filtrada.

Novedades en la versión 1.1.

excludeNamespaces

arreglo

Opcional

Filtra las bases de datos o colecciones que se excluirán de la sincronización.

Si configura un filtro en un clúster de origen que tiene varias bases de datos, mongosync solo sincroniza las bases de datos especificadas en la definición del filtro. mongosync no sincronizará las demás bases de datos existentes.

Si desea modificar el filtro para agregar una base de datos recién creada, deberá reiniciar la sincronización filtrada desde el principio.

Para obtener más detalles, consulte Sincronización filtrada.

Para conocer las limitaciones actuales, consulte Sincronización filtrada.

Novedades en la versión 1.6.

reversible

booleano

Opcional

Si se establece en true, permite revertir la operación de sincronización.

Para revertir la sincronización, el campo enableUserWriteBlocking debe establecerse en true.

Esta opción no es compatible con las siguientes configuraciones:

  • Sincronizar desde un conjunto de réplicas a un clúster fragmentado

  • Sincronizar clústeres fragmentados que tienen diferentes cantidades de fragmentos

  • Sincronización reversible cuando buildIndexes se establece en never.

  • Sincronización reversible con el verificador integrado. El verificador admite la dirección de avance inicial de la sincronización reversible. Al llamar al punto final /reverse, se deshabilita el verificador.

Para obtener más información, consulte el punto final inverso.

El valor predeterminado es false.

sharding

Documento

Opcional

Configura la sincronización entre un conjunto de réplicas y un clúster fragmentado. La sincronización desde un conjunto de réplicas a un clúster fragmentado requiere esta opción.

Para obtener más información, consulte Parámetros de fragmentación.

Novedades en la versión 1.1.

verification

Documento

Opcional

Configura el verificador embebido.

Para obtener más información, consulte Verificador integrado.

Nuevo en la versión 1.9.

verification.enabled

Booleano

Opcional

Habilita el verificador integrado. Este realiza una serie de comprobaciones en las colecciones compatibles del clúster de destino para confirmar que la migración se realizó correctamente.

Si el verificador no encuentra errores, mongosync pasa al estado COMMITTED. Si encuentra errores, la migración falla.

El verificador está activado por defecto para migraciones de set de réplicas a set de réplicas. Si la migración incluye un clúster fragmentado, el verificador no está habilitado.

ADVERTENCIA: El verificador no verifica todas las colecciones ni todos los datos. Para más información, consulte Verificador integrado.

Nuevo en la versión 1.9.

Novedades en la versión 1.1.

Para sincronizar desde un conjunto de réplicas a un clúster fragmentado, configure la opción sharding para fragmentar colecciones en el clúster de destino.

mongosync genera un error si la opción sharding no está configurada al sincronizar desde un conjunto de réplicas a un clúster fragmentado. mongosync también genera un error si la opción sharding está configurada con cualquier otra configuración.

La opción sharding tiene los siguientes parámetros:

Parameter
Tipo
Descripción

createSupportingIndexes

booleano

Opcional. Establece si la sincronización crea un índice de apoyo para la clave de fragmento, si no existe ninguno. El valor predeterminado es false.

Para obtener más información y conocer las limitaciones,consulte Índices de soporte.

shardingEntries

conjunto de documentos

Obligatorio. Establece el espacio de nombres y la clave de las colecciones que se fragmentarán durante la sincronización.

Las colecciones no incluidas en esta matriz se sincronizan con las colecciones no fragmentadas del clúster de destino. Si se configura con una matriz vacía, no se fragmenta ninguna colección.

shardingEntries
.collection

string

Establece la colección como fragmento.

shardingEntries
.database

string

Establece la base de datos de la colección en fragmento.

shardingEntries
.shardCollection

Documento

Establece la clave de fragmento que se generará en el clúster de destino.

shardingEntries
.shardCollection
.key

arreglo

Establece los campos que se utilizarán para la clave de fragmento.

Para obtener más información, consulte Claves de fragmentos.

Campo
Tipo
Descripción

success

booleano

Cuando la solicitud es exitosa, este valor es true.

error

string

Si se produjo un error, indica su nombre. Este campo se omite en la respuesta cuando success es true.

errorDescription

string

Descripción detallada del error ocurrido. Este campo se omite en la respuesta cuando success es true.

El siguiente ejemplo inicia un trabajo de sincronización entre cluster0 y cluster1. El clúster de origen es cluster0 y el de destino es cluster1.

Pedido:

curl localhost:27182/api/v1/start -XPOST \
--data '
{
"source": "cluster0",
"destination": "cluster1"
} '

Respuesta:

{"success":true}

El siguiente ejemplo inicia un trabajo de sincronización entre cluster0 y cluster1. El clúster de origen es cluster0 y el de destino es cluster1.

Los reversible enableUserWriteBlocking campos y permiten invertir la sincronización. Para invertir la dirección de la sincronización, consulte: invertir.

Pedido:

curl localhost:27182/api/v1/start -XPOST \
--data '
{
"source": "cluster0",
"destination": "cluster1",
"reversible": true,
"enableUserWriteBlocking": true
} '

Respuesta:

{"success":true}

El siguiente ejemplo inicia un trabajo de sincronización entre cluster0 y cluster1. El clúster de origen es cluster0 y el de destino es cluster1.

cluster0 contiene las bases de datos sales, marketing y engineering.

La base de datos sales contiene las colecciones EMEA, APAC y AMER.

La matriz includeNamespaces en este ejemplo define un filtro en dos de las bases de datos, sales y marketing.

La base de datos sales también filtra las colecciones EMEA y APAC.

"includeNamespaces" : [
{
"database" : "sales",
"collections": [ "EMEA", "APAC" ]
},
{
"database" : "marketing"
}
]

Después de llamar a la API /start con este filtro implementado, mongosync:

  • Sincroniza todas las colecciones en la base de datos marketing

  • Filtra la base de datos engineering

  • Sincroniza las colecciones EMEA y APAC de la base de datos sales

  • Filtra la colección AMER

La includeNamespaces opción crea un filtro. Para filtrar la sincronización, consulte: Sincronización filtrada

Pedido:

curl -X POST "http://localhost:27182/api/v1/start" --data '
{
"source": "cluster0",
"destination": "cluster1",
"includeNamespaces": [
{
"database": "sales",
"collectionsRegex": {
"pattern": "^accounts_.+$",
"options": "i"
}
}, {
"database": "marketing"
}
]
} '

Respuesta:

{"success":true}

Pedido:

curl localhost:27182/api/v1/start -XPOST \
--data '
{
"source": "cluster0",
"destination": "cluster1",
"sharding": {
"createSupportingIndexes": true,
"shardingEntries": [
{
"database": "accounts",
"collection": "us_east",
"shardCollection": {
"key": [
{ "location": 1 },
{ "region": 1 }
]
}
}
]
}
} '

Respuesta:

{"success":true}

A partir de 1.9, el verificador integrado se ejecuta de forma predeterminada al iniciar una migración. Si necesita desactivarlo, configure verification.enabled en false.

Pedido:

curl localhost:27182/api/v1/start -XPOST \
--data '
{
"source": "cluster0",
"destination": "cluster1",
"verification": {
"enabled": false
}
} '

Respuesta:

{"success":true}

Debe verificar que la migración se haya realizado correctamente antes de transferir la carga de su aplicación al clúster de destino. Si necesita deshabilitar el verificador por cualquier motivo, utilice un método alternativo para verificar la sincronización.

A partir de 1.9, mongosync proporciona un verificador integrado para determinar si la transferencia de datos desde el clúster de origen al destino fue exitosa.

Cuando está habilitado, el verificador realiza una serie de comprobaciones en el clúster de destino. Si alguna de estas comprobaciones devuelve un error, el verificador falla la migración. Si todas las comprobaciones son correctas, mongosync pasa al estado COMMITTED.

Para deshabilitar el verificador, consulte Comenzar con el verificador deshabilitado.

El punto final /start devuelve un error si habilita comprobaciones de verificación que no son compatibles con el clúster de origen o destino o si no hay suficiente memoria.

Si la solicitud start es exitosa, mongosync ingresa al estado RUNNING.

La sincronización desde un conjunto de réplicas a un clúster fragmentado requiere la opción sharding. Esta opción configura cómo mongosync fragmenta las colecciones.

La matriz sharding.shardingEntries especifica las colecciones que se fragmentarán. Las colecciones que no aparecen en esta matriz se replican como no fragmentadas.

Para obtener más información, consulta Comportamiento de clúster particionado.

mongosync Sincroniza los índices del clúster de origen con el de destino. Al sincronizar desde un conjunto de réplicas a un clúster fragmentado, mongosync podría requerir un índice adicional para admitir la clave de fragmentación, que podría no existir en el clúster de origen.

mongosync Se pueden crear índices de soporte para colecciones fragmentadas durante la sincronización. Esto se realiza configurando la opción sharding.createSupportingIndexes.

Cuando sharding.createSupportingIndexes es false (el valor predeterminado):

  • Cada clave de fragmento que proporcione para la opción sharding.shardingEntries debe tener un índice existente en el clúster de origen.

  • Uno de los índices utilizados para la clave del fragmento debe tener una intercalación simple si la colección utiliza cualquier otra intercalación.

  • Para utilizar un índice único en la clave de fragmento, debe especificar su singularidad cuando crea el índice en el clúster de origen.

  • Los índices únicos en el clúster de origen que son incompatibles con la clave de fragmento solicitada en el clúster de destino, como un índice único en el origen que no contiene la clave de fragmento solicitada como prefijo en el destino, pueden provocar que mongosync falle.

Cuando sharding.createSupportingIndexes es true:

  • Si los índices de soporte existen en el clúster de origen, mongosync sincroniza los índices con el clúster de destino y los utiliza como claves de fragmento.

  • Si los índices de soporte no existen, mongosync los crea en el clúster de destino.

La opción sharding.createSupportingIndexes afecta a todas las colecciones fragmentadas.

Las colecciones listadas en el arreglo sharding.shardingEntries al sincronizarse de un set de réplicas a un clúster, se convierten en colecciones particionadas en el clúster de destino.

Cambiar el nombre de una colección (por ejemplo, con el comando) en el clúster de origen después de renameCollection llamar start a pero antes de que mongosync comience a copiar la colección puede impedir que la colección se fragmente en el destino.

Nota

No se admite cambiar el nombre de colecciones para usar una base de datos diferente mientras se sincroniza desde un conjunto de réplicas a un clúster fragmentado.

Para comprobar si es seguro progress cambiar el nombre de las colecciones, llame al punto final y verifique el valor del collectionCopy.estimatedCopiedBytes campo en el documento de retorno.

  • Un valor de 0 indica que mongosync no ha comenzado a copiar la colección.

    Cambiar el nombre de una colección en este punto puede generar una colección sin fragmentar en el clúster de destino, ya que la transición a la copia puede ocurrir antes de que el cambio de nombre tenga efecto en el origen.

  • Un valor mayor que 0 indica que mongosync ha iniciado la copia. Cambiar el nombre de la colección a partir de este momento no bloquea su fragmentación en el clúster de destino, incluso en caso de fallo.

Cuando llama a /start con la opción buildIndexes establecida en never, mongosync omite la creación de índices innecesarios.

Los índices que siempre se construyen incluyen:

  • mongosync construye un índice en el campo _id de cada colección que copia.

  • mongosync Crea índices ficticios para cada colección fragmentada que no tenga un índice compatible con la clave de fragmento en el clúster de destino. Cuando buildIndexes se establece en never, mongosync conserva este índice después de la confirmación.

mongosync No protege el punto final start. Sin embargo, por defecto, la API se vincula únicamente al host local y no acepta llamadas de otras fuentes. Además, la llamada start no expone las credenciales de conexión ni los datos del usuario.

Volver

Puntos de conexión de API de mongosync

En esta página