Esta página ofrece respuestas a algunas preguntas frecuentes que hemos encontrado. Si tiene preguntas adicionales, comuníquese con el Soporte de MongoDB.
¿Puedo cambiar el nivel de carga mientras? mongosync ¿Está sincronizando?
Sí, puede ajustar el nivel de carga de trabajo del clúster durante una migración siguiendo los pasos en Reconfigure mongosync During Synchronization.
¿Puedo realizar lecturas o escrituras en mi clúster de destino mientras mongosync se está sincronizando?
mongosync combina y reordena escrituras desde el origen hasta el destino durante la sincronización, y modifica temporalmente las características de la colección. Como resultado, mongosync no puede garantizar que el destino coincida con el origen, incluida una versión desactualizada del origen, en ningún momento durante la sincronización, incluso si la sincronización está en pausa. Para aceptar de manera segura el tráfico en las colecciones migradas en el clúster de destino, espera a que la migración commit. Para obtener más información, consulta Consideraciones intermedias de sincronización.
Realizar escrituras en las colecciones migradas del clúster de destino durante la sincronización genera un comportamiento indefinido. mongosync bloquea las escrituras en el clúster de destino de forma predeterminada. Para obtener más información sobre el bloqueo de escritura, consulte Bloqueo de escritura starty.
Tras la confirmación, solo es seguro escribir en las colecciones migradas en el clúster de destino cuando canWrite es true. Para comprobar el valor de canWrite, ejecuta el endpoint progress.
Para obtener más información sobre las lecturas y escrituras permisibles durante la sincronización, consulte Lecturas y escrituras.
Nota
Las creaciones de índices en el clúster de destino se consideran operaciones de guardar mientras mongosync se está sincronizando.
¿Puedo usar mongosync para la sincronización continua entre dos clústeres de MongoDB?
Por ejemplo, ¿puedo mantener un clúster secundario para recuperación ante desastres, análisis u otros casos de uso similares?
No, mongosync está diseñado para admitir migraciones únicas. mongosync debe commit para aceptar de manera segura tráfico de lectura o escritura a las colecciones migradas en el clúster de destino. Por lo tanto, la recuperación ante desastres, el análisis y otros casos de uso similares no son flujos de trabajo compatibles con mongosync.
Para más información, consulte ¿Puedo realizar lecturas o escrituras a mi clúster de destino mientras mongosync se está sincronizando?.
¿Por qué los índices del clúster de destino son mayores que los del clúster de origen?
Los siguientes factores pueden contribuir a un aumento en el tamaño del índice en los clústeres de destino:
mongosyncinserta y remueve datos durante una migración, lo que puede provocar que estos se almacenen de forma ineficiente en el disco.De forma predeterminada,
mongosynccrea índices antes de copiar los datos.mongosynccopia los datos en_idorden. Si un índice no está correlacionado_idcon, su tamaño puede aumentar. Para obtener más información, consulte la página de Preguntas frecuentes del Manual de MongoDB: Índices.
Utiliza los siguientes métodos para mitigar un aumento en el tamaño del índice:
Reinicia la migración con el
buildIndexesparámetro establecido ennever. Una vez finalizada la migración, se deben crear manualmente los índices en el clúster de destino.Después de la migración, realiza un sincronización inicial progresivo en el clúster de destino.
Después de la migración, ejecute compact (comando de base de datos) en el clúster de destino. Esto reconstruye los índices y libera espacio en disco innecesario al sistema operativo, pero puede afectar el rendimientodel clúster.
¿Puede mongosync funcionar en su propio hardware?
Sí, mongosync puede ejecutarse en su propio hardware. mongosync no necesita ejecutarse en los servidores que alojan tus instancias de MongoDB. Cuando mongosync se ejecuta en su propio hardware, puede utilizar un sistema operativo (SO) diferente al SO en los clústeres de origen o de destino.
¿Qué especificaciones de hardware debe tener el clúster de destino?
Para la mayoría de las migraciones, el clúster de destino debe tener especificaciones de hardware superiores al clúster de origen, incluyendo las siguientes propiedades:
CPU
Memoria
Disk I/O
Estas especificaciones de hardware garantizan que el clúster de destino puede gestionar mongosync escrituras y que la sincronización puede mantenerse al ritmo de la carga de trabajo del clúster de origen.
El clúster de destino debe disponer de suficiente almacenamiento en disco para albergar el tamaño lógico de los datos que se migran y las entradas de destino de oplog desde la sincronización inicial. Por ejemplo, para migrar 10 GB de datos, el clúster de destino debe tener al menos 10 GB disponibles para los datos y otros 10 GB para las entradas de oplog de inserción de la sincronización inicial.
Para usar la verificación integrada, debes tener un oplog más grande en el destino. Si activas el verificador incorporado y reduces el tamaño del oplog de destino, es posible que el verificador incorporado no pueda mantenerse al día, lo que puede causar que mongosync genere un error.
Si necesitas reducir la sobrecarga de los registros del destino del oplog y el verificador incorporado está desactivado, puedes:
Utilice la configuración
oplogSizeMBpara reducir el tamaño del oplog del clúster de destino.Utilice la configuración para reducir o eliminar el período mínimo de retención del registro de operaciones del clúster de
oplogMinRetentionHoursdestino.
¿Debo aumentar el tamaño del oplog en el clúster de origen?
mongosync aplica operaciones en el oplog sobre los datos en la clúster de destino después de la fase de copia de colección. Cuando las operaciones que mongosync no ha aplicado se eliminan del oplog en el clúster de origen, la sincronización falla y mongosync termina.
Nota
mongosync no replica operaciones realizadas en el clúster de origen durante la sincronización con el clúster de applyOps destino.
Si prevés sincronizar un gran conjunto de datos, o si planeas pausar la sincronización durante un período prolongado, puedes exceder la oplog window. Utilice la configuración oplogSizeMB para aumentar el tamaño del oplog en el clúster de origen.
¿Qué opciones de cadena de conexión permite mongosync?
mongosync requiere readConcern: "mayoría" y writeConcern: "mayoría".
Si el readConcern no es majority, mongosync devuelve un error:
Invalid URI option, read concern must be majority
Si el writeConcern no es majority, mongosync devuelve un error:
Invalid URI option, write concern must be majority
mongosync acepta todas las demás opciones de cadena de conexión.
¿ mongosync admite la compresión de red?
mongosync admite la compresión de red y la activa por defecto. Sin embargo, las configuraciones de tu clúster deben compartir al menos un compresor común.
Para obtener más información sobre las opciones de configuración de compresión de red, consulta la opción --networkMessageCompressors en el Manual de la base de datos.
¿Cuáles son las opciones de seguridad y autenticación compatibles?
mongosync utiliza una cadena de conexión estándar de MongoDB para conectar el origen y los clústeres de destino.
LDAP y X509 son compatibles. Para las opciones de autenticación disponibles, consulta Autenticación en implementaciones autogestionadas.
¿ mongosync se reinicia automáticamente en caso de error?
mongosync no se reinicia automáticamente en caso de error. Sin embargo, se puede escribir un script o usar los administradores de procesos del sistema operativo, systemd, por ejemplo, para reiniciar el proceso mongosync.
El binario mongosync no tiene estado. Los metadatos para reiniciar se almacenan en el clúster de destino.
Una operación mongosync se puede reanudar si mongosync deja de estar disponible durante la sincronización. Cuando mongosync vuelva a estar disponible, reinicie el proceso mongosync con los mismos parámetros. mongosync reanuda la operación desde donde se detuvo cuando mongosync dejó de estar disponible.
Nota
A partir mongosync 1.7.3 de, mongosync puede tardar al menos dos minutos en responder al reanudar o reiniciar una operación de sincronización. Durante este tiempo, cualquier llamada al punto final podría fallar. Si progress una progress llamada falla, es seguro volver a intentarlo.
¿Puede el origen o el destino ser un conjunto de réplicas con árbitros?
Sí, el set de réplicas puede tener árbitros. El set de réplicas fuente debe tener más de 2 nodos que no sean árbitros y debes sincronizar desde un nodo que no sea árbitro. Use la cadena de conexión del clúster de origen para especificar una preferencia de lectura para un nodo no árbitro que contiene datos.
¿Qué pasa si veo una advertencia de operación lenta?
Las advertencias sobre operaciones lentas pueden surgir durante la sincronización inicial o la aplicación de un evento de cambio cuando se produce una operación de lectura lenta en el clúster de origen o una operación de escritura lenta en el clúster de destino. La advertencia puede indicar congestión de red o sobrecarga de recursos en el clúster de origen o de destino.
Si bien estas advertencias no indican fallas en sí mismas, las operaciones lentas pueden provocar errores de tiempo de espera de operación en mongosync y fallas de migración.
Si ves advertencias sobre operaciones lentas, comprueba el uso de CPU, memoria y red en los clústeres de origen y destino. Si los clústeres están subprovisionados para tus necesidades, considera actualizar el hardware del clúster.
¿Debo detener una migración si los registros contienen la palabra "error" o "failure"?
No, los registros que contienen la palabra «error» o «fallo» muestran errores no fatales y no indican que debas detener mongosync antes de tiempo. Estos registros no indican que mongosync esté fallando o corrompiendo datos. Si ocurre un error fatal, mongosync detiene la sincronización y escribe una entrada de registro fatal.
¿Qué pasa si veo muchos errores de claves duplicadas en los registros?
Los errores de clave duplicada son parte normal del proceso de sincronización. Estos errores pueden ocurrir si:
Se inserta un documento en el clúster de origen después de que
mongosynccomience.mongosyncpuede copiar directamente el documento y aplicar de manera redundante el evento de cambio de inserción para el documento posteriormente.Se detiene y se reanuda
mongosync. Esto puede provocar inserciones duplicadas al reiniciarmongosync.mongosyncencuentra un error transitorio y vuelve a intentar una inserción que puede haber tenido éxito anteriormente.
¿Qué debo hacer si mongosync devuelve un error fatal?
Un error fatal indica un problema que debe corregirse y requiere reiniciar la migración. Tras solucionar el error, elimine todos los datos migrados en el clúster de destino, incluida la base de datos mongosync_reserved_for_internal_use. A continuación, reinicie mongosync e inicie una nueva migración.
¿ mongosync acepta los índices TTL?
Mongosync permite la sincronización de índices TTL del clúster de origen al clúster de destino.
¿Puedo personalizar las distribuciones de fragmentos al sincronizar en un clúster fragmentado?
No, no puedes configurar mongosync para personalizar las distribuciones de fragmentos en un clúster fragmentado de destino. mongosync toma muestras de cada colección durante la inicialización para determinar cómo distribuir eficazmente los documentos a través de las particiones del clúster de destino después de la migración.