Tutorial: Migración de MySQL a Azure Database for MySQL sin conexión mediante DMS

Azure Database Migration Service se puede usar para hacer una única migración de base de datos completa de una instancia local de MySQL a Azure Database for MySQL con ayuda de funcionalidad de migración de datos de alta velocidad. En este tutorial, migrará una base de datos de ejemplo a partir de una instancia local de MySQL 5.7 a Azure Database for MySQL (v5.7) mediante una actividad de migración sin conexión en Azure Database Migration Service. Aunque en los artículos se da por supuesto que el origen es una instancia de base de datos MySQL y el destino es Azure Database for MySQL, se puede usar para migrar de una instancia de Azure Database for MySQL a otra simplemente cambiando el nombre y las credenciales del servidor de origen. También se admite la migración desde servidores MySQL de una versión inferior (v5.6 y versiones por encima) a versiones posteriores.

Importante

Para las migraciones en línea, puede usar herramientas de código abierto, como MyDumper/MyLoader, con replicación de datos de entrada.

Nota

Para obtener una versión que admite scripts basada en PowerShell de esta experiencia de migración, consulte la migración sin conexión mediante scripts a Azure Database for MySQL.

Nota

Los servicios Amazon Relational Database Service (RDS) para MySQL y Amazon Aurora (basado en MySQL) también se admiten como orígenes de la migración.

En este tutorial, aprenderá a:

  • Migre el esquema de la base de datos mediante la utilidad mysqldump.
  • Crear una instancia de Azure Database Migration Service.
  • Crear un proyecto de migración mediante Azure Database Migration Service.
  • Ejecutar la migración.
  • Supervisar la migración

Requisitos previos

Para completar este tutorial, necesita:

  • Disponga de una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.

  • Disponer de una base de datos MySQL local con la versión 5.7. Si no la tiene, descargue e instale MySQL Community edition 5.7.

  • La migración sin conexión de MySQL solo se admite en la SKU de DMS Premium.

  • Creación de una instancia en Azure Database for MySQL. Consulte el artículo Uso de MySQL Workbench para conectarse y consultar datos en Azure Database for MySQL y obtenga más información sobre cómo conectarse y crear una base de datos mediante la aplicación Workbench. La versión de Azure Database for MySQL debe ser igual o superior a la versión local de MySQL. Por ejemplo, MySQL 5.7 admite la migración a Azure Database for MySQL 5.7 o la actualización a la versión 8.

  • Cree una instancia de Microsoft Azure Virtual Network para Azure Database Migration Service con el modelo de implementación de Azure Resource Manager, que proporciona conectividad de sitio a sitio a los servidores de origen local mediante ExpressRoute o VPN. Para más información sobre la creación de una red virtual, consulte la documentación de Virtual Networky, especialmente, los artículos de inicio rápido con detalles paso a paso.

    Nota

    Durante la configuración de la red virtual, si usa ExpressRoute con emparejamiento de red a Microsoft, agregue los puntos de conexión de servicio siguientes a la subred en la que se aprovisionará el servicio:

    • Punto de conexión de base de datos de destino (por ejemplo, punto de conexión de SQL, punto de conexión de Cosmos DB, etc.)
    • Punto de conexión de Storage
    • Punto de conexión de Service Bus

    Esta configuración es necesaria porque Azure Database Migration Service no tiene conexión a Internet.

  • Asegúrese de que las reglas del grupo de seguridad de red de la red virtual no bloquean el puerto de salida 443 de ServiceTag para ServiceBus, Storage y AzureMonitor. Para más información sobre el filtrado del tráfico con grupos de seguridad de red para redes virtuales, vea el artículo Filtrado del tráfico de red con grupos de seguridad de red.

  • Abra el firewall de Windows para permitir conexiones de la red virtual para que Azure Database Migration Service puede acceder al servidor MySQL de origen que, de manera predeterminada, usa el puerto TCP 3306.

  • Cuando se usa un dispositivo de firewall frente a las bases de datos de origen, puede que sea necesario agregar reglas de firewall para permitir conexiones desde la red virtual para que Azure Database Migration Service acceda a las bases de datos de origen para realizar la migración.

  • Cree una regla de firewall de nivel de servidor o configure puntos de conexión de servicio de red virtual para que la instancia de Azure Database for MySQL de destino permita la red virtual para que Azure Database Migration Service acceda a las bases de datos de destino.

  • La versión de la instancia de MySQL de origen debe ser compatible con MySQL community edition. Para determinar la versión de la instancia de MySQL, en la utilidad de MySQL o en MySQL Workbench, ejecute el siguiente comando:

    SELECT @@version;
    
  • Azure Database for MySQL solo es compatible con tablas de InnoDB. Para convertir tablas de MyISAM a InnoDB, consulte el artículo Converting Tables from MyISAM to InnoDB (Cómo convertir tablas de MyISAM a InnoDB)

  • El usuario debe tener privilegios para leer datos en la base de datos de origen.

Dimensionamiento de la instancia de Azure Database for MySQL de destino

Para preparar el servidor de destino de Azure Database for MySQL para cargas de datos más rápidas mediante Azure Database Migration Service, se recomiendan los siguientes parámetros de servidor y cambios de configuración.

  • max_allowed_packet: establézcalo en 1 073 741 824 (es decir, 1 GB) para evitar cualquier problema de conexión debido a filas largas.
  • slow_query_log: establézcalo en OFF para desactivar el registro de consultas lentas. Esto eliminará la sobrecarga causada por un registro de consultas lento durante las cargas de datos.
  • query_store_capture_mode: establézcalo en NONE para desactivar el Almacén de consultas. Esto eliminará la sobrecarga causada por las actividades de muestreo en el Almacén de consultas.
  • innodb_buffer_pool_size: innodb_buffer_pool_size solo se puede aumentar escalando el proceso para el servidor de Azure Database for MySQL. Escale verticalmente el servidor a una SKU de uso general de 64 núcleos virtuales del plan de tarifa del portal durante la migración para aumentar innodb_buffer_pool_size.
  • innodb_io_capacity e innodb_io_capacity_max: cambie a 9000 de los parámetros del servidor en Azure Portal para mejorar el uso de la E/S a fin de optimizar la velocidad de la migración.
  • innodb_write_io_threads e innodb_write_io_threads: cambie a 4 desde los parámetros del servidor en Azure Portal para mejorar la velocidad de la migración.
  • Escalar verticalmente la capa de almacenamiento: las IOPs para el servidor de Azure Database for MySQL aumentan progresivamente con el aumento de la capa de almacenamiento.
    • En la opción de implementación de servidor único, para cargas más rápidas, se recomienda aumentar el nivel de almacenamiento para aumentar las E/S por segundo aprovisionadas.
    • En la opción de implementación de servidor flexible, se recomienda escalar (aumentar o disminuir) las IOPS independientemente del tamaño de almacenamiento.
    • Tenga en cuenta que el tamaño del almacenamiento solo se puede escalar verticalmente, no reducir.

Una vez completada la migración, puede revertir los parámetros del servidor y la configuración a los valores requeridos por la carga de trabajo.

Migración del esquema de base de datos

Para transferir todos los objetos de base de datos, como esquemas de tablas, índices y procedimientos almacenados, es necesario extraer el esquema de la base de datos de origen y aplicarlo a la base de datos de destino. Para extraer el esquema, puede usar mysqldump con el parámetro --no-data. Para ello, necesita una máquina que pueda conectarse a la base de datos de MySQL de origen y a la instancia de Azure Database for MySQL de destino.

Para exportar el esquema mediante mysqldump, ejecute el siguiente comando:

mysqldump -h [servername] -u [username] -p[password] --databases [db name] --no-data > [schema file path]

Por ejemplo:

mysqldump -h 10.10.123.123 -u root -p --databases migtestdb --no-data > d:\migtestdb.sql

Para importar el esquema a la instancia de Azure Database for MySQL de destino, ejecute el siguiente comando:

mysql.exe -h [servername] -u [username] -p[password] [database]< [schema file path]

Por ejemplo:

mysql.exe -h mysqlsstrgt.mysql.database.azure.com -u docadmin@mysqlsstrgt -p migtestdb < d:\migtestdb.sql

Si el esquema tiene claves externas o desencadenadores, la tarea de migración regulará la carga de datos en paralelo durante la migración. No es necesario descartar las claves externas ni los desencadenadores durante la migración del esquema.

Registro del proveedor de recursos Microsoft.DataMigration

  1. Inicie sesión en Azure Portal. Busque y seleccione Suscripciones.

    Mostrar suscripciones en el portal

  2. Seleccione la suscripción en la que quiere crear la instancia de Azure Database Migration Service y después seleccione Proveedores de recursos.

    Mostrar los proveedores de recursos

  3. Busque la migración y, después, seleccione Registrar para Microsoft.DataMigration.

    Registro del proveedor de recursos

Creación de una instancia de Azure Database Migration Service

  1. En Azure Portal, seleccione + Crear un recurso, busque Azure Database Migration Service y, después, seleccione Azure Database Migration Service en la lista desplegable.

    Azure Marketplace

  2. En la pantalla Azure Database Migration Service, seleccione Crear.

    Creación de una instancia de Azure Database Migration Service

  3. En la pantalla Crear el servicio de migración, especifique un nombre para el servicio, la suscripción y un grupo de recursos nuevo o existente.

  4. Seleccione un plan de tarifa y pase a la pantalla de redes. La funcionalidad de migración sin conexión solo está disponible en el plan de tarifa Premium.

    Para más información sobre los costos y planes de tarifa, vea la página de precios.

    Configuración básica de Azure Database Migration Service

  5. Seleccione una red virtual existente en la lista o proporcione el nombre de la nueva red virtual que se va a crear. Acceda a la pantalla de revisión y creación. Como alternativa, puede agregar etiquetas al servicio mediante la pantalla de etiquetas.

    La red virtual proporciona a Azure Database Migration Service acceso al servidor SQL Server de origen y a la instancia de Azure SQL Database de destino.

    Configuración de red de Azure Database Migration Service

    Para más información sobre cómo crear una red virtual en Azure Portal, consulte el artículo Creación de una red virtual con Azure Portal.

  6. Revise las configuraciones y seleccione Crear para crear el servicio.

    Creación de Azure Database Migration Service

Creación de un proyecto de migración

Después de crear el servicio, búsquelo en Azure Portal, ábralo y cree un proyecto de migración.

  1. En Azure Portal, seleccione Todos los servicios, busque Azure Database Migration Service y, luego, elija Azure Database Migration Services.

    Búsqueda de todas las instancias de Azure Database Migration Service

  2. Seleccione la instancia del servicio de migración en los resultados de búsqueda y seleccione Nuevo proyecto de migración.

    Creación de un proyecto de migración

  3. En la pantalla Nuevo proyecto de migración, especifique un nombre para el proyecto. En el cuadro de selección Tipo de servidor de origen, seleccione MySQL y, en el cuadro selección Tipo de servidor de destino, seleccione Azure Database for MySQL. Por último, en el cuadro de selección Tipo de actividad de migración, seleccione Migración de datos. Seleccione Crear y ejecutar una actividad.

    Creación de un proyecto de Database Migration Service

    Nota

    Como alternativa, puede elegir Crear solo un proyecto para crear el proyecto de migración ahora y ejecutar la migración más adelante.

Configuración del proyecto de migración

  1. En la pantalla Seleccionar origen, especifique los detalles de conexión de la instancia de origen de MySQL Server y seleccione Siguiente: Seleccionar destino>> .

    Pantalla Agregar detalles de origen

  2. En la pantalla Seleccionar destino, especifique los detalles de conexión para la instancia de destino de Azure Database for MySQL y seleccione Siguiente: Seleccionar bases de datos>> .

    Pantalla Agregar detalles de destino

  3. En la pantalla Seleccionar bases de datos, asigne el origen a la base de datos de destino para la migración y seleccione Siguiente: Configurar los valores de migración>> . Puede seleccionar la opción Make Source Server Readonly (Hacer que el servidor de origen sea de solo lectura) para que el origen sea de solo lectura, pero tenga en cuenta que esta es una configuración de nivel de servidor. Si la opción se selecciona, establecerá todo el servidor como de solo lectura, no únicamente las bases de datos seleccionadas.

    Si la base de datos de destino contiene el mismo nombre de base de datos que la de origen, Azure Database Migration Service selecciona la base de datos de destino de forma predeterminada. Pantalla Seleccionar detalles de la base de datos

    Nota

    Aunque puede seleccionar varias bases de datos en este paso, hay límites en cuanto al número y la rapidez con que se pueden migrar las bases de datos de esta manera, ya que cada base de datos compartirá recursos de proceso. Con la configuración predeterminada de la SKU Premium, cada tarea de migración intentará migrar dos tablas a la vez. Estas tablas pueden proceder de cualquiera de las bases de datos seleccionadas. Si el proceso no es lo suficientemente rápido, puede dividir las actividades de migración de bases de datos en diferentes tareas de migración y escalarlas en varios servicios. Además, hay un límite de diez instancias de Azure Database Migration Service por suscripción y región. Para un control más detallado sobre el rendimiento de la migración y la paralelización, consulte el artículo sobre PowerShell: Ejecución de una migración sin conexión desde la base de datos MySQL a Azure Database for MySQL mediante DMS.

  4. En la pantalla Configurar los valores de la migración, seleccione las tablas que formarán parte de la migración. A continuación, seleccione Siguiente: Resumen>> . Si las tablas de destino contienen datos, no se seleccionarán de forma predeterminada, pero puede seleccionarlos explícitamente y se truncarán antes de iniciar la migración.

    Pantalla Seleccionar tablas

  5. En la pantalla Resumen, en el cuadro de texto Nombre de la actividad, especifique un nombre para la actividad de migración y, a continuación, revise el resumen para asegurarse de que los detalles de origen y de destino coincidan con los que especificó anteriormente.

    Resumen del proyecto de migración

  6. Seleccione Iniciar migración. Aparecerá la ventana de actividad de migración. El estado de la actividad es Inicializando. El estado cambia a En ejecución cuando se inician las migraciones de tabla.

    Ejecución de la migración

Supervisión de la migración

  1. En la pantalla de la actividad de migración, seleccione Actualizar para ver la información actualizada y el progreso en relación con el número de tablas completadas.

  2. Haga clic en el nombre de la base de datos en la pantalla de actividad para ver el estado de cada tabla a medida que se migran. Seleccione Actualizar para ver la información actualizada.

    Supervisión de la migración

Completar la migración

  1. En la pantalla de la actividad de migración, seleccione Actualizar para actualizar la vista hasta que el valor de Estado de la migración sea Completado.

    Completar migración

Actividades posteriores a la migración

La migración total en una migración sin conexión es un proceso dependiente de la aplicación que queda fuera del alcance de este documento, pero se recomienda llevar a cabo las siguientes actividades después de la migración:

  1. Crear inicios de sesión, roles y permisos según los requisitos de la aplicación.
  2. Volver a crear todos los desencadenadores de la base de datos de destino que se retiraron en el paso previo a la migración.
  3. Hacer pruebas de seguridad de la aplicación en la base de datos de destino para verificar la migración.

Limpieza de recursos

Si no va a seguir usando Database Migration Service, puede eliminar el servicio mediante los pasos siguientes:

  1. En Azure Portal, seleccione Todos los servicios, busque Azure Database Migration Service y, luego, elija Azure Database Migration Services.

    Buscar todas las instancias de DMS

  2. Seleccione la instancia del servicio de migración en los resultados de la búsqueda. A continuación, seleccione Eliminar servicio.

    Elimine el servicio de migración.

  3. En el cuadro de diálogo de confirmación, escriba el nombre del servicio en el cuadro de texto TYPE THE DATABASE MIGRATION SERVICE (ESCRIBIR EL NOMBRE DE DATABASE MIGRATION SERVICE) y seleccione Eliminar.

    Confirmar la eliminación del servicio de migración

Pasos siguientes