Advertencia
mongosync no verifica el cumplimiento de las limitaciones documentadas. Es importante asegurarse de que la aplicación no se vea afectada por las limitaciones.Ejecutar mongosync en presencia de una de estas limitaciones podría provocar un comportamiento indefinido en el clúster de destino.
Debe respetar estas limitaciones durante toda la migración, incluso cuando la migración esté pausada o detenida si se reanudará.
Limitaciones generales
Nota
Para obtener información sobre la compatibilidad del servidor MongoDB, consulte Compatibilidad de versiones del servidor MongoDB.
mongosyncNo admite actualizaciones de versiones de servidor locales que cambien la versión principal o secundaria durante una migración.mongosyncsí permite actualizaciones de versiones de parche. Para obtener más información, consulte Instrucciones de actualización del servidor.mongosyncNo valida que los clústeres o el entorno estén configurados correctamente.Otros clientes no deben escribir en el clúster de destino mientras
mongosyncse esté ejecutando.Si desea iniciar el proceso de confirmación y no
enableUserWriteBlocking"sourceAndDestination"configuró en cuando utilizó el puntostartfinal, debe evitar las escrituras en el clúster de origen antes de iniciar el proceso de confirmación.Las colecciones del sistema.* no se replican.
No se admiten documentos que tengan nombres de campos que comiencen con el símbolo dólar (
$). Consulte Nombres de campos con puntos y signos de dólar.Los clústeres sin servidor no son compatibles.
No se admite un nivel compartido de MongoDB.
No se admiteel cifrado consultable.
No se puede sincronizar una colección que tenga un índice único y un índice no único definido en los mismos campos.
Antes de intentar ejecutar
mongosynccon un clúster AtlasM10+, desactive la Require Indexes for All Queries Opción para establecernotablescanafalsetanto en el clúster de origen como en el de destino.mongosyncNo sincroniza usuarios ni roles.mongosyncno replica operaciones realizadas en el clúster de origen durante la sincronización con el clúster deapplyOpsdestino.mongosyncdebe leer desde el clúster de origen utilizando laprimarypreferencia de lectura.mongosyncno admite clústeres de origen o destino que actualmente estén actualizando versiones de MongoDB.mongosyncno admite la sincronización de índices de búsqueda de Atlas.mongosyncSolo admite clústeres que utilizan el motor de almacenamiento WiredTiger.No se puede sincronizar una colección con ningún documento que tenga una marca de tiempo vacía, como
Timestamp(0,0)en clústeres de origen anteriores a6.0.mongosyncNo se admiten documentos con nombres de campo duplicados. Para más información, consulte MongoDB no admite nombres de campo duplicados.mongosyncno admite la migración de un espacio de nombres a un clúster de destino que ya contiene un espacio de nombres en conflicto.
MongoDB Community Edition
MongoDB no prueba Mongosync con compilaciones comunitarias y, en la mayoría de los casos, no ofrece soporte para Mongosync con implementaciones comunitarias. Si desea usar Mongosync con MongoDB Community Edition, contacte con un representante de ventas de MongoDB para hablar sobre los requisitos y las opciones personalizadas.
Tipos de colección no admitidos
No se admiten colecciones de series temporales.
No se admiten colecciones agrupadas con expireAfterSeconds configurado.
Clústeres fragmentados
mongosyncNo admite la sincronización desde un clúster fragmentado a un conjunto de réplicas.mongosyncno admite la sincronización con una topología de clúster fragmentada con uno o más árbitros.mongosyncNo admite la sincronización hacia o desde clústeres globales.La sincronización desde un conjunto de réplicas a un clúster fragmentado tiene las siguientes limitaciones:
mongosyncPermite a los usuarios renombrar las colecciones quesharding.shardingEntriesincluye la opción durante la sincronización, con algunas limitaciones. Para más información,consulte "Renombrar durante la sincronización".Si usa la opción
sharding.createSupportingIndexes, los índices se crean automáticamente en el clúster de destino durante la sincronización. No podrá crearlos posteriormente en el clúster de origen.Si desea crear un índice para admitir claves de fragmentos manualmente, debe crear el índice antes de que comience
mongosynco después de que se complete la migración ymongosyncse haya detenido.
Dentro de una colección, el
_idcampo debe ser único en todos los fragmentos del clúster. Consulte Clústeres fragmentados e índices únicos para obtener más información.El
movePrimarycomando no se puede utilizar para reasignar el fragmento principal durante la sincronización.No hay replicación para la configuración de zonas.
mongosyncreplica datos, no hereda zonas.No se pueden agregar ni eliminar particiones mientras se está sincronizando.
mongosyncsolo sincroniza los índices que existen en todas las particiones.mongosyncsolo sincroniza índices que tienen especificaciones de índice consistentes en todos los fragmentos.Nota
Para comprobar si hay inconsistencias en el índice, consulte Buscar índices inconsistentes en distintos fragmentos.
Si el clúster de origen o destino es un clúster fragmentado y no está ejecutando
mongosynccon filtrado de espacio de nombres, debe deshabilitar el equilibrador del clúster de origen ejecutando el comando ybalancerStopesperando 15 minutos para que se complete el comando.Si el clúster de origen o destino es un clúster fragmentado y se ejecuta con filtrado de
mongosyncespacios de nombres, se puede habilitar globalmente el balanceador del clúster de origen, pero debe deshabilitarlo para todas las colecciones dentro del filtro de espacios de nombres. Consulte Deshabilitar el balanceador para colecciones en la sincronización filtrada. También se puede deshabilitar por completo el balanceador del clúster de origen.Siempre debes deshabilitar el balanceador en un clúster de destino particionado usando
balancerStop.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
shardCollectionen las colecciones dentro del filtro de espacio de nombres. Si ejecutashardCollectionen las colecciones dentro del filtro de espacio de nombres durante la migración,mongosyncdevuelve un error y se detiene, lo que requiere que inicie la migración desde cero.mongosyncno admite la ejecución del comandotransitionFromDedicatedConfigServerdurante la ejecución.No debe ejecutar los
moveChunkcomandos y en los clústeres de origen o destino.moveRangeLa clave de fragmento no se puede refinar durante la sincronización.
Las operaciones del clúster de origen no se admiten durante la
reshardCollectionsincronización.La cantidad máxima de índices por colección fragmentada es,63 que es uno menos que el límite predeterminado 64 de.
mongosyncNo admite colecciones con una intercalación distinta a la predeterminada en clústeres fragmentados. Esto aplica tanto a colecciones fragmentadas como no fragmentadas.mongosyncerrores en índices que son inconsistentes o faltan en algunos fragmentos que contienen datos.mongosyncfalla si hay una ventana de equilibrio configurada en el clúster de origen o destino.
Revertir
Si la fuente antigua tiene índices únicos distribuidos parcialmente entre fragmentos, la reversión puede causar fallos. Asegúrese de que existan índices únicos en todos los fragmentos antes de revertir.
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.
Para invertir la dirección, requiere
mongosyncque todos los índices únicos en el clúster de origen_id(excepto) no tengan claves de índice únicas heredadas.
Múltiples clústeres
mongosyncNo admite la sincronización de varios clústeres de origen con un clúster de destino.Un clúster no puede ser simultáneamente un clúster de origen en una instancia
mongosyncy un clúster de destino en otra instanciamongosync.
Sincronización filtrada
El filtrado no es compatible con la sincronización reversible.
El clúster de destino no debe contener datos de usuario antes de iniciarse a menos que establezca el parámetro preExistingDestinationData en
truecuando llame/starta.El clúster de destino no debe contener la base de datos del sistema
mongosync_reserved_for_internal_useantes de iniciar.No se puede modificar un filtro en uso. Para crear un filtro nuevo, consulte: Reemplazar un filtro existente.
Solo se pueden renombrar colecciones en ciertas situaciones. Para más información, consulte: Agregar y renombrar colecciones.
Si un filtro incluye una vista, pero no la colección base, solo los metadatos de la vista se sincronizan con el clúster de destino. Para incluir los documentos de la vista, también debe sincronizar la colección base.
No se pueden especificar colecciones del sistema ni bases de datos del sistema en un filtro.
Para usar la
$outetapa de agregación o el comando (cuandomapReducese configura para crear o reemplazar una colección) con filtrado, debe configurar el filtro para que use toda la base de datos. No puede limitar el filtro a colecciones dentro de la base de datos.Para obtener más información,consulte Filtrado con mapReduce y $out.
El filtrado no admite el bloqueo de escritura dual. Puede usar el bloqueo de escritura solo en el destino.
Colecciones con tamaño fijo
A partir 1.3.0 de, Mongosync admite colecciones limitadas con algunas limitaciones.
convertToCappedNo se admite. SiconvertToCappedejecuta,mongosyncsaldrá con un error.cloneCollectionAsCappedNo es compatible.
Las colecciones limitadas en el clúster de origen funcionan normalmente durante la sincronización.
Las colecciones limitadas 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 la cantidad máxima de documentos y el tamaño máximo de documentos durante la confirmación.
Colecciones del sistema
Mongosync no replica las colecciones del sistema en el clúster de destino.
Si ejecuta un comando en el clúster de origen, este cambio no se aplica directamente al clúster de destino. En su lugar, Mongosync elimina las colecciones de usuarios y las vistas de la base de datos del clúster de destino, pero no las colecciones del sistema en esa base de dropDatabase datos.
Por ejemplo, en el clúster de destino:
La operación de eliminación no afecta a una colección creada por el usuario.
system.jsSi habilita la creación de perfiles, la colección
system.profilepermanece.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 se deja una colección
system.viewsvací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.
Creaciones de índices continuas
mongosync No se admiten compilaciones de índices continuas durante la migración. Para evitar la compilación continua de índices durante la migración, utilice uno de los siguientes métodos para garantizar que los índices de destino coincidan con los de origen:
Construya el índice en la fuente antes de la migración.
Construya el índice en la fuente durante la migración con una compilación de índice predeterminada.
Construya el índice en el destino después de la migración.
Verificador integrado
A partir de 1.9, mongosync puede usar un verificador incorporado para confirmar la sincronización exitosa de las recopilaciones del clúster de origen al clúster de destino.
Compatibilidad
El verificador integrado no está disponible en mongosync 1.8 y anteriores.
Para métodos de verificación alternativos, ve Verificar transferencia de datos.
Limitaciones
El verificador integrado tiene las siguientes limitaciones:
mongosyncAlmacena el estado del verificador en memoria, lo que puede generar una sobrecarga de memoria significativa. Para ejecutar el verificador,mongosyncrequiere aproximadamente 10 GB de memoria, más 500 MB adicionales por cada 1 millones de documentos.El verificador no se puede reanudar. Si un usuario detiene o pausa la sincronización y luego reinicia
mongosyncpor cualquier motivo, el proceso de verificación se reinicia desde el principio. Esto puede provocar que la verificación se retrase considerablemente con respecto a la migración.Al migrar de un conjunto de réplicas a un clúster fragmentado, no se pueden cambiar los nombres de las colecciones de origen especificadas en las opciones de fragmentación. Si se cambia el nombre de una colección incluida en las opciones de fragmentación durante la fase de CEA, el verificador informa de una discrepancia en la fragmentación.
Si inicia la sincronización con la verificación habilitada y
buildIndexesconfigurado ennever, la migración fallará simongosyncencuentra una colección TTL en el clúster de origen. Esto puede ocurrir después de llamar al punto de conexión/starto 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.
Comprobaciones de verificación no admitidas
El verificador no comprueba los siguientes espacios de nombres:
Colecciones limitadas
Colecciones con índices TTL, incluidos los índices TTL que se agregan o eliminan durante la migración
Colecciones que no utilizan la intercalación predeterminada
Para verificar colecciones no admitidas, añada código de script adicional para examinar las colecciones. Para obtener más información, consulta Verificar transferencia de datos.
Nota
A partir de la 1.10 versión, el verificador busca inconsistencias en los datos de un evento DDL ocurrido en el clúster de origen anterior a la 6.0 durante la migración. Esto se debe a que las migraciones anteriores a la6.0 no admiten eventos DDL.
Para obtener más información, consulte 6.0 Limitaciones de migración anteriores a.
Configuración de consulta persistente
mongosync No migra la configuración de consultas persistentes (PQS), introducida en MongoDB.8.0 Si su clúster de origen usa PQS, debe migrarla manualmente.
Migraciones anteriores a6.0
A partir 1.10 de, mongosync admite migraciones desde clústeres de origen que ejecutan versiones del servidor MongoDB anteriores 6.0 a. Para obtener información sobre las rutas de migración compatibles, consulte Compatibilidad de versiones del servidor MongoDB.
Las siguientes limitaciones se aplican a las migraciones anteriores a6.0:
El clúster de origen no puede tener documentos huérfanos. Para eliminarlos, ejecute el comando en
cleanupOrphanedlasmongodinstancias del nodo principal de cada fragmento en su clúster de origen. Espere a que este comando se complete con el estado{ok:1}antes de iniciar la migración.Las escrituras que generan eventos DDL no pueden ocurrir en el clúster de origen durante la migración. Los siguientes eventos no pueden ocurrir:
collModcreatecreateIndexesdropdropDatabasedropIndexesrefineCollectionShardKeyrenamereshardCollectionshardCollection
Esto incluye operaciones que pueden crear nuevas colecciones,
mapReducecomo, y. También incluye colecciones creadas implícitamente a partir de inserciones. Durante la migración, solo$out$mergese pueden realizar operaciones de escritura que generen eventos CRUD.Nota
Se permiten escrituras que produzcan eventos DDL en colecciones de origen fuera del filtro de espacio de nombres.
geoHaystackLos índices no son compatibles.El punto final/reverse no es compatible. No se puede habilitar la
reversibleopción en la solicitud /start.No se puede establecer la opción
enableUserWriteBlockingen"sourceAndDestination"en la solicitud/start, por lo que no se admite el bloqueo de escritura dual. Se admite el bloqueo de escritura solo en el destino. Asegúrese de que no se realice ninguna escritura en el clúster de origen después de llamar al punto final/commit.No se puede habilitar el
createSupportingIndexesparámetro de fragmentación. En su lugar, cree un índice compatible con su clave de fragmentación en el clúster de origen.Si hay índices con especificaciones inconsistentes o que faltan en uno o más fragmentos,
mongosyncdevuelve un error. Para comprobar si hay inconsistencias en los índices,consulte "Detectar índices inconsistentes en distintos fragmentos".