Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

mongosync Comportamiento

El binario mongosync es el proceso principal utilizado en Mongosync. mongosync migra datos de un clúster a otro.

Para una visión general del proceso de mongosync, consulta Acerca de mongosync.

Para comenzar a usar mongosync, consulta la Guía de inicio rápido.

Para obtener información más detallada, consulte la página de Instalación o Conexión mongosync que mejor se ajuste a su situación.

A partir de 1.9, mongosync incluye un verificador incrustado para realizar una serie de verificaciones en todas las colecciones compatibles en el clúster de destino para confirmar que la transferencia de documentos del clúster de origen al destino se realizó con éxito.

Al iniciar el proceso mongosync, proporciona el siguiente descargo de responsabilidad:

Embedded verification is enabled by default. Verification checks for data
consistency between the source and destination clusters. Verification will
cause mongosync to fail if any inconsistencies are detected, but it does not
check for all possible data inconsistencies. Please see the documentation at
https://www.mongodb.com/es/docs/cluster-to-cluster-sync/current/reference/verification/embedded
for more details. Verification requires approximately 0.5 GB of memory per 1
million documents on the source cluster and will fail if insufficient memory
is available. Accepting this disclaimer indicates that you understand the
limitations and memory requirements for this tool. To skip this disclaimer
prompt, use –-acceptDisclaimer.
To disable the embedded verifier, specify 'verification: false' when starting
mongosync. Please see https://www.mongodb.com/es/docs/cluster-to-cluster-sync/current/reference/verification/
for alternative verification methods.
Do you want to continue? (y/n):

Si ya has leído y aceptado la advertencia, puedes iniciar mongosync con la opción --acceptDisclaimer para omitir esta notificación.

mongosync sincroniza los datos de la colección entre un clúster de origen y un clúster de destino. mongosync no sincroniza usuarios ni roles. Como resultado, puedes crear usuarios con diferentes permisos de acceso en cada clúster.

Se pueden configurar opciones para mongosync en un archivo de configuración YAML. Utilice la opción --config. Por ejemplo:

$ mongosync --config /etc/mongosync.conf

Para obtener información sobre las configuraciones disponibles, consulte Configuración.

Mongosync admite la replicación entre clústeres particionados. mongosync replica particiones individuales en paralelo desde el clúster de origen al clúster de destino. Sin embargo, mongosync no preserva la configuración de particionado del clúster de origen.

Importante

Siempre debe deshabilitar el balanceador en un clúster de destino fragmentado mediante balancerStop. Después de detener el balanceador, espere quince minutos antes de iniciar mongosync. Esto le da tiempo al clúster para finalizar cualquier migración de fragmentos en curso.

Si el clúster de origen o destino es un clúster fragmentado y no está ejecutando mongosync con filtrado de espacio de nombres, debe deshabilitar el balanceador del clúster de origen ejecutando el comando balancerStop y esperando 15 minutos para que el comando se complete.

Si el clúster origen o destino es un clúster y ejecutas mongosync con el filtrado de namespaces, puedes habilitar globalmente el balanceador del clúster de origen pero debes deshabilitarlo para todas las colecciones dentro del filtro de namespaces. Consulta Cómo deshabilitar el equilibrador para colecciones en sincronización filtrada También puedes desactivar completamente el equilibrador del clúster de origen.

Durante la migración, no ejecute los comandos moveChunk ni moveRange. Si ha habilitado el balanceador del clúster de origen, pero lo ha deshabilitado para las colecciones dentro del filtro de espacio de nombres, no ejecute shardCollection en dichas colecciones. Si ejecuta shardCollection en las colecciones dentro del filtro de espacio de nombres durante la migración, mongosync devuelve un error y se detiene, lo que le obliga a iniciar la migración desde cero.

Nota

mongosync no admite la migración a los espacios de nombres de destino con etiquetas de zona de partición preconfiguradas. Antes de empezar una migración, remueva todos los rangos de etiquetas de partición, o zonas, de cualquier namespace en los que mongosync se migrará en el destino. Puedes volver a agregar los rangos de zonas deseados después de que la migración llegue al estado COMMITTED.

A partir de la versión 1.17, mongosync desactiva el balanceador en los clústeres de origen y destino durante la inicialización si detecta que los balanceadores no están desactivados.

Esto solo se aplica durante la inicialización. Si mongosync detecta que cualquiera de los balanceadores está habilitado después de que comience la migración, mongosync fallará.

Después de desactivar el balanceador, mongosync espera 15 minutos para asegurarse de que las migraciones de fragmentos en curso se completen antes de continuar con la migración.

Si la migración no es reversible y mongosync deshabilita el balanceador de origen o de destino durante la inicialización, después de un commit exitoso, mongosync volverá a habilitar el/los balanceador(es) que deshabilitó. Si la migración es reversible, mongosync no vuelve a habilitar ningún balanceador para evitar que los usuarios tengan que esperar 15 minutos.

IMPORTANTE: Si mongosync desactiva el balanceador para cualquiera de los clústeres y luego falla antes de la confirmación, debe volver a habilitar el/los balanceador(es) manualmente utilizando el comando de base de datos balancerStart si no planea ejecutar mongosync nuevamente.

Si estás utilizando un filtro de namespace y deseas habilitar el balanceador en tus clústeres de origen para colecciones fuera del filtro de namespace, sigue estas instrucciones antes de comenzar mongosync.

1

Antes de iniciar mongosync con un filtro de espacio de nombres, habilite el balanceador para el clúster de origen ejecutando el método sh.startBalancer() en mongosh.

2

Desactive el balanceador para cada colección dentro del filtro de espacio de nombres ejecutando el comando setAllowMigrations:

db.adminCommand(
{
setAllowMigrations: “<db>.<collection>”,
allowMigrations: false
}
)

Ejecute el comando anterior para cada colección dentro del filtro del namespace.

Importante

Si habilitas el equilibrador del clúster de origen pero no usas un filtro de namespace, o si no deshabilitas el equilibrador para todas las colecciones dentro del filtro de namespace, mongosync falla.

Cuando mongosync se sincroniza con un clúster de destino particionado, predivide los fragmentos para las colecciones particionadas en el clúster de destino. Para cada colección particionada, mongosync intenta crear 90 fragmentos.

Importante

Aunque el clúster de origen esté equilibrado, mongosync no garantiza el equilibrio del clúster de destino. Dado que mongosync no admite la ejecución de operaciones de fragmentación durante la migración, debe esperar hasta que sea seguro aceptar escrituras para reequilibrar el clúster de destino.Consulte el Balanceador de clústeres fragmentados para obtener orientación sobre cómo reequilibrar el clúster y las limitaciones de los clústeres fragmentados en mongosync.

mongosync no conserva la distribución de fragmentos desde el origen hasta el destino, incluso con múltiples instancias de mongosync. No es posible reproducir una pre-división particular de fragmentos de un clúster de origen en el clúster de destino.

La única configuración de particionado que mongosync conserva del clúster de origen al clúster de destino es la clave de particionado. Una vez que termine la migración, puedes habilitar el balanceador del clúster de destino, que distribuye los documentos independientemente de la distribución del clúster de origen.

Cuando sincronices con un clúster de destino particionado, mongosync asignará una partición primaria a cada base de datos mediante un reenvío circular.

Advertencia

La ejecución de movePrimary en el clúster de origen o destino durante la migración puede provocar un error grave o requerir que reinicie la migración desde el principio. Para obtener más información, consulte Clústeres fragmentados.

A partir de 8.0, MongoDB introduce soporte para clústeres de particiones de configuración, también conocidos como clústeres de servidores de configuración integrados.

mongosync admite la sincronización desde clústeres fragmentados de servidores de configuración dedicados a clústeres fragmentados de servidores de configuración integrados y viceversa. Además, mongosync admite la sincronización de sets de réplicas a clústeres particionados de configuración, pero no viceversa.

Para obtener más información sobre los servidores de configuración integrados, consulte Config Shard.

Para sincronizar un clúster de origen con varios clústeres de destino, use una instancia de mongosync para cada clúster de destino Para más información, consulte Limitaciones de Múltiples Clústeres.

A partir de 1.3.0, Mongosync admite colecciones con tamaño fijo con algunas limitaciones.

A partir de 1.20.0, debe pasar el indicador --enableCappedCollectionHandling al iniciar mongosync para permitir la creación de nuevas colecciones limitadas durante una migración.

Las colecciones con tamaño fijo en el clúster de origen funcionan con normalidad durante la sincronización.

Las colecciones con tamaño fijo en el clúster de destino tienen cambios temporales durante la sincronización:

  • No hay un número máximo de documentos.

  • El tamaño máximo de colección es 1PB.

mongosync restaura los valores originales para el número máximo de documentos y el tamaño máximo de documento durante el commit.

mongosync administra el bloqueo de escritura en los clústeres de origen y destino internamente según tu configuración de migración:

Configuración
Guardados de origen bloqueadas
Escrituras de destino bloqueadas

predeterminado

Sí

Sí

El clúster de origen ejecuta MongoDB antes que 6.0

No

Sí

Filtrado de namespace activado (se especifica includeNamespaces o excludeNamespaces en la solicitud /start)

No

Sí

Datos de destino preexistentes activados (preExistingDestinationData establecido en true en la solicitud /start)

No

No

mongosync los bloques de origen escriben después de que llames a /commit. Las escrituras de origen seguirán bloqueadas a menos que la migración falle con un error gestionado. Si mongosync termina inesperadamente durante el commit, puedes desbloquear las escrituras en el clúster de origen manualmente ejecutando el siguiente comando:

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

Para más información, consulta setUserWriteBlockMode.

mongosync bloquea las escrituras de destino después de que llames a /start. Las escrituras de destino permanecen bloqueadas hasta que canWrite esté true en la respuesta de /progress.

El usuario mongosync debe tener un rol que incluya los tipos de acción setUserWriteBlockMode y bypassWriteBlockingMode. Para otorgarle estas acciones, cree un rol personalizado que las incluya y asígnelo al usuario. Para obtener más información, consulte Conectar un clúster autogestionado a Atlas.

Nota

El bloqueo de escritura solo se aplica a los usuarios que no tienen el tipo de acción bypassWriteBlockingMode. Los usuarios que tienen este tipo de acción pueden realizar escrituras.

Las operaciones de lectura en el clúster de origen siempre están permitidas.

Cuando el endpoint /progress indica que canWrite es true, los datos en los clústeres de origen y destino son coherentes.

Para ver en qué estado se encuentra mongosync, llama al endpoint /progress de la API. La salida /progress incluye un valor booleano, canWrite.

  • Cuando canWrite es true, es seguro guardar en el clúster de destino.

  • Cuando canWrite sea false, no guarde en el clúster de destino.

Puedes guardar de forma segura en el clúster de origen mientras mongosync se está sincronizando. No guardes en el clúster de destino a menos que canWrite esté true.

Por defecto, mongosync establece el nivel de preocupación de lectura en "majority" para las lecturas en el clúster de origen. Para las escrituras en el clúster de destino, mongosync establece el nivel de preocupación de escritura en "majority" con j: verdadero.

Para obtener más información sobre la configuración y el comportamiento de nivel de consistencia de lectura y nivel de confirmación de escritura (write concern), consulta Nivel de consistencia de lectura y nivel de confirmación de escritura (write concern).

mongosync Requiere la preferencia de lectura primary al conectarse a los clústeres de origen y destino. Para obtener más información, consulte Opciones de preferencia de lectura.

mongosync reescribe los valores heredados del índice, como 0 o una string vacía, a 1 en el destino. mongosync también remueve cualquier opción de índice no válida en el destino.

mongosync La replicación es diferente de la replicación de datos dentro de un conjunto de réplicas. mongosync combina y reordena las escrituras desde el clúster de origen al clúster de destino durante la sincronización, y también modifica temporalmente varias características de la colección.

Como resultado, no se garantiza que el destino coincida con el clúster de origen en ningún punto mientras la sincronización siga ejecutándose, incluso cuando la sincronización esté en pausa. Para asegurarse de que los clústeres de destino y origen coincidan antes de hacer el corte, llame al endpoint commit.

La relación entre el clúster de origen y el de destino finaliza al confirmar, a menos que utilice la funcionalidad de reversión. Para obtener información sobre las limitaciones a mitad de la sincronización, consulte Limitaciones de migración de mongosync para conocer las limitaciones.

Importante

Hasta que se haya llamado a commit en mongosync y canWrite devuelva true correctamente, las colecciones migradas en el clúster de destino no se pueden usar para aceptar tráfico de lectura o guardado de aplicaciones. No se debe utilizar mongosync para mantener clústeres secundarios para recuperación ante desastres, análisis u otros casos de uso similares.

mongosync modifica temporalmente las siguientes características de la colección durante la sincronización. Los valores originales se restauran durante el proceso de confirmación.

Cambiar
Descripción

Unique Indexes

Los índices únicos en el clúster de origen se sincronizan como índices no únicos en el clúster de destino.

TTL Indexes

La sincronización establece expireAfterSeconds en el valor de MAX_INT en el clúster de destino.

Hidden Indexes

La sincronización replica los índices ocultos como no ocultos.

Bloqueo de escritura

mongosync gestiona el bloqueo de guardar internamente en función de tu configuración de migración.

Para obtener más información,consulte Bloqueo de escritura.

Colecciones con tamaño fijo

La sincronización establece las colecciones limitadas al tamaño máximo permitido.

Índices Dummy

En algunos casos, la sincronización puede crear índices ficticios en el destino para admitir escrituras en colecciones fragmentadas o agrupadas.

mongosync No admite la creación de índices iterativos durante la migración. Para evitar la creación de índices de forma iterativa durante la migración, utilice uno de los siguientes métodos para garantizar que los índices de destino coincidan con los índices de origen:

  • Construya el índice en la fuente antes de la migración.

  • Cree el índice en el origen durante la migración con una configuración de índice predeterminada.

  • Construye el índice en el destino después de la migración.

mongosync almacena su metadatos en una base de datos o en varias bases de datos durante la migración. Las bases de datos de metadatos pueden llamarse de cualquiera de las siguientes maneras:

  • __mdb_internal_mongosync

  • Cualquier cosa que comience con __mdb_internal_mongosync_verifier

Descartar cualquier base de datos de metadatos después de una migración exitosa.

Advertencia

Si inició la migración con reversible establecido en true, no puede revertir la migración después de descartar las bases de datos de metadatos.

mongosync Admite consistencia eventual en el clúster de destino. La consistencia de lectura no está garantizada en el clúster de destino hasta la confirmación. Antes de la confirmación, los clústeres de origen y destino pueden diferir en un momento dado. Para obtener más información, consulte Consideraciones durante la sincronización.

Mientras mongosync se está sincronizando, mongosync puede reordenar o combinar escrituras mientras las transmite de la fuente al destino. Para un documento determinado, el número total de guardados puede diferir entre el origen y el destino.

Las transacciones podrían no aparecer atómicamente en el clúster de destino. Las escrituras reintentables pueden no ser reintentables en el clúster de destino.

Si el análisis de rendimiento está activado en una base de datos de origen, MongoDB crea una colección especial llamada <db>.system.profile. Una vez que la sincronización esté completa, Mongosync no descartará la colección <db>.system.profile del destino, incluso si la base de datos de origen se descarta en un momento posterior. La colección <db>.system.profile no cambiará la precisión de los datos de usuario en el destino.

Si se descarta una base de datos con vistas en el origen, el destino puede mostrar una colección system.views vacía en esa base de datos. La colección vacía system.views no cambiará la precisión de los datos de usuario en el destino.

Mongosync no replica las colecciones del sistema en el clúster de destino.

Si se ejecuta el comando dropDatabase en el clúster de origen, este cambio no se aplica directamente en el clúster de destino. En su lugar, Mongosync elimina las colecciones y vistas de usuario en la base de datos del clúster de destino, pero no elimina las colecciones del sistema en dicha base de datos.

Por ejemplo, en el clúster de destino:

  • La operación de eliminación no afecta a una colección system.js creada por el usuario.

  • Si habilita la creación de perfiles, la colección system.profile permanece.

  • Si crea vistas en el clúster de origen y luego elimina la base de datos, al replicar la eliminación se eliminan las vistas, pero queda una colección system.views vacía.

En estos casos, la replicación de dropDatabase elimina todas las colecciones creadas por el usuario de la base de datos, pero deja las colecciones del sistema en el clúster de destino.

mongosync Crea colecciones con nuevos UUID en el clúster de destino. No existe relación entre los UUID del clúster de origen y el de destino. Si las aplicaciones contienen UUID codificados (lo cual MongoDB no recomienda), es posible que deba actualizarlas para que funcionen correctamente con el clúster migrado.

mongosync inserta documentos en el clúster de destino en un orden indefinido que no conserva el orden natural de clasificación del clúster de origen. Si las aplicaciones dependen del orden de los documentos pero no tienen un método de ordenamiento definido, es posible que debas actualizar esas aplicaciones para especificar el orden de clasificación esperado antes de que las aplicaciones funcionen correctamente con el clúster migrado.

MongoDB Atlas y otros servicios en la nube almacenan datos esenciales en bases de datos internas dedicadas dentro de su clúster. Estas bases de datos comienzan con __mdb_internal. A partir de 1, 18, mongosync ignora todas las bases de datos que comienzan con __mdb_internal.

Nuevo en la versión 1.19.

Si su clúster de origen ejecuta MongoDB 6.0 o posterior, o si establece buildIndexes en afterDataCopy o excludeHashedAfterCopy al ejecutar start, mongosync crea índices en el clúster de destino después de la copia de datos. Calcula programáticamente un tamaño de lote apropiado al llamar a createIndexes para crear índices en clústeres de destino alojados en MongoDB Atlas. Para clústeres que no son Atlas, mongosync recurre a un tamaño de lote predeterminado de 2, ya que no puede evaluar de forma fiable la memoria asignada para la creación de índices.

Puede encontrar el tamaño de lote calculado en los mongosync registros buscando "createIndexes batch size".

Para establecer explícitamente un tamaño de lote para la creación de índices, consulte la opción de configuración --createIndexesBatchSize.

mongosync Paraleliza automáticamente la creación de índices en clústeres de destino Atlas mediante la emisión concurrente de comandos 12 createIndexes y se basa en el parámetro maxNumActiveUserIndexBuilds del clúster de destino para limitar el número de comandos createIndexes concurrentes. Los clústeres de destino que no son Atlas con datos preexistentes tienen creaciones de índices en serie para evitar sobrecargar la CPU de destino. Si tiene un clúster de destino que no es Atlas y establece preExistingDestinationData en true al llamar al punto final start, no podrá actualizar el paralelismo de la creación de índices.

Para ajustar explícitamente el paralelismo de la creación de índices de mongosync, modifique la configuración de maxNumActiveUserIndexBuilds en el clúster de destino. Aumentar este valor mejora la velocidad general de creación de índices, pero incrementa la carga de CPU en el destino. Supervise atentamente la utilización de la CPU para evitar la degradación del rendimiento y los eventos de autoescalado no deseados, que pueden ocurrir cuando la utilización de la CPU del clúster supera estos límites.

mongosync es resiliente y puede gestionar errores no fatales. Los registros que contienen la palabra "error" o "fallo" no indican que mongosync esté fallando o corrompiendo datos. Por ejemplo, si ocurre un error de red, el registro mongosync puede contener la palabra "error", pero mongosync todavía es capaz de completar la sincronización. En el caso de que no se complete una sincronización, mongosync escribe una entrada de registro fatal.

El uso de operaciones DDL (operaciones que actúan sobre colecciones o bases de datos como db.createCollection() y db.dropDatabase()) durante la sincronización aumenta el riesgo de fallos en la migración y puede afectar negativamente al rendimiento de mongosync. Para obtener el mejor rendimiento, evite realizar operaciones DDL en el clúster de origen mientras se esté realizando la sincronización.

Para obtener más información sobre las operaciones DDL,consulte Operaciones y transacciones DDL pendientes.

La latencia de red o largas distancias físicas entre los componentes de migración pueden afectar negativamente la velocidad de sincronización.

Latencia entre mongosync y las particiones de destino
Por cada operación de escritura en el clúster de origen, mongosync realiza un viaje de ida y vuelta al servidor de destino. mongosync también realiza solicitudes de soporte para cada lote de operaciones de escritura replicadas. Cuanto mayor sea la latencia, más lenta será la sincronización.
Latencia entre particiones de destino
mongosync ejecuta operaciones y actualiza sus propios metadatos en lotes dentro de una transacción en el clúster de destino. Esto puede dar lugar a transacciones entre particiones, lo que podría ser más costoso si las particiones están muy separadas.
Latencia entre los nodos de cualquier set de réplicas en el clúster de origen o destino
mongosync Utiliza escrituras "majority" y lecturas "majority", que requieren confirmación de varios nodos en un conjunto de réplicas, incluidos los conjuntos de réplicas con respaldo de fragmentos. Si la mayoría de estos nodos no se encuentran en la misma región, esto tendrá consecuencias negativas en el rendimiento.

Las siguientes consideraciones se refieren a las interrupciones durante el proceso mongosync.

Si mongosync encuentra un error o se vuelve inaccesible durante la sincronización, o puedes reanudar tu operación mongosync desde donde se detuvo. El binario mongosync es sin estado y almacena los metadatos para un reinicio en el clúster de destino.

Para continuar con la sincronización, reinicia mongosync una vez que esté disponible nuevamente y utiliza los mismos parámetros que tu sincronización interrumpida. Una vez que reinicies mongosync, el proceso se reanuda desde donde se detuvo.

Si su clúster de origen o destino se bloquea inesperadamente, puede recuperar la migración sin reiniciarla desde el principio. Después de que el clúster vuelva a estar en línea, reinicia el archivo binario mongosync utilizando los mismos parámetros de cadena de conexión de tu migración original. mongosync lee su estado almacenado del clúster de destino y reanuda automáticamente la sincronización.

Para verificar que la sincronización se ha reanudado, llama al endpoint /progress y confirma que state devuelve RUNNING.

Advertencia

Si la interrupción del clúster de origen supera la oplog window, mongosync no puede reanudarse. Debes reiniciar la migración desde el principio, lo que remueve todos los datos migrados del clúster de destino.

Si mongosync está en el estado PAUSADO, mongosync no admite las siguientes acciones:

  • Actualizar la versión de MongoDB del clúster de origen o destino

  • Habilitar y luego deshabilitar el balanceador

Puedes actualizar mongosync mientras está en el estado PAUSED.

Califique esta página