mongomirror es una herramienta para migrar manualmente datos de un conjunto de réplicas de MongoDB existente a un conjunto de réplicas de MongoDB Atlas. Consulte Descargar mongomirror.
mongomirror no requiere que usted apague su conjunto de réplicas o aplicaciones existentes, no importa datos de usuarios o roles y no copia la config base de datos.
Utilice mongomirror para:
Ejecución de una migración única de un conjunto de datos a un clúster de MongoDB Atlas desde una implementación de MongoDB alojada fuera de MongoDB Atlas.
Ejecutar una migración única de un conjunto de datos de un clúster Atlas a otro clúster Atlas.
Consultetambién Cómo elegir una herramienta de importación y migración de datos.
Requisitos previos
Implementación de MongoDB de origen
La implementación de MongoDB de origen debe ser un conjunto de réplicas. Si la implementación de MongoDB de origen es independiente, antes de
mongomirrorejecutar, conviértala en un conjunto de réplicas.El set de réplicas de origen debe ejecutar MongoDB versión 2.6 o superior.
El conjunto de réplicas de MongoDB de origen no puede ser un clúster gratuito
M0ni un clúster Flex.El conjunto de réplicas de MongoDB de origen no puede contener datos en colecciones de series de tiempo.
No cambie la bandera
featureCompatibilityVersionen ningún momento durante el procedimiento.Cuando migra desde MongoDB 4.4 o una versión anterior a un clúster Atlas que ejecuta MongoDB o una versión 7.0 posterior, elimine todos los índices geoHaystack de sus colecciones.
mongomirrorno es compatible con índices TTL. Descarta cualquier índice TTL existente y vuelve a crearlos una vez terminado el proceso de migración. Si no deseas descartar un índice existente porque es importante para el rendimiento de la query, contacto con el soporte para explorar opciones alternativas.No hagas ningún cambio de namespace durante el proceso de migración, como usar el comando
renameCollectiono ejecutar un pipeline de agregación que incluya la etapa de agregación$out.No puede utilizar el
renameCollectioncomando ni la$outetapa de agregación como parte de la sincronización inicial, que se ejecuta como parte delmongomirrorproceso.No reinicie el servidor principal durante la etapa de sincronización inicial de la migración.
Si su implementación de MongoDB contiene índices con claves que exceden el límite de clave de índice, antes de comenzar el procedimiento de migración en vivo, modifique los índices para que no contengan claves de gran tamaño.
Acceso requerido al conjunto de réplicas de origen
mongomirror debe tener acceso de red al conjunto de réplicas de origen. Si el conjunto de réplicas de origen requiere autenticación, incluya las credenciales de usuario al ejecutar. Especifique un usuario de base de datos con, como mínimo, los siguientes mongomirror privilegios:
Leer todas las bases de datos y colecciones. El rol en
readAnyDatabaselaadminbase de datos cubre este requisito.Lea el registro de operaciones. Consulte Acceso al registro de operaciones.
Ejecute el
getParametercomando.
Si no existe dicho usuario, créelo en el conjunto de réplicas de MongoDB de origen. Cada versión de MongoDB Server tiene diferentes roles integrados. Seleccione un rol integrado según su versión de MongoDB Server y ejecute los comandos correspondientes mongosh en:
Para los clústeres de origen, un usuario debe tener los roles,
readAnyDatabaseclusterMonitorbackupy.Para verificar que el usuario de la base de datos que ejecutará el proceso de migración en vivo tenga estos roles, ejecute el comando db.getUser() en la
adminbase de datos.use admin db.getUser("admin") { "_id" : "admin.admin", "user" : "admin", "db" : "admin", "roles" : [ { "role" : "backup", "db" : "admin" }, { "role" : "clusterMonitor", "db" : "admin" } { "role" : "readAnyDatabase", "db" : "admin" } ] } ... Además, el usuario de base de datos de su clúster de origen debe tener el rol para leer el oplog en la base de datos
admin. Para obtener más información, consulta Acceso al Oplog.Para los clústeres de origen que ejecutan MongoDB,3.4 un usuario debe tener, como mínimo,
clusterMonitorlos roles y. PorreadAnyDatabaseejemplo:use admin db.createUser( { user: "mySourceUser", pwd: "mySourceP@$$word", roles: [ "clusterMonitor", "readAnyDatabase" ] } ) Para los clústeres de origen que ejecutan MongoDB,3.2 un usuario debe tener, como mínimo, los roles y, así como acceso de lectura a
clusterManagerreadAnyDatabaselalocalbase de datos. Esto requiere un rol personalizado, que puede crearse con los siguientes comandos:use admin db.createRole( { role: "migrate", privileges: [ { resource: { db: "local", collection: "" }, actions: [ "find" ] } ], roles: ["readAnyDatabase", "clusterManager"] } ) db.createUser( { user: "mySourceUser", pwd: "mySourceP@$$word", roles: [ "migrate" ] } ) Para los clústeres de origen que ejecutan MongoDB 2.6 o,3.0 un usuario debe tener, como mínimo, el rol. Por
readAnyDatabaseejemplo:use admin db.createUser( { user: "mySourceUser", pwd: "mySourceP@$$word", roles: [ "readAnyDatabase" ] } )
Implementación del Atlas de destino
La implementación de destino de Atlas:
No puede ser un clúster gratuito
M0ni un clúster flexible.Debe ser un conjunto de réplicas.
Debe tener una versión igual o posterior a la de MongoDB del clúster de origen. Consulte la ruta de actualización.
No debe contener espacios de nombres que se superpongan con el clúster de origen. Si
mongomirrordetecta espacios de nombres superpuestos en el clúster de destino, falla antes de iniciar el proceso. Si el clúster de destino contiene espacios de nombres superpuestos, elimine todos los datos del clúster--dropde destino con o enumere los espacios de nombres que se importarán del clúster de origen--includeNamespacecon.Debe incluir en su lista de acceso IP:
La dirección IP pública del servidor en el que se ejecuta,
mongomirroroSi se configura para el emparejamiento de VPC, el bloque CIDR de VPC del par (o un subconjunto) o el grupo de seguridad de la VPC del par.
Nota
Para encontrar la dirección IP pública de cualquier nodo del clúster, use la
nslookupherramienta desde la línea de comandos. Para obtener más información, consulte ¿Cambian alguna vez las direcciones IP públicas del clúster Atlas?
Acceso requerido en el clúster de destino
mongomirror Debe tener acceso a la red del clúster de destino.
Debe especificar un usuario de base de datos con el Atlas admin rol para ejecutar. Para obtener más información,mongomirror consulte Configurar usuarios de base de datos.
Ruta de actualización
Importante
mongomirror no es compatible con migraciones entre 6.0clústeres de origen MongoDB + y 6.0clústeres de destino +. No se mongomirror puede usar para migrar desde un conjunto de réplicas 6 de0 origen..x o posterior a un conjunto de réplicas 6 de0 destino..x o posterior.
Puede utilizar para migrar desde un conjunto de réplicas de origen en versiones anteriores a un conjunto de réplicas de destino con la versión mongomirror MongoDB.6.0
Como alternativa, puede actualizar su conjunto de réplicas de origen 6.0a + o 7.0+ y utilizar este procedimiento de migración en vivo para migrar un conjunto de réplicas actualizado a Atlas.
mongomirror Admite las siguientes rutas de migración.
Source Replica Set MongoDB Version | Target Atlas Replica Set MongoDB Version |
|---|---|
5.0 | 6.0 |
4.4 | 6.0 |
4.2 | 6.0 |
4.0 | 6.0 |
3.6 | 6.0 |
3.4 | 6.0 |
3.2 | 6.0 |
3.0 | 6.0 |
2.6 | 6.0 |
Descargar mongomirror
Nota
En macOS,64aparece una alerta de seguridad al intentar abrir el archivo por primera mongomirror vez después de descargarlo. Para continuar, consulta "Abrir una aplicación anulando la configuración de seguridad".
Sistema operativo | Descargar |
|---|---|
Amazon Linux 1 | |
Amazon Linux 2 | |
Debian 9.2 | |
Debian 10 | |
macOS 64bits | |
RHEL 7.0 | |
RHEL 7.1 PPC64LE | |
RHEL 7.2 s390x | |
RHEL 8.0 | |
RHEL 8.1 PPC64LE | |
SLES 12 | |
SLES 15 | |
Ubuntu 16.04 | |
Ubuntu 16.04 ARM | |
Ubuntu 18.04 | |
Ubuntu 18.04 ARM | |
Ubuntu 20.04 | |
Ubuntu 20.04 ARM | |
Windows |
mongomirror Proceso
Cuando inicias,mongomirror esto:
Se conecta a Atlas a través de Protocolodeseguridad SSL.
Realiza una sincronización inicial, copiando las colecciones del set de réplicas MongoDB existente al clúster de destino en Atlas.
Después de la sincronización inicial, rastrea continuamente el registro de operaciones del conjunto de réplicas para detectar cambios entrantes y los reproduce en el clúster de destino en Atlas. no copia
mongomirrorlaconfigbase de datos. usa compresión por cablemongomirror--compressorssi la habilita en el clúster de origen o de destino y usa para especificar qué bibliotecas de compresión permitir.mongomirrorcrea todos los índices del clúster de destino en primer plano, independientemente de cómo se crearon en el clúster de origen. La creación de índices en primer plano bloquea todas las demás operaciones en la base de datos. Para obtener más información, consulte Operaciones de creación de índices en una colección completa.
Una vez iniciado, se ejecuta continuamente hasta que lomongomirror apagas:
Si apaga
mongomirrordurante la etapa de sincronización inicial, antes de reiniciarmongomirror, verifique que el clúster de destino esté vacío o ejecutemongomirrorcon--drop.Si apaga durante
mongomirrorla etapa de seguimiento del registro de operaciones, el proceso detiene su seguimiento.Puede reiniciar para continuarmongomirrorel seguimiento desde el último registro de operaciones procesado--bookmarkFileusando.
Ejecutar mongomirror
Configurar el usuario de la base de datos en el conjunto de réplicas de origen.
Si el conjunto de réplicas de origen requiere autenticación, debe incluir las credenciales de usuario al ejecutar. Para conocer los requisitos, consulte Acceso mongomirrorrequerido en el conjunto de réplicas de origen.
Tome nota del nombre de usuario y la contraseña de este usuario, ya que debe especificar estas credenciales al ejecutar mongomirror.
En Atlas, vaya a la Database & Network Access Página para su proyecto.
Si aún no aparece, se debe seleccionar la organización que contiene el proyecto en el menú Organizations de la barra de navegación.
Si aún no se muestra, seleccione su proyecto en el menú Projects de la barra de navegación.
En la barra lateral, haz clic en Database & Network Access en la sección Security.
La página Acceso a la base de datos y a la red se muestra.
Configurar un usuario de base de datos en el clúster Atlas de destino.
Debe especificar un usuario de base de datos con el Atlas admin rol para mongomirror ejecutar.Consulte "Configurar usuarios de base de datos" para obtener información sobre cómo crear un usuario de base de datos.
Si no existe tal usuario, cree uno:
Si aún no se muestra, haz clic en la pestaña Database Users.
Haga clic en Add New Database User.
Agregar un usuario Atlas admin.
Toma nota del nombre de usuario y la contraseña seleccionados para el nuevo usuario, ya que deberás especificar estas credenciales al ejecutar mongomirror.
Actualizar lista de acceso IP.
Si el host donde ejecutará mongomirror no está en la lista de acceso IP de su clúster, actualícela. Puede especificar:
La dirección IP pública del servidor en el que se ejecutará,
mongomirroroSi se configura para el emparejamiento de VPC, el bloque CIDR de VPC del par (o una subred) o el grupo de seguridad de la VPC del par.
En Atlas, ve a la página Clusters de tu proyecto.
Si aún no se muestra, seleccione la organización que contiene su proyecto deseado en el menú Organizations de la barra de navegación.
Si aún no aparece, selecciona el proyecto deseado en el menú Projects de la barra de navegación.
En la barra lateral, haz clic en Clusters en la sección Database.
La página de clústeres se muestra.
Copie la información del host del clúster de destino.
Puede obtener la información del nombre de host de su clúster Atlas desde la interfaz de usuario de Atlas.
Nota
No es necesario utilizar un controlador para migrar datos mongomirror con.
Desde el cuadro de diálogo Connect, haga clic en Shell.
En la lista desplegable, seleccione 3.4 or earlier. La cadena de conexión debería ser similar a la del siguiente ejemplo. Este ejemplo se ha dividido en varias líneas para facilitar su lectura:
mongodb://<db_username>:<db_password>@ 00.foo.mongodb.net:27017, 01.foo.mongodb.net:27017, 02.foo.mongodb.net:27017/test? ssl=true&replicaSet=myAtlasRS&authSource=admin En un editor de texto, pegue el valor de
replicaSet, agregue una barra diagonal (/) y luego adjunte la lista de host como valores separados por comas, como se muestra en el siguiente ejemplo:myAtlasRS/00.foo.mongodb.net:27017,01.foo.mongodb.net:27017,02.foo.mongodb.net:27017
Utilice este valor para en el siguiente --destination paso.
Para completar el proceso de migración, verifique la transferencia de datos y cambie a Atlas.
Cambiar a Atlas
Después de que complete la sincronización inicial y siga el registro de operaciones del conjunto de réplicas, puede cambiar al clúster Atlas de mongomirror destino.
Verificar transferencia de datos.
Verifique que sus datos se transfieran al clúster de destino mediante una de las siguientes estrategias de verificación. Utilice estos métodos de verificación solo después de asegurarse de que los clústeres de origen o destino NO estén escribiendo datos.
Utilice el método db.collection.countDocuments() en cada colección de los clústeres de origen y de destino para obtener recuentos de documentos y compararlos entre los clústeres.
Escriba un script que consulte las colecciones en el clúster de origen y luego verifique que los documentos, índices, colecciones, metadatos y vistas correctos existan con los mismos valores en el clúster de destino. En el script, utilice los siguientes comandos en los clústeres de origen y destino:
Para verificar la transferencia de índices y comparar los resultados, utilice el método db.collection.getIndexes().
Para verificar la transferencia de metadatos y comparar los resultados, utilice el método db.getCollectionInfos().
Actualice las aplicaciones cliente para utilizar el clúster Atlas.
Actualiza tus aplicaciones cliente con la cadena de conexión de Atlas proporcionada a través del botón Connect en el panel del clúster.
Para obtener detalles sobre las conexiones a Atlas, consulte Conectarse a un clúster a través de bibliotecas de cliente.
Monitoring
mongomirror registra su progreso en la salida estándar de la terminal. Durante la sincronización inicial, registra una barra de progreso por cada colección que copia. Pormongomirror ejemplo:
2024-08-09T16:35:50.227-0000 [#....................] park.events 2179/34184 (6.4%) 2024-08-09T16:35:50.227-0000 [#############........] zoo.animals 29000/49778 (58.3%)
Al seguir el registro de operaciones, registra el tiempo de retardo, en segundos, entre la entrada más reciente del registro de operaciones en el clúster de origen y la última entrada procesada en el clúster de destino. Pormongomirror ejemplo:
2024-12-12T16:22:17.027-0800 Current lag from source: 6s
Un tiempo de retraso de 6 segundos significa que la última entrada del registro de operaciones procesada mongomirror ocurrió 6 segundos antes de la más reciente disponible en el clúster de origen.
Nota
El tiempo que tarda en ponerse al día puede ser mayor o menor mongomirror a 6 segundos, dependiendo de la cantidad de entradas que llegan por segundo.
Un tiempo de retraso de 0 segundos indica que está procesando entradas que llegaron menos de un segundo antes de la última entrada del registro mongomirror de operaciones.
Si el clúster de origen tiene índices, mongomirror compila los mismos índices en el clúster de destino. El registro de progreso muestra los tiempos de inicio y finalización del proceso de creación del índice. Para ver el progreso de las creaciones de índices, puedes:
Utilice el comando currentOp en el nodo principal del clúster de destino. El
commandcampo muestra información sobre la operación en ejecución. Las entradas de creación de índices son similares a las siguientes:"command" : { "createIndexes" : "perfs", "indexes" : [ { "key" : { "animal" : "text" }, "name" : "animal_text" } ]... Descargue los registros de MongoDB de su clúster de destino y busque entradas recientes de líneas relacionadas con el índice. Los mensajes de registro relacionados con la creación del índice son similares a los siguientes:
{"t":{"$date":"2024-08-09T16:35:50.227+00:00"},"s":"I", "c":"INDEX", "id":20447, "ctx":"conn1080","msg":"Index build: completed","attr":{"buildUUID":{"uuid":{"$uuid":"c4a62739-bf19-456d-bbd6-7baa29f1063b"}}}}
Rendimiento
Para evitar conflictos por recursos de red y CPU, ejecute en hosts mongomirror distintos a los hosts de instancia mongod de su conjunto de réplicas.
mongomirrorafecta el rendimiento de su conjunto de réplicas de origen de manera similar a tener un secundario:Para la etapa de sincronización inicial, la carga se ajusta al tamaño del conjunto de datos.
Una vez que se completa una sincronización inicial, la carga se escala con el registro de operaciones de gigabytes utilizados por hora.
Sintaxis de comandos, opciones y ejemplos
Para conocer la sintaxis, opciones y ejemplos de, consulte la página mongomirrorde referencia de mongomirror.