¿Cuáles son las opciones para migrar datos de MongoDB a Azure DocumentDB?

Este artículo le ayuda a planear y ejecutar una migración de MongoDB a Azure DocumentDB. Abarca las herramientas de migración disponibles, las fases clave de una migración y los procedimientos recomendados para reducir el riesgo y minimizar el tiempo de inactividad.

Si va a migrar desde un servidor local de MongoDB, una máquina virtual hospedada en la nube o un servicio administrado de MongoDB, se aplican las opciones de migración, las instrucciones y los procedimientos recomendados de este artículo.

Fases de migración clave

Una migración correcta sigue estas fases distintas. Cada fase tiene objetivos específicos y criterios de éxito.

1. Evaluación

Ejecute un examen automatizado de mongoDB de origen mediante la extensión de migración de DocumentDB Azure para identificar características no admitidas, comandos, sintaxis de consulta y tipos de índice. La evaluación también proporciona información general sobre las métricas de mongoDB, versión, licencia, tipo de instancia y base de datos y recopilación. Use estos resultados para planear los cambios de esquema e identificar cualquier refactorización necesaria antes de la migración.

Sugerencia

Se recomienda revisar las características y sintaxis admitidas del lenguaje de consulta mongoDB (MQL) en detalle y realizar una prueba de concepto antes de la migración real.

2. Preparar

Analice el informe de evaluación y mida el TPS de origen (transacciones por segundo). Ejecute migraciones de prueba en datos representativos para establecer el nivel de proceso de destino, el nivel de almacenamiento y el recuento de particiones. Realice pruebas de rendimiento para asegurarse de que la configuración de destino cumple sus requisitos.

3. Ajustar

Prepare las colecciones de destino con las claves de partición y los índices adecuados que coincidan con los patrones de consulta de producción. Si usa varias particiones, decida cómo distribuir colecciones entre particiones para equilibrar la carga y minimizar las operaciones entre particiones.

4. Migración

Ejecute el trabajo de migración para mover datos en modo sin conexión o en línea:

  • Migración sin conexión: toma una instantánea del origen al principio y la copia en bloque en el destino. Cualquier dato agregado, actualizado o eliminado en el origen después de la instantánea no se copia. El tiempo de inactividad necesario depende de cuánto tiempo tarda la copia masiva.
  • Migración en línea: realiza la misma copia masiva que sin conexión, pero también supervisa la secuencia de cambios a lo largo del proceso. Los cambios realizados durante la migración se replican en el destino, por lo que el tiempo de inactividad de la aplicación es mínimo. Requiere un flujo de cambios y un oplog suficientemente grande en el origen.

Sugerencia

En el caso de las migraciones en línea, asegúrese de que la secuencia de cambios esté habilitada y que el oplog tenga el tamaño adecuado en mongoDB de origen para capturar todos los cambios durante la ventana de migración.

Para ver las herramientas disponibles, consulte Herramientas de migración.

5. Validar

Compruebe que se han copiado todos los datos, incluidas las actualizaciones más recientes. Compare los recuentos de documentos, ejecute la validación basada en muestras y compruebe que los índices y las estructuras de datos coinciden con las expectativas del destino. Use scripts automatizados para hacer que la validación sea repetible y coherente.

6. Transición

Mueva el tráfico de lectura al destino y compruebe que no hay ningún problema funcional o de rendimiento. Una vez que la validación de lectura se realiza correctamente, mueva el tráfico de escritura al destino. Supervise detenidamente durante la ventana de transición para detectar anomalías.

Herramientas de migración

Las herramientas que se describen en este artículo le ayudarán a migrar las cargas de trabajo de MongoDB de los siguientes orígenes:

  • Máquina virtual de MongoDB
  • atlas de MongoDB
  • AWS DocumentDB

Extensión de migración de DocumentDB de Azure

Cree y administre sus trabajos de migración en Visual Studio Code con la extensión de migración de Azure DocumentDB (versión preliminar pública): una solución diseñada para la simplicidad, la seguridad y sin tiempo de inactividad.

Esta herramienta proporciona instrucciones claras y paso a paso para ayudarle a migrar cargas de trabajo sin interrupciones del servicio. Ustedes pueden:

  • Selección de bases de datos y colecciones específicas para la migración
  • Realizar todos los pasos dentro de la conocida interfaz de VS Code
  • Garantizar la conectividad segura a lo largo del proceso
  • Disfrute de un costo cero para usar la extensión

Con Azure extensión de migración de DocumentDB, puede simplificar el recorrido de migración al tiempo que mantiene el control y la seguridad, todo ello sin una infraestructura o complejidad adicionales.

Aplicación web (en línea)

Optimice la migración a Azure DocumentDB con MongoMigrationwebBasedUtility una herramienta diseñada para lograr eficiencia, confiabilidad y facilidad de uso. El repositorio ofrece instrucciones detalladas paso a paso para migrar las cargas de trabajo. Esta herramienta ofrece una experiencia sin problemas para las migraciones de datos en línea y sin conexión. El proceso es fácil de usar, lo que requiere que solo se proporcionen los detalles de origen y destino. Permite migrar sin esfuerzo las colecciones de MongoDB al tiempo que mantiene el control, la seguridad y la escalabilidad, lo que desbloquea todo el potencial de Azure DocumentDB.

Entre las características clave se incluyen:

  • Admite la implementación privada dentro de la red virtual para mejorar la seguridad.
  • Funcionalidades de reanudación automática si hay errores transitorios o pérdida de conexión
  • Interfaz fácil de usar
  • Acceso al código fuente de C# en GitHub

La herramienta admite opciones de implementación flexibles y funciona de forma independiente sin dependencias de otros recursos Azure. Además, ofrece un rendimiento escalable con planes de precios personalizables de Azure Web App.

Herramientas nativas de MongoDB (sin conexión)

También puede usar las herramientas nativas de MongoDB, como mongodump/mongorestore, mongoexport/mongoimport para la migración de conjuntos de datos de forma offline (sin replicar cambios en directo) a la oferta de DocumentDB de Azure.

Scenario Herramienta nativa de MongoDB
Mover un subconjunto de datos de la base de datos (basados en JSON/CSV) mongoexport/mongoimport
Mover toda la base de datos (basada en BSON) mongodump/mongorestore
  • mongoexport/mongoimport es el mejor par de herramientas de migración para migrar un subconjunto de la base de datos de MongoDB.
    • mongoexport exporta los datos existentes a un archivo JSON o CSV legible por el usuario. mongoexport toma un argumento que especifica el subconjunto de los datos existentes que se van a exportar.
    • mongoimport abre un archivo JSON o CSV e inserta el contenido en la instancia de base de datos de destino (Azure DocumentDB en este caso).
    • JSON y CSV no son un formato compacto; Podría incurrir en cargos de red excesivos, ya que mongoimport envía datos a Azure DocumentDB.
  • mongodump/mongorestore es el mejor par de herramientas de migración para migrar toda la base de datos de MongoDB. El formato BSON compacto hace un uso más eficaz de los recursos de red a medida que los datos se insertan en Azure DocumentDB.
    • mongodump exporta los datos existentes como un archivo BSON.
    • mongorestore importa su volcado de archivo BSON en Azure DocumentDB.

Nota:

Las herramientas nativas de MongoDB solo pueden mover datos tan rápido como permita el hardware del host.

Procedimientos recomendados de migración

Use estos procedimientos recomendados para reducir el riesgo, calcular la capacidad con más precisión, mejorar la velocidad de migración y ejecutar la transición de forma segura.

Reducción de errores

  • Use contraseñas con codificación URL en cadenas de conexión. Los caracteres especiales, como @, #y : pueden interrumpir el análisis cuando no están codificados. La codificación de direcciones URL ayuda a evitar errores de conexión durante las ejecuciones de evaluación y migración.

  • Realice una evaluación previa a la migración antes de la migración. La evaluación le ayuda a identificar características no admitidas, brechas de compatibilidad y posibles bloqueadores al principio. Resuelva los problemas detectados antes de la migración para reducir el trabajo adicional durante la transición.

  • Realice la migración y la transición antes de la producción. Ejecute una o varias migraciones de prueba en un entorno no de producción. La práctica mejora la precisión del tiempo, la preparación del equipo y la confianza durante la transición de producción.

Ajustar el tamaño de la infraestructura con precisión

  • Ejecute una migración de prueba en un conjunto de datos pequeño pero representativo. Use la versión de prueba para capturar el rendimiento, la latencia y el consumo de recursos realistas. Un ejemplo representativo proporciona mejores estimaciones que los datos de prueba sintéticos.

  • Extrapolar los resultados de la prueba para calcular el nivel de proceso, el nivel de almacenamiento y el número de particiones. Use las métricas de prueba observadas para proyectar las necesidades de ajuste de tamaño en función del volumen completo del conjunto de datos. Vuelva a consultar la estimación si la distribución de datos de producción difiere del ejemplo.

  • Utilice el recuento, tamaño y estructura de documentos representativos con una configuración similar a la de producción. Ajuste la configuración de indexación y particionamiento de producción durante el entorno de prueba para evitar subestimar los costes o la duración de la migración. La configuración de no producción puede producir resultados engañosos.

  • Calcule el almacenamiento de destino a partir de resultados de prueba en lugar de suponer que los tamaños de origen y destino son iguales. Las superficies de almacenamiento de origen y destino pueden diferir debido a las diferencias en las definiciones de índice y el diseño de datos. Use los resultados de prueba para planear el almacenamiento con un búfer seguro.

Optimización de la velocidad de migración

  • Migre dentro de la misma región siempre que sea posible. Mantener el origen y el destino en la misma región reduce la latencia de red y mejora el rendimiento de la transferencia de datos. También puede reducir los costos de transferencia de datos entre regiones.

  • Escale verticalmente durante la migración y, a continuación, escale horizontalmente después de la transición. Por ejemplo, puede escalar temporalmente el clúster de destino a M200 para aumentar el rendimiento de la migración. Después de la migración, escale hacia abajo a un nivel adecuado en el intervalo admitido para cargas de trabajo constantes.

  • Elija discos con IOPS más altos para escrituras más rápidas. Las IOPS más altas pueden mejorar significativamente el rendimiento de la migración intensiva de escritura. Dado que el tamaño del disco normalmente no se puede reducir verticalmente más adelante, seleccione el tamaño del disco cuidadosamente durante la planeación.

Planear el corte cuidadosamente porque no hay ninguna opción de reversión

  • Planee el tiempo de inactividad durante una ventana de tráfico bajo. El tiempo de inactividad necesario depende de cuánto tiempo tardan los pasos de validación una vez que la migración se ha completado. Un periodo de baja actividad reduce el impacto en el negocio.

  • Detenga todas las operaciones de escritura en el origen justo antes de la migración. Este paso impide la divergencia de última hora entre el origen y el destino. Confirme que la actividad de escritura está en pausa antes de completar la transición.

  • Valide los datos migrados antes de transferir las operaciones de escritura. Compare los recuentos de documentos y, a continuación, ejecute la comparación aleatoria de documentos de ejemplo (por ejemplo, comprobaciones basadas en hash). Use un script siempre que sea posible para que la validación se pueda repetir.

  • Actualice las cadenas de conexión de la aplicación y pruebe en el destino. Ejecute la validación funcional y de rendimiento en las lecturas de destino y pruebe el tráfico antes de habilitar las escrituras de producción. Confirme que las rutas de acceso críticas se comportan según lo previsto.

  • Mueva el tráfico de escritura solo una vez que la validación se haya realizado correctamente. Cambie las escrituras de producción al destino solo una vez que los resultados de la prueba sean correctos y coherentes. Use un lanzamiento preconfigurado si la arquitectura de la aplicación lo admite.

Coordinar entre equipos para una migración sin problemas

  • Asegurar el compromiso de todos los equipos: aplicaciones, datos, infraestructura, seguridad, red y administración. Alinee las expectativas y las responsabilidades al principio. La propiedad compartida reduce los malentendidos y retrasos durante la ejecución.

  • Utilice planes y ejecuciones de prueba para construir confianza en el equipo y refinar procedimientos. No hay accesos directos a una migración sin problemas. Las pruebas permiten detectar problemas en un entorno de menor riesgo y ofrecen a los equipos la oportunidad de practicar.

  • Considere la transición como una tarea crítica y urgente. La transición requiere una coordinación precisa y una comunicación clara. Designe a los responsables de la toma de decisiones y establezca rutas de escalación antes de comenzar.

  • Sepa quién realizará cada paso, cuándo debería ocurrir y cómo minimizar el tiempo de inactividad. Asigne responsabilidades, establezca escalas de tiempo y alinee con los criterios de éxito. Documente el runbook de transición y compártalo con todos los participantes.

  • Coordinarse con todas las partes interesadas cuando la transición requiere actualizaciones de varias cargas de trabajo simultáneamente. Programe la transición durante una ventana de mantenimiento que funcione para todos los equipos. Evite las noches de viernes o períodos cerca de eventos empresariales importantes.

  • No se apresure ni omita los pasos de diligencia debida: no hay ninguna reversión. La validación exhaustiva y la ejecución cuidadosa impiden errores costosos. Aceptar que la transición tarda tiempo; Los métodos abreviados centrados en velocidad crean riesgo.