Tutorial: Migración de MongoDB a la API de Azure Cosmos DB para MongoDB desconectado mediante las herramientas nativas de MongoDB

SE APLICA A: MongoDB

Importante

Lea toda esta guía antes de llevar a cabo los pasos de migración.

Esta guía de migración de MongoDB forma parte de la serie sobre la migración de MongoDB. Los pasos críticos de la migración de MongoDB son la migración previa, la migración y la migración posterior, como se muestra a continuación.

Diagrama de pasos de migración.

Introducción a la migración de datos mediante herramientas nativas de MongoDB

Puede usar las herramientas nativas de Mongo DB para realizar una migración desconectada (de una sola vez) de las bases de datos desde una instancia local o en la nube de MongoDB a la API de Azure Cosmos DB para MongoDB.

En este tutorial, aprenderá a:

  • Elegir la herramienta nativa de MongoDB adecuada para el caso de uso.
  • Ejecutar la migración.
  • Supervisar la migración
  • Comprobar que la migración se haya realizado correctamente.

En este tutorial, migrará un conjunto de datos de MongoDB hospedado en una instancia de Azure Virtual Machine a la API de Azure Cosmos DB para MongoDB mediante las herramientas nativas de MongoDB. Las herramientas nativas de MongoDB son un conjunto de archivos binarios que facilitan la manipulación de datos en una instancia de MongoDB existente. Como Azure Cosmos DB expone una API para MongoDB, las herramientas nativas de MongoDB pueden insertar datos en Azure Cosmos DB. Este documento se centra en la migración de datos de una instancia de MongoDB mediante mongoexport/mongoimport o mongodump/mongorestore. Como las herramientas nativas se conectan a MongoDB mediante cadenas de conexión, puede ejecutar las herramientas en cualquier parte; sin embargo, se recomienda ejecutar estas herramientas en la misma red que la instancia de MongoDB para evitar problemas de firewall.

Las herramientas nativas de MongoDB solo pueden migrar datos tan rápido como lo permita el hardware del host; las herramientas nativas pueden ser la solución más sencilla para los conjuntos de datos pequeños cuando el tiempo total de migración no sea un problema. El conector Spark de MongoDB, Azure Data Migration Service (DMS)o Azure Data Factory (ADF) pueden ser alternativas mejores si necesita una canalización de migración escalable.

Si no tiene un origen de MongoDB ya configurado, vea el artículo Instalación y configuración de MongoDB en una máquina virtual Windows en Azure.

Prerrequisitos

Para completar este tutorial, necesita:

  • Realizar los pasos previos a la migración como son estimar el rendimiento, elegir una clave de partición y seleccionar la directiva de indexación.
  • Crear una cuenta de Azure Cosmos DB for MongoDB.
  • Inicio de sesión en la instancia de MongoDB
    • Descargue e instale las herramientas nativas de MongoDB desde este vínculo.
      • Asegúrese de que la versión de las herramientas nativas de MongoDB coincida con la instancia existente de MongoDB.
      • Si la instancia de MongoDB tiene una versión diferente de Azure Cosmos DB for MongoDB, instale ambas versiones de la herramienta nativa de MongoDB y use la versión de herramienta adecuada para MongoDB y Azure Cosmos DB for MongoDB, respectivamente.
    • Agregue un usuario con permisos readWrite, a menos que ya exista uno. Más adelante en este tutorial, proporcione este nombre de usuario y contraseña para las herramientas mongoexport y mongodump.

Configuración de los reintentos en el lado de servidor de Azure Cosmos DB

Los clientes que migren de MongoDB a Azure Cosmos DB se benefician de la gobernanza de recursos, lo que garantiza que se puedan aprovechar al máximo las RU/s de rendimiento aprovisionadas. Azure Cosmos DB puede limitar una solicitud determinada en el transcurso de la migración si esa solicitud supera las RU/s aprovisionadas del contenedor; en ese caso, se debe reintentar esa solicitud. El tiempo de ida y vuelta implicado en el salto de red entre la herramienta de migración y Azure Cosmos DB afecta al tiempo de respuesta total de la solicitud. Además, es posible que las herramientas nativas de MongoDB no puedan administrar los reintentos. La característica Reintento en el lado servidor de Azure Cosmos DB permite al servicio interceptar los códigos de error de limitación y volver a intentar la operación con un tiempo de ida y vuelta mucho menor, lo que mejora enormemente los tiempos de respuesta de las solicitudes. Desde la perspectiva de las herramientas nativas de MongoDB, se minimiza la necesidad de administrar los reintentos, lo que afectará positivamente a su experiencia durante la migración.

Puede encontrar la funcionalidad Reintento en el lado servidor en la hoja Características del portal de Azure Cosmos DB.

Captura de pantalla de la característica de SSR de MongoDB.

Y, si está deshabilitada, se recomienda habilitarla como se muestra a continuación.

Captura de pantalla de SSR de MongoDB habilitado.

Elección de la herramienta nativa de MongoDB adecuada

Diagrama de selección de la mejor herramienta nativa de MongoDB.

  • 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 la base de datos de destino (Azure Cosmos DB en este caso).
    • Tenga en cuenta que JSON y CSV no son formatos compactos; es posible que se produzcan cargos de red excesivos, ya que mongoimport envía datos a Azure Cosmos DB.
  • mongodump/mongorestore es el mejor par de herramientas de migración para migrar toda la base de datos de MongoDB. El formato BSON compacto hará un uso más eficaz de los recursos de red a medida que los datos se inserten en Azure Cosmos DB.
    • mongodump exporta los datos existentes como un archivo BSON.
    • mongorestore importa el volcado del archivo BSON a Azure Cosmos DB.
  • Por otro lado, si solo tiene un archivo JSON pequeño que quiere importar a Azure Cosmos DB for MongoDB, la herramienta mongoimport es una solución rápida para la ingesta de datos.

Recopilación de las credenciales de Azure Cosmos DB for MongoDB

Azure Cosmos DB for MongoDB proporciona credenciales de acceso compatibles que las herramientas nativas de MongoDB pueden utilizar. Tendrá que tener estas credenciales de acceso a mano para poder migrar datos a Azure Cosmos DB for MongoDB. Para encontrar estas credenciales:

  1. Abra Azure Portal.

  2. Vaya a la cuenta de Azure Cosmos DB for MongoDB.

  3. En el panel de navegación izquierdo, seleccione la hoja Cadena de conexión y verá una pantalla similar a la siguiente:

    Captura de pantalla de credenciales de Azure Cosmos DB.

    • HOST: el punto de conexión de Azure Cosmos DB funciona como un nombre de host de MongoDB.
    • PORT (PUERTO): cuando las herramientas nativas de MongoDB se conectan a Azure Cosmos DB, debe especificar este puerto explícitamente.
    • USERNAME (NOMBRE DE USUARIO): el prefijo del nombre de dominio del punto de conexión de Azure Cosmos DB funciona como nombre de usuario de MongoDB.
    • PASSWORD (CONTRASEÑA): la clave maestra de Azure Cosmos DB funciona como contraseña de MongoDB.
    • Además, tenga en cuenta el campo SSL, que es true: la herramienta nativa de MongoDB debe habilitar SSL al escribir datos en Azure Cosmos DB.

Realización de la migración

  1. Elija las bases de datos y las recopilaciones que desee migrar. En este ejemplo, se va a migrar la recopilación de consultas de la base de datos edx desde MongoDB a Azure Cosmos DB.

El resto de esta sección le guiará en el uso del par de herramientas seleccionado en la sección anterior.

mongoexport/mongoimport

  1. Para exportar los datos de la instancia de MongoDB de origen, abra un terminal en la máquina de la instancia de MongoDB. Si se trata de un máquina Linux, escriba:

    mongoexport --host HOST:PORT --authenticationDatabase admin -u USERNAME -p PASSWORD --db edx --collection query --out edx.json
    

    En Windows, el archivo ejecutable será mongoexport.exe. Se deben rellenar HOST, PORT (PUERTO), USERNAME (NOMBRE DE USUARIO) y PASSWORD (CONTRASEÑA) en función de las propiedades de la instancia de base de datos de MongoDB existente.

    También puede optar por exportar solo un subconjunto del conjunto de datos de MongoDB. Una manera de hacerlo es agregar un argumento de filtro adicional:

    mongoexport --host HOST:PORT --authenticationDatabase admin -u USERNAME -p PASSWORD --db edx --collection query --out edx.json --query '{"field1":"value1"}'
    

    Solo se exportarán los documentos que coincidan con el filtro {"field1":"value1"}.

    Una vez ejecutada la llamada, verá que se produce un archivo edx.json:

    Captura de pantalla de una llamada a mongoexport.

  2. Puede usar el mismo terminal para importar edx.json a Azure Cosmos DB. Si está ejecutando mongoimport en una máquina Linux, escriba lo siguiente:

    mongoimport --host HOST:PORT -u USERNAME -p PASSWORD --db edx --collection importedQuery --ssl --type json --writeConcern="{w:0}" --file edx.json
    

    En Windows, el archivo ejecutable será mongoimport.exe. Se deben rellenar HOST, PORT (PUERTO), USERNAME (NOMBRE DE USUARIO) y PASSWORD (CONTRASEÑA) en función de las credenciales de Azure Cosmos DB que ha recopilado anteriormente.

  3. Supervise la salida del terminal desde mongoimport. Verá que imprime líneas de texto en el terminal que contiene actualizaciones en el estado de la migración:

    Captura de pantalla de una llamada a mongoimport.

  4. Por último, examine Azure Cosmos DB para asegurarse de que la migración se ha realizado correctamente. Abra el portal de Azure Cosmos DB y vaya al Explorador de datos. Verá (1) que se ha creado una base de datos edx con una recopilación importedQuery y (2) si ha exportado solo un subconjunto de datos, importedQuery debe contener solo los documentos que coincidan con el subconjunto que desee de los datos. En el ejemplo siguiente, solo un documento coincide con el filtro {"field1":"value1"}:

    Captura de pantalla de la comprobación de datos de Azure Cosmos DB.

mongodump/mongorestore

  1. Para crear un volcado de datos de BSON de la instancia de MongoDB, abra un terminal en la máquina de la instancia de MongoDB. Si se trata de un máquina Linux, escriba:

    mongodump --host HOST:PORT --authenticationDatabase admin -u USERNAME -p PASSWORD --db edx --collection query --ssl --out edx-dump
    

    Se deben rellenar HOST, PORT (PUERTO), USERNAME (NOMBRE DE USUARIO) y PASSWORD (CONTRASEÑA) en función de las propiedades de la instancia de base de datos de MongoDB existente. Verá que se genera un directorio edx-dump y que la estructura de directorios de edx-dump reproduce la jerarquía de recursos (estructura de base de datos y recopilación) de la instancia de MongoDB de origen. Cada recopilación se representa mediante un archivo BSON:

    Captura de pantalla de una llamada a mongodump.

  2. Puede usar el mismo terminal para restaurar el contenido de edx-dump en Azure Cosmos DB. Si está ejecutando mongorestore en una máquina Linux, escriba lo siguiente:

    mongorestore --host HOST:PORT --authenticationDatabase admin -u USERNAME -p PASSWORD --db edx --collection importedQuery --writeConcern="{w:0}" --ssl edx-dump/edx/query.bson
    

    En Windows, el archivo ejecutable será mongorestore.exe. Se deben rellenar HOST, PORT (PUERTO), USERNAME (NOMBRE DE USUARIO) y PASSWORD (CONTRASEÑA) en función de las credenciales de Azure Cosmos DB que ha recopilado anteriormente.

  3. Supervise la salida del terminal de mongorestore. Verá que imprime líneas en la actualización del terminal en el estado de migración:

    Captura de pantalla de una llamada a mongorestore.

  4. Por último, examine Azure Cosmos DB para asegurarse de que la migración se haya realizado correctamente. Abra el portal de Azure Cosmos DB y vaya al Explorador de datos. Verá (1) que se ha creado una base de datos edx con una recopilación importedQuery y (2) que importedQuery debe contener el conjunto de datos completo de la recopilación de origen:

    Captura de pantalla de la comprobación de los datos de mongorestore de Azure Cosmos DB.

Optimización posterior a la migración

Después de migrar los datos almacenados en la base de datos de MongoDB a la API de Azure Cosmos DB para MongoDB, puede conectarse a Azure Cosmos DB y administrar los datos. También puede realizar otros pasos de optimización posteriores a la migración, como optimizar la directiva de indexación, actualizar el nivel de coherencia predeterminado o configurar la distribución global de la cuenta de Azure Cosmos DB. Para más información, consulte el artículo Optimización posterior a la migración.

Recursos adicionales

Pasos siguientes