Overview
Mongosync replica datos y guardados de un clúster a otro hasta que la sincronización está finalizado. Puedes utilizar esta herramienta para realizar migraciones de datos únicas entre clústeres de MongoDB con un tiempo de inactividad mínimo.
Para más información sobre mongosync y el comportamiento del clúster de destino durante la ejecución, consulte Consideraciones de sincronización intermedia.
El binario mongosync es el proceso principal utilizado en Mongosync.
Cada clúster puede ser un set de réplicas o un clúster particionado. Si alguno es un clúster particionado, consulta las limitaciones del clúster particionado para
mongosync.No es necesario que los clústeres fragmentados tengan la misma cantidad de fragmentos.
El clúster de destino debe tener la misma versión o estar hasta dos versiones por delante del clúster de origen. La versión del parche no es importante, siempre que cumpla con los requisitos mínimos de la versión del parche.
El clúster de origen puede permanecer activo hasta el commit porque
mongosyncsincroniza las escrituras en el clúster de origen durante la migración hasta que se realiza la confirmación.
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.
Sigue las instrucciones a continuación para configurar Mongosync, conectar tus clústeres y sincronizar tus datos.
Configuración
Define un clúster de origen y destino
Si ya tienes un clúster de MongoDB, autogestionado o alojado en MongoDB Atlas, utiliza ese clúster como el clúster de origen. Si no tienes un clúster para trabajar, deberás crear uno.
Esta guía de inicio rápido funciona cuando el clúster de destino y el clúster de origen son conjuntos de réplicas.
Para sincronizar desde un set de réplicas a un clúster particionado, consulta Sincronizar un set de réplicas con un clúster particionado. Para sincronizar entre clústeres particionados, consulte Sincronizar clústeres particionados.
Puedes migrar entre clústeres en la misma o en diferentes versiones de MongoDB. Para obtener más información sobre la compatibilidad de versiones del servidor de MongoDB o migraciones entre versiones, consulta Compatibilidad de Versiones del Servidor MongoDB.
La cantidad de nodos en el conjunto de réplicas de destino no tiene que ser igual a la cantidad de nodos en el conjunto de réplicas de origen.
IMPORTANTE:
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.
Si sus clústeres son autogestionados, deben ser clústeres de MongoDB Enterprise. Mongosync solo es compatible con MongoDB Community Edition en un número limitado de casos. Para obtener más información sobre el uso de Mongosync con MongoDB Community Edition, contacte con un representante de ventas de MongoDB.
La creación de un clúster queda fuera del alcance de esta guía. Si necesita ayuda, consulte la documentación para crear un clúster Atlas o un clúster autogestionado.
Definir usuarios administrativos
Si cualquiera de los clústeres está alojado en Atlas, o si cualquiera de ellos requiere autenticación, debes crear un usuario de base de datos que tenga permisos en ambos clústeres.
Requisitos de autenticación del clúster de origen
El usuario de origen debe tener los siguientes roles:
readAnyDatabaserolclusterMonitorrolbackuprol
Además, el usuario de origen debe poder:
Ejecute el comando
getParameter
Si el clúster de origen está alojado en Atlas, el usuario debe tener el rol de admin de Atlas. El usuario también debe poder leer el flujo de cambios para el clúster.
Requisitos de autenticación del clúster de destino
Si el clúster de destino está alojado en Atlas, el usuario debe tener el rol de administrador de Atlas.
Notas de autenticación del clúster
Para agregar un Atlas user, consulta: Configurar usuarios de base de datos.
Para añadir un usuario a un clúster autogestionado, consulte: Crear un usuario en implementaciones autogestionadas.
Para verificar los permisos de usuario, ejecute
db.getUser().
Descargue e instale mongosync
mongosync es la herramienta que conecta los clústeres de origen y destino. Puedes alojar mongosync en tu propio hardware, mongosync no tiene que ejecutarse en el hardware que aloja tus clústeres MongodDB.
Para instalar mongosync:
Busque un servidor host para el ejecutable
mongosyncque tenga conectividad de red con sus clústeres de origen y destino.Descargue el paquete
mongosyncpara su sistema host.Desempaqueta el paquete
mongosync. El ejecutablemongosyncestá en el directoriobin.
Para obtener instrucciones de instalación específicas del sistema operativo, consulta Instalación.
Conectar los clústeres
Formatea tus cadenas de conexión
Una cadena de conexión contiene los detalles de red y de autenticación que mongosync necesita para conectarse a los clústeres de origen y destino.
Determine el nombre de host o la dirección IP y el puerto de sus clústeres de origen y destino. Utilizará esta información y los datos de autenticación del usuario para construir las cadenas de conexión.
El esquema estándar de conexión URI tiene la forma:
mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]
Sus cadenas de conexión se parecerán a:
cluster0: mongodb://clusterAdmin:superSecret@clusterOne01.fancyCorp.com:20020,clusterOne02.fancyCorp.com:20020,clusterOne03.fancyCorp.com:20020 cluster1: mongodb://clusterAdmin:superSecret@clusterTwo01.fancyCorp.com:20020,clusterTwo02.fancyCorp.com:20020,clusterTwo03.fancyCorp.com:20020
Para obtener más detalles, consulte mongosyncConexión.
Inicializar mongosync
mongosync debe crear una conexión inicial con los clústeres de origen y destino antes de poder comenzar a sincronizar los datos. Para crear la conexión inicial, emite el siguiente comando con tus cadenas de conexión en una sola línea (el comando se ha reformateado aquí para mayor claridad):
./bin/mongosync \ --logPath /var/log/mongosync \ --cluster0 "mongodb://clusterAdmin:superSecret@clusterOne01.fancyCorp.com:20020,clusterOne02.fancyCorp.com:20020,clusterOne03.fancyCorp.com:20020" \ --cluster1 "mongodb://clusterAdmin:superSecret@clusterTwo01.fancyCorp.com:20020,clusterTwo02.fancyCorp.com:20020,clusterTwo03.fancyCorp.com:20020"
Notas de inicialización
Cuando
mongosyncse conecta por primera vez a los clústeres de origen y destino, se encuentra en el estado IDLE.mongosyncno sincroniza datos hasta que reciba el comando start.Designa los clústeres de origen y de destino con el comando iniciar. "cluster0" y "cluster1" son solo etiquetas; ambos clústeres pueden ser
cluster0ocluster1.
Migrar datos entre clústeres
El endpoint de inicio inicia la sincronización de datos. Para comenzar la sincronización, use curl o un programa similar para enviar la solicitud de inicio:
curl localhost:27182/api/v1/start -XPOST \ --data ' { "source": "cluster0", "destination": "cluster1" } '
Si la solicitud de inicio se realiza correctamente, mongosync devuelve { "success": true } y comienza a sincronizar los datos existentes en el clúster de origen con el de destino. En este punto, mongosync pasa al RUNNING estado y aplica las escrituras subsiguientes del clúster de origen al de destino.
Para consultar el estado de la sincronización, llama al endpoint de progreso:
curl localhost:27182/api/v1/progress -XGET
Si la respuesta de progress incluye el campo canCommit: true, puedes llamar al endpoint de /commit. Consulta Finalizar proceso de cambio.
La interfaz de comando para mongosync es un servidor HTTP que publica una API HTTP. Para controlar mongosync, utiliza los endpoints de la API. La documentación de la API proporciona detalles sobre el uso de los siguientes endpoints:
Endpoint | Descripción |
|---|---|
Inicia la sincronización entre un clúster de origen y un clúster de destino. | |
Devuelve el estado del proceso de sincronización. | |
Pausa la operación de sincronización actual. | |
Reanuda una sesión de sincronización pausada basándose en los datos almacenados en el clúster de destino. | |
Se confirma la operación de sincronización en el clúster de destino. | |
Revierte la dirección de una operación de sincronización confirmada. |
Finalizar el proceso de cambio.
Puedes finalizar una migración y transferir la carga de trabajo de tu aplicación del clúster de origen al clúster de destino usando el proceso de migración numeral (mongosync).
Para obtener más información, consulta Finalizar el proceso de trasvase.
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:
mongosync_reserved_for_internal_useCualquier cosa que comience con
mongosync_internal_Cualquier cosa que comience con
mongosync_reserved_for_verification_
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.
notas
El puerto por defecto para la API HTTP es
27182. Usa la opción--portconmongosyncpara configurar otro puerto.mongosyncpuedes intercambiar los clústeres de origen y destino para habilitar la sincronización inversa.Para obtener más información, consulte el punto
reversefinal.El usuario especificado en la cadena de conexión
mongosyncdebe tener los permisos necesarios en los clústeres de origen y destino. Los permisos varían según el entorno y si desea modificar la configuración de bloqueo de escritura o usar la sincronización inversa.para determinar los permisos de usuario correctos para su caso de uso, consulte permisos de usuario.
Es posible que debas incrementar el descriptor de archivos
ulimitsen el host que ejecutamongosync. Esto se aplica a cualquier sistema similar a UNIX, pero macOS en particular tiene valores por defecto bajos. Consulta Configuraciones UNIX ulimit.Para estimar el tamaño de
oplognecesario para la sincronización inicial, consulta Dimensionamiento de oplog.