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 información sobre la compatibilidad del servidor de MongoDB, consulta Compatibilidad de versiones de MongoDB Server.
mongosyncno admite actualizaciones de versión de servidor en el lugar que cambian la versión principal o secundaria durante una migración.mongosyncsí permite actualizaciones de versiones patch. Para obtener más información, consulta las instrucciones de actualización del servidor.El clúster de destino debe estar vacío.
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
mongosyncesté en ejecución.Si se desea iniciar el proceso de confirmación y no se ha establecido
enableUserWriteBlockingen"sourceAndDestination"al utilizar el punto finalstart, es necesario impedir la escritura en el clúster de origen antes de iniciar el proceso de confirmación.colecciones system.* 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.
Un MongoDB Shared nivel no es compatible.
No se admite Queryable Encryption.
No se puede sincronizar una colección que tenga un índice único y un índice no único definidos en el mismo campo o campos.
Antes de intentar ejecutar
mongosynccon un clústerM10+Atlas, deshabilita la opción Require Indexes for All Queries.mongosyncno sincroniza usuarios ni roles.mongosyncdoes not replicateapplyOpsoperations made on the source cluster during sync to the destination cluster.mongosyncmust read from the source cluster using theprimaryread preference.mongosyncno admite clústeres de origen o destino que estén actualizando actualmente las versiones de MongoDB.mongosyncno admite la sincronización de Índices de búsqueda Atlas.mongosyncsolo admite clústeres que utilizan el motor de almacenamiento WiredTiger.No puedes sincronizar una colección con ningún documento que tenga una marca de tiempo vacía, como
Timestamp(0,0)en versiones anteriores a6.0 clúster de origen.mongosyncno admite documentos con nombres de campo duplicados. Para más detalles, consulta MongoDB no admite nombres de campos duplicados.
MongoDB Community Edition
MongoDB no prueba Mongosync con Community builds y en la mayoría de los casos, MongoDB no ofrece asistencia para Mongosync con implementaciones de Community. Si deseas usar Mongosync con MongoDB Community Edition, contacta a un representante de ventas de MongoDB para hablar sobre requisitos y opciones individuales.
Tipos de colecciones no permitidos
No se admiten colección de series de tiempo.
Las colecciones con índice clusterizado con expireAfterSeconds establecido no son compatibles.
Clústeres fragmentados
mongosyncno admite sincronizar desde un clúster a un set de réplicas.mongosyncno admite la sincronización con una topología de clúster fragmentado con uno o más árbitros.mongosyncno soporta la sincronización hacia o desde clústeres globales.La sincronización de un set de réplicas a un clúster tiene las siguientes limitaciones:
mongosyncpermite a los usuarios cambiar el nombre de las colecciones que la opciónsharding.shardingEntriesincluye durante la sincronización con algunas limitaciones. Para más detalles, consulta Renombrar durante la sincronización.Si utilizas la opción
sharding.createSupportingIndexes, los índices se crean automáticamente en el clúster de destino durante la sincronización. No se pueden crear estos índices posteriormente en el clúster de origen.Si quieres crear un índice para admitir las claves de partición manualmente, debes crear el índice antes de que
mongosynccomience o después de que se complete la migración ymongosyncse detenga.
Dentro de una colección, el campo
_iddebe ser único en todas las particiones del clúster. Consulta Clústeres particionados e índices únicos para obtener más detalles.The
movePrimarycommand cannot be used to reassign the primary shard while syncing.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 los índices que tienen especificaciones de índice coherentes en todas las particiones.Nota
Para comprobar la existencia de incoherencias de índice, consulte Buscar Índices Inconsistentes en Particiones.
If the source or destination cluster is a sharded cluster and you are not running
mongosyncwith namespace filtering, you must disable the source cluster's balancer by running thebalancerStopcommand and waiting 15 minutes for the command to complete.Si el clúster de origen o destino es un clúster fragmentado y está ejecutando
mongosynccon filtrado de espacios de nombres, puede habilitar globalmente el equilibrador del clúster de origen, pero debe desactivarlo para todas las colecciones dentro del filtro de espacios de nombres. Consulta Cómo desactivar el balanceador para colecciones en sincronización filtrada. También se puede deshabilitar completamente el balanceador del clúster de origen.You must always disable the balancer on a sharded destination cluster by using
balancerStop.If you have enabled the source cluster's balancer, but disabled it for collections within the namespace filter, do not run
shardCollectionon collections within the namespace filter. If you runshardCollectionon collections within the namespace filter during the migration,mongosyncreturns an error and stops, which requires you to start the migration from scratch.mongosyncdoesn't support running the commandtransitionFromDedicatedConfigServerduring execution.La clave de partición no puede ser refinada mientras se está sincronizando.
The
reshardCollectionoperations from the source cluster are not supported during sync.El número máximo de índices por colección fragmentada 63 es, que es uno menos que el límite predeterminado 64 de.
mongosyncsolo admite la sincronización de colecciones particionadas que tienen la configuración por defecto de la intercalación.
Reversión
- Si la fuente anterior tiene índices únicos que están parcialmente distribuidos a través de particiones, revertirlo puede causar fallos. Asegúrese de que existan índices únicos en todas las particiones antes de revertir.
Los clústeres de origen y destino deben tener el mismo número de particiones. No se puede sincronizar de forma inversa cuando los clústeres tienen diferentes topologías.
Los clústeres de origen y destino deben ejecutar la misma versión principal de MongoDB.
- In order to reverse direction,
mongosyncrequires that all unique indexes on the source cluster (except for_id) do not have legacy unique index keys.
Múltiples clústeres
mongosyncno admite la sincronización de varios clústeres de origen a un clúster de destino.Un clúster no puede ser simultáneamente un clúster de origen en una instancia de
mongosyncy un clúster de destino en otra instancia demongosync.
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 comenzar.
El clúster de destino no debe contener la base de datos del sistema
mongosync_reserved_for_internal_useantes de comenzar.No puede modificar un filtro que esté en uso. Para crear un nuevo filtro, consulta: Reemplazar un filtro existente.
Solo puedes renombrar las colecciones en ciertas situaciones. Para más detalles, consulta: Añadir y renombrar colecciones.
Si un filtro incluye una vista pero no la colección base, sólo los metadatos de la vista se sincronizan con el clúster de destino. Para incluir los documentos de vista, también debe sincronizar la colección base.
No puedes especificar colección del sistema ni base de datos del sistema en un filtro.
To use the
$outaggregation stage or themapReducecommand (when set to create or replace a collection) with filtering, you must configure the filter to use the entire database. You cannot limit the filter to collections within the database.Para obtener más información, consulte Filtrado con mapReduce y $out.
El filtrado no permite el bloqueo doble de escritura. Puedes utilizar el bloqueo de guardar solo de destino.
Colecciones con tamaño fijo
A partir de 1.3.0, Mongosync admite colecciones con tamaño fijo con algunas limitaciones.
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.
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.
MongoDB Atlas Bases de datos internas
mongosync 1.17 y anteriores devuelven un error si el clúster de destino contiene una __mdb_internal_atlas base de datos no vacía. Esta es una base de datos interna utilizada por MongoDB Atlas. Es posible que reciba un error que "found existing data on the destination cluster; the destination cluster must be empty; please drop existing data on the destination and start the migration again" indique.
Para evitar migraciones fallidas, actualice a mongosync 1.18 o posterior, que ignora automáticamente todas las bases de datos internas.
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.
Verificador Integrado
A partir de 1.9, mongosync puede utilizar un verificador incrustado para confirmar la sincronización exitosa de las colecciones desde el clúster de origen hasta el 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 la memoria, lo que puede causar una sobrecarga significativa de memoria. Para ejecutar el verificador,mongosyncrequiere aproximadamente 10 GB de memoria, además de 500 MB adicionales por cada 1 millones de documentos.No se puede reanudar el verificador. Si un usuario detiene o pausa la sincroniza y luego inicia
mongosyncnuevamente por cualquier motivo, el proceso de verificación se reinicia desde el principio. Esto puede hacer que la verificación quede sustancialmente por detrás de la migración.Si inicias 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 suceder después de que llames al endpoint/starto mucho más tarde, como cuando un usuario crea un índice TTL en el clúster de origen mientras una migración está en curso.Para sincronizar colecciones TTL sin crear índices en el clúster de destino, debes iniciar la sincronización con el verificador deshabilitado.
Verificaciones no compatibles
El verificador no comprueba los siguientes espacios de nombres:
Colecciones con tamaño fijo
Colecciones con índices TTL, incluidos los índices TTL que se agregan o descartan durante la migración
Colecciones que no usan la intercalación por defecto
Vistas
El verificador no revisa las siguientes funcionalidades de colección:
Metadatos de la colección
Indexes
Para verificar los datos y metadatos anteriores, escriba comprobaciones adicionales para estas colecciones y funcionalidades de colección. Para obtener más información, consulta Verificar transferencia de datos.
Nota
A partir de la 1.10 versión, el verificador comprueba si existen inconsistencias en los datos derivadas de un evento DDL ocurrido en el clúster de origen anterior6 a.0 durante la migración. Esto se debe a que6 0 las migraciones anteriores a. no admiten eventos DDL.
Para obtener más información, consulte 60 Limitaciones de migración previas a..
Configuración de consulta persistente
mongosync no migra la Configuración de query Persistente (PQS), que se introdujo en MongoDB 8.0. Si tu clúster de origen utiliza PQS, debes migrarlos manualmente.
Migraciones pre-6.0
A partir de 1.10, mongosync admite migraciones desde clústeres de origen que ejecutan versiones del servidor de MongoDB anteriores a 6.0. Para obtener información sobre las rutas de migración compatibles, consulte Compatibilidad de versiones de MongoDB Server.
Se aplican las siguientes limitaciones al pre-6.0 migración:
Las escrituras que producen DDL eventos no pueden ocurrir en el clúster de origen durante la migración. Los siguientes eventos no pueden ocurrir:
collModcreatecreateIndexesdropdropDatabasedropIndexesrefineCollectionShardKeyrenamereshardCollectionshardCollection
This includes operations that may create new collections such as
mapReduce,$out, and$merge. This also includes collections created implicitly from inserts. Only writes that produce CRUD events can occur during the migration.Nota
Se permiten escrituras que produzcan eventos DDL en colecciones fuente fuera del filtro de espacio de nombres.
geoHaystacklos índices no son compatibles.No puedes establecer la opción
enableUserWriteBlockingen"sourceAndDestination"en la solicitud/start, por lo que el bloqueo dual de escritura no es compatible. Se admite el bloqueo de guardar solo para el destino. Asegúrese de que no se realicen guardados en el clúster de origen después de llamar al punto final/commit.No puedes habilitar el parámetro de particionado
createSupportingIndexes. En su lugar, crea un índice para admitir tu clave de partición en el clúster de origen.Si hay algún índice con especificaciones inconsistentes o que falte en una o más particiones,
mongosyncdevuelve un error. Para comprobar inconsistencias de índices, consulta Buscar índices inconsistentes en las particiones.The source cluster cannot have orphaned documents. To clean up any orphaned documents, run the
cleanupOrphanedcommand on your source cluster.