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.
Aviso de Exención de Verificador Integrado
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.
Configuraciones
Independencia del clúster
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.
archivo de configuración
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.
Tipos de Clúster y Colección
Clústeres fragmentados
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
You must always disable the balancer on a sharded destination cluster by using balancerStop. After stopping the balancer, wait fifteen minutes before starting mongosync. This gives the cluster time to finish any in-progress chunk migrations.
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 y balancerStop 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.
During migration, do not run the moveChunk or moveRange commands. If you have enabled the source cluster's balancer, but disabled it for collections within the namespace filter, do not run shardCollection on collections within the namespace filter. If you run shardCollection on collections within the namespace filter during the migration, mongosync returns an error and stops, which requires you to start the migration from scratch.
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.
Desactivación automática del balanceador
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.
IMPORTANT: If mongosync disables the balancer for either cluster and then fails before commit, you must re-enable the balancer(s) manually by using the balancerStart database command if you do not plan to run mongosync again.
Deshabilitar el equilibrador para colecciones en la sincronización filtrada
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.
Activa el balanceador para el clúster de origen.
Antes de iniciar mongosync con un filtro de espacio de nombres, habilite el balanceador para el clúster de origen ejecutando el sh.startBalancer() método mongosh en.
Deshabilite el balanceador para cada colección.
Desactive el balanceador para cada colección dentro del filtro de espacio de nombres ejecutando el setAllowMigrations comando:
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.
Fragmentos precortados
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.
Distribución de fragmentos
Importante
Even if the source cluster is balanced, mongosync doesn't ensure balance of the destination cluster. Because mongosync doesn't support the execution of sharding operations during migration, you must wait until it is safe to accept writes to rebalance the destination cluster. See Sharded Cluster Balancer for guidance on how to rebalance the cluster and sharded cluster limitations for information on sharded cluster limitations in 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.
partición primaria
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
Ejecutar 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,movePrimary consulte Clústeres fragmentados.
Configurar el clúster de particiones
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, consulta Partición de configuración.
Múltiples clústeres
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.
Colecciones con tamaño fijo
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.
convertToCappedis not supported. If you runconvertToCapped,mongosyncexits with an error.cloneCollectionAsCappedno está soportado.
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.
Lecturas y guardados
Bloqueo de escritura
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 | No | Sí |
Datos de destino preexistentes activados ( | 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 obtener más información,setUserWriteBlockMode consulte.
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.
Permisos de usuario
El mongosync usuario debe tener un rol que incluya los setUserWriteBlockMode bypassWriteBlockingMode tipos de acción y.
Nota
El bloqueo de escritura solo se aplica a los usuarios que no tienen el bypassWriteBlockingMode tipo de acción. Los usuarios que tienen este tipo de acción pueden realizar escrituras.
Lecturas permitidas
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.
Guardados permitidos
Para ver en qué estado se encuentra mongosync, llama al endpoint /progress de la API. La salida /progress incluye un valor booleano, canWrite.
Cuando
canWriteestrue, es seguro guardar en el clúster de destino.Cuando
canWriteseafalse, 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.
Preocupación por leer y nivel de confirmación de escritura (write concern)
Por defecto, mongosync establece el nivel de preocupación de lectura en para las lecturas en el clúster de origen. Para las escrituras en el clúster de "majority" 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).
preferencia de lectura
mongosync Requiere la primary preferencia de lectura al conectarse a los clústeres de origen y destino. Para obtener más información, consulte Opciones de preferencia de lectura.
Gestión del índice heredado
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.
Consideraciones de sincronización intermedia
mongosync replication is different from replication of data within a Replica Set. mongosync combines and reorders writes from the source to destination cluster during the sync, and also temporarily modifies various collection characteristics.
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 termina al confirmar, a menos que utilices la funcionalidad de reversión. Para obtener información sobre las limitaciones a mitad de la sincronización, consulta Limitaciones para más detalles.
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.
Cambios temporales en las características de la colección
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 |
Hidden Indexes | La sincronización replica los índices ocultos como no ocultos. |
Bloqueo de escritura |
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. |
Creaciones de índices continuas
mongosync no admite creación de índices continuos durante la migración. Para evitar crear índices de manera progresiva durante la migración, utiliza uno de los siguientes métodos para asegurarte de que tus índices de destino coincidan con tus índices de origen:
Construya el índice en la fuente antes de la migración.
Construye el índice en el origen durante la migración con una creación de índices predeterminada.
Construye el índice en el destino después de la migración.
mongosync Metadata
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_mongosyncCualquier cosa que comience con
__mdb_internal_mongosync_verifier
Debes descartar todas las bases de datos de metadatos después de una migración exitosa. Después de eliminar los metadatos, no es posible revertir la migración.
Clústeres de destino
coherencia
mongosync permite consistencia eventual en el clúster de destino. La coherencia de lectura no está garantizada en el clúster de destino hasta la confirmación. Antes de confirmar, las fuentes y clústeres de destino pueden diferir en un punto dado en el tiempo. Para obtener más información, consulta Consideraciones de sincronización intermedia.
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.
Perfilación
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.
Vistas
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.
Colecciones del sistema
Mongosync no replica las colecciones de sistema en el clúster de destino.
If you issue a dropDatabase command on the source cluster, this change is not directly applied on the destination cluster. Instead, Mongosync drops user collections and views in the database on the destination cluster, but it does not drop system collections on that database.
Por ejemplo, en el clúster de destino:
The drop operation does not affect a user-created
system.jscollection.If you enable profiling, the
system.profilecollection remains.If you create views on the source cluster and then drop the database, replicating the drop removes the views, but leaves an empty
system.viewscollection.
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.
UUIDs
mongosync crea colecciones con nuevos UUID en el clúster de destino. No existe una relación entre los UUID en el clúster de origen y el clúster de destino. Si las aplicaciones contienen UUID codificados (que MongoDB no recomienda), es posible que se deba actualizar esas aplicaciones para que funcionen correctamente con el clúster migrado.
Clasificación
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 Bases de datos internas
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 __mdb_internal con. A partir 1 de, y18 semongosync ignoran todas las bases de datos que comienzan __mdb_internal con.
Rendimiento
Optimización de creación de índices
Nuevo en la versión 1.19.
Tamaños de creación de índices
Si su clúster de origen ejecuta MongoDB 6.0 o posterior, o si establece buildIndexes en afterDataCopy o excludeHashedAfterCopy al start ejecutar, 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 createIndexes a 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 2 de lote predeterminado de, 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.
Paralelismo en la creación de índices
mongosync Paraleliza 12 createIndexes maxNumActiveUserIndexBuilds createIndexes automáticamente preExistingDestinationData true la creación de índices en clústeres de destino Atlas mediante la emisión concurrente de comandos y se basa en el parámetro del clúster de destino para limitar el número de comandos concurrentes. Los clústeres de destino start 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 en al llamar al punto final, no puede actualizar el paralelismo de la creación de índices.
To explicitly tune mongosync's index build parallelism, adjust the maxNumActiveUserIndexBuilds setting on the destination cluster. Increasing this value improves overall index build speeds but raises CPU load on the destination. Monitor CPU utilization closely to avoid performance degradation and unintended auto-scaling events, which can occur when the cluster's CPU utilization exceeds these limits.
Resiliencia
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.
Operaciones de Lenguaje de Definición de Datos (DDL)
Using DDL operations (operations that act on collections or databases such as db.createCollection() and db.dropDatabase()) during sync increase the risk of migration failure and may negatively impact mongosync performance. For best performance, refrain from performing DDL operations on the source cluster while the sync is in progress.
Para obtener más información sobre las operaciones DDL, consulta Operaciones DDL y transacciones pendientes.
Latencia de la red
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
mongosyncy las particiones de destino - Para cada operación en el clúster de origen,
mongosyncrealiza dos viajes de ida y vuelta al servidor de destino. Cuanto mayor sea la latencia, más lenta será la sincronización. - Latencia entre particiones de destino
mongosyncejecuta 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
mongosyncUtiliza"majority"escrituras y lecturas, 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"majority"rendimiento.
Interrupciones durante la sincronización
Las siguientes consideraciones se refieren a las interrupciones durante el proceso mongosync.
Errores y cierres inesperados
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.
Disponibilidad del clúster
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.
Sincronización pausada
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.