Overview
Mongosync replica datos y escribe de un clúster a otro hasta que se completa la sincronización. Finalizado. Puede usar esta herramienta para realizar migraciones de datos únicas entre clústeres de MongoDB con un tiempo de inactividad mínimo.
Para obtener 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 conjunto de réplicas o un clúster fragmentado. Si alguno de ellos es un clúster fragmentado, consulte las limitaciones de los clústeres fragmentados
mongosyncpara.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 hasta dos versiones anteriores que el clúster de origen. La versión del parche no es importante, siempre que cumpla con los requisitos mínimos.
El clúster de origen puede permanecer activo hasta la confirmación porque
mongosyncsincroniza las escrituras en el clúster de origen mientras dura la migración hasta que se llama a 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
Definir un clúster de origen y uno de destino
Si ya tiene un clúster MongoDB, ya sea autoadministrado o alojado en MongoDB Atlas: usa ese clúster como clúster de origen. Si no tienes un clúster con el que trabajar, tendrás que 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 conjunto de réplicas a un clúster fragmentado, consulte Sincronizar un conjunto de réplicas con un clúster fragmentado. Para sincronizar entre clústeres fragmentados, consulte Sincronizar clústeres fragmentados.
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 tener suficiente almacenamiento en disco para acomodar el tamaño de los datos lógicos que se migrarán y las entradas del registro de operaciones de destino de 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 del registro de operaciones de inserción de la sincronización inicial.
Para usar la verificación integrada, debe tener un registro de operaciones más grande en el destino. Si habilita el verificador integrado y reduce el tamaño del registro de operaciones de destino, es posible que el verificador integrado no pueda mantener el ritmo, lo que provocará mongosync el error.
Si necesita reducir la sobrecarga de las entradas del registro de operaciones de destino y el verificador incorporado está deshabilitado, puede:
Utilice la
oplogSizeMBconfiguración para reducir el tamaño del registro de operaciones 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 alguno de los clústeres está alojado en Atlas, o si alguno de ellos requiere autenticación, debe 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
getParametercomando
Si el clúster de origen está alojado en Atlas, el usuario debe tener el rol de administrador de Atlas. También debe poder leer el flujo de cambios del 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 usuario Atlas, consulte: Configurar usuarios de base de datos.
Para agregar un usuario a un clúster autoadministrado, consulte: Crear un usuario enimplementaciones autoadministradas.
Para verificar los permisos del usuario,
db.getUser()ejecute.
Descargue e instale mongosync
mongosync Es la herramienta que conecta los clústeres de origen y destino. Puede alojar mongosync en su propio hardware; mongosync no tiene que ejecutarse en el hardware que aloja sus clústeres de MongodDB.
Para instalar mongosync:
Busque un servidor host para el ejecutable
mongosyncque tenga conectividad de red con sus clústeres de origen y destino.Vaya al Centro de descarga de MongoDB.
Descargue el paquete
mongosyncpara su sistema host.Descomprima el paquete
mongosync. El ejecutablemongosyncse encuentra en el directoriobin.
Para obtener instrucciones de instalación específicas del sistema operativo,consulte Instalación.
Conectar los clústeres
Formatear sus cadenas de conexión
Una cadena de conexión contiene los detalles de red y 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 empezar a sincronizar datos. Para crear la conexión inicial, ejecute el siguiente comando con las cadenas de conexión en una sola línea (el comando se ha formateado 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 estado INACTIVO.mongosyncno sincroniza los datos hasta que recibe el comando de inicio.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 punto final de inicio inicia la sincronización de datos. Para iniciar la sincronización, utilice curl o un programa similar para emitir 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 comprobar el estado de la sincronización, llame al punto final de progreso:
curl localhost:27182/api/v1/progress -XGET
Si la progress respuesta incluye el campo,canCommit: true puede llamar al punto /commit final.Consulte Finalizar el proceso de transición.
La interfaz de comandos para mongosync es un servidor HTTP que publica una API HTTP. Para controlar mongosync, utilice los puntos de conexión de la API. La documentación de la API proporciona detalles sobre el uso de los siguientes puntos de conexión:
Endpoint | Descripción |
|---|---|
Inicia la sincronización entre un clúster de origen y uno 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 en pausa según los datos almacenados en el clúster de destino. | |
Confirma la operación de sincronización en el clúster de destino. | |
Invierte la dirección de una operación de sincronización confirmada. |
Finalizar el proceso de cambio.
Puede finalizar una migración y transferir la carga de trabajo de su aplicación desde el clúster de origen al de destino mediante el proceso de transferencia mongosync.
Para obtener más información,consulte Finalizar proceso de transferencia.
mongosync Almacena sus metadatos en una o varias bases de datos durante la migración. Las bases de datos de metadatos pueden tener cualquiera de los siguientes nombres:
mongosync_reserved_for_internal_useCualquier cosa que comience con
mongosync_internal_Cualquier cosa que comience con
mongosync_reserved_for_verification_
Debe eliminar cualquier base de datos de metadatos después de una migración exitosa. Una vez eliminados los metadatos, no es posible revertir la migración.
notas
El puerto predeterminado para la API HTTP es.
27182Utilice la--portopción conmongosyncpara 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 deba aumentar el descriptor de archivo
ulimitsen el host quemongosyncejecuta. Esto aplica a cualquier sistema tipo UNIX, pero macOS, en particular, tiene valores predeterminados bajos. Consulte la configuración de ulimit en UNIX.Para estimar el tamaño de
oplognecesario para la sincronización inicial, consulte Dimensionamiento del registro de operaciones.