Migración de bases de datos de MySQL a Azure

En este artículo se muestra cómo la empresa ficticia Contoso evaluó, planificó y migró sus bases de datos de código abierto locales de MySQL a Azure.

Impulsores del negocio

El equipo directivo de TI ha trabajado estrechamente con sus socios comerciales para comprender lo quieren lograr con esta migración. Quieren:

  • Aumentar la disponibilidad. Contoso ha tenido problemas de disponibilidad con su entorno local de MySQL. La empresa requiere que las aplicaciones que usan este almacén de datos sean más confiables.
  • Aumentar la eficacia. Contoso debe quitar procedimientos innecesarios y optimizar los procesos para sus desarrolladores y usuarios. La empresa necesita que el departamento de TI sea rápido y no gaste tiempo ni dinero para satisfacer más rápidamente los requisitos del cliente.
  • Aumentar la agilidad. el equipo de TI de Contoso necesita más capacidad de respuesta a las necesidades de la empresa. Debe poder reaccionar con más rapidez que los cambios del mercado para facilitar el éxito en una economía global. Esto no debe convertirse en un elemento de bloqueo de la empresa.
  • Escala. A medida que el negocio crece satisfactoriamente, el equipo de TI de Contoso debe proporcionar sistemas que crezcan al mismo ritmo.

Nota

Para obtener instrucciones detalladas sobre las migraciones a Azure Database for MySQL con laboratorios, consulte Guía de migración de Azure MySQL.

Objetivos de la migración

El equipo de la nube de Contoso ha establecido los objetivos de esta migración. Estos objetivos se usaron para determinar el mejor método de migración.

Requisitos Detalles
Disponibilidad Actualmente, el personal interno tiene dificultades con el entorno de hospedaje de la instancia de MySQL. Contoso desea tener un nivel de disponibilidad de la capa de base de datos que esté cerca del 99,99 %.
Escalabilidad El host de base de datos local se está quedando sin capacidad rápidamente. Contoso necesita una forma de escalar sus instancias más allá de las limitaciones actuales o reducir la escala verticalmente si el entorno empresarial cambia, para ahorrar costos.
Rendimiento El departamento de recursos humanos de Contoso ejecuta varios informes diariamente, semanalmente y mensualmente. Al ejecutar estos informes, experimenta importantes problemas de rendimiento asociados a la aplicación orientada a los empleados. Es necesario ejecutar los informes sin que afecte al rendimiento de la aplicación.
Seguridad Contoso necesita saber que la base de datos solo está accesible para sus aplicaciones internas, pero no está visible ni accesible a través de Internet.
Supervisión Contoso usa actualmente herramientas para supervisar las métricas del servidor de bases de datos de MySQL y para enviar notificaciones cuando la CPU, la memoria o el almacenamiento tienen problemas. La empresa quiere disponer de esta misma funcionalidad en Azure.
Continuidad del negocio El almacén de datos de RR. HH. es una parte importante de las operaciones diarias de Contoso. Si resulta dañado o es necesario restaurarlo, la empresa desea minimizar el tiempo de inactividad en la medida de lo posible.
Azure Contoso quiere mover la aplicación a Azure sin ejecutarla en máquinas virtuales. Contoso quiere usar los servicios de plataforma como servicio (PaaS) de Azure para la capa de datos.

Diseño de la solución

Después de precisar los objetivos y requisitos, Contoso diseña y revisa una solución de implementación e identifica el proceso de migración. También se identifican las herramientas y los servicios que se usarán para la migración.

Aplicación actual

La base de datos de MySQL hospeda datos de empleados que se utilizan en todos los niveles del Departamento de RR. HH. de la empresa. Se emplea una aplicación basada en LAMP como front-end para administrar las solicitudes de RR. HH. a los empleados. Contoso tiene 100 000 empleados en todo el mundo, por lo que el tiempo de actividad es importante.

Solución propuesta

Use Azure Database Migration Service o migre la base de datos a una instancia de Azure Database for MySQL. Modificar todas las aplicaciones y procesos para que utilicen la nueva instancia de Azure Database for MySQL.

Consideraciones sobre la base de datos

Como parte del proceso de diseño de la solución, Contoso revisó las características de Azure para hospedar los datos de MySQL. Las siguientes consideraciones sirvieron a la empresa para decidir utilizar Azure:

  • Al igual que Azure SQL Database, Azure Database for MySQL permite usar reglas de Firewall.
  • Azure Database for MySQL puede usarse junto con Azure Virtual Network para evitar que la instancia sea accesible públicamente.
  • Azure Database for MySQL cuenta con las certificaciones de privacidad y cumplimiento que Contoso necesita presentar a sus auditores.
  • El rendimiento del procesamiento de informes y aplicaciones mejorará mediante el uso de réplicas de lectura.
  • Posibilidad de exponer el servicio solo al tráfico de red interno (acceso no público) mediante Azure Private Link.
  • Contoso decidió no migrar a Azure Database for MySQL porque están planteándose utilizar en el futuro MariaDB ColumnStore y el modelo de base de datos de grafos.
  • Aparte de por las características de MySQL, Contoso es partidario de los proyectos de código abierto verdaderos y decidió no usar MySQL.
  • El ancho de banda y la latencia de la aplicación con respecto a la base de datos serán suficientes de acuerdo con la puerta de enlace elegida (Azure ExpressRoute o VPN de sitio a sitio).

Revisión de la solución

Contoso evalúa el diseño propuesto y crea una lista de ventajas y desventajas.

Consideración Detalles
Ventajas Azure Database for MySQL ofrece un contrato de nivel de servicio con un respaldo financiero del 99,99 % en términos de alta disponibilidad.

Azure facilita el escalado vertical o la reducción vertical en épocas de máxima carga en cada trimestre. Contoso puede ahorrar aún más si compra capacidad reservada.

Azure proporciona funcionalidades de restauración a un momento dado y de restauración geográfica para Azure Database for MySQL.

Desventajas Contoso se limita a usar las versiones de lanzamiento de MySQL que son compatibles con Azure, que son actualmente la 10.2 y la 10.3.

Azure Database for MySQL tiene algunas limitaciones, como la reducción vertical del almacenamiento.

Arquitectura propuesta

En el diagrama se muestra la arquitectura del escenario.Figura 1: Arquitectura del escenario.

Proceso de migración

Preparación

Antes de migrar las bases de datos de MySQL, debe asegurarse de que esas instancias cumplan todos los requisitos previos de Azure para que la migración se realice correctamente.

Versiones compatibles

MySQL usa el esquema de versiones x.y.z, donde x es la versión principal, y es la versión secundaria y z es la versión de revisión.

Azure admite actualmente las versiones 10.2.25 y 10.3.16 de MySQL.

Azure administra automáticamente las actualizaciones de revisiones. Algunos ejemplos son de 10.2.21 a 10.2.23. Actualmente, no se admiten las actualizaciones de las versiones principales y secundarias. Por ejemplo, no se admite la actualización de MySQL 10.2 a MySQL 10.3. Si quiere actualizar de la versión 10.2 a la 10.3, realice un volcado de memoria y restáurela en un servidor creado con la nueva versión del motor.

Red

Contoso tiene que configurar una conexión de puerta de enlace de red virtual desde el entorno local a la red virtual donde está ubicada la base de datos de MySQL. Esta conexión permitirá que la aplicación local acceda a la base de datos a través de la puerta de enlace al actualizar las cadenas de conexión.

Diagrama que muestra el proceso de migración.Figura 2: El proceso de migración.

Migración

Los administradores de Contoso siguen el tutorial de migración paso a paso para migrar la base de datos con Azure Database Migration Service. Pueden realizar migraciones en línea, sin conexión e híbridas (versión preliminar) mediante MySQL 5.6 o 5.7.

Nota:

MySQL 8.0 se admite en Azure Database for MySQL. La herramienta Database Migration Service todavía no admite esa versión.

En resumen, deben completar las tareas siguientes:

  • Asegúrese de que se cumplen todos los requisitos previos:

    • El origen del servidor de bases de datos MySQL debe coincidir con la versión que admite Azure Database for MySQL. Azure Database for MySQL admite MySQL Community Edition, el motor de almacenamiento InnoDB y la migración entre origen y destino con las mismas versiones.

    • Habilite el registro binario en my.ini (Windows) o my.cnf (Unix). Si no se habilita el registro binario, se producirá el siguiente error en el asistente para migración:

      Error in binary logging. Variable binlog_row_image has value 'minimal'. Please change it to 'full'.

      Para obtener más información, consulte Opciones y variables del registro binario en la documentación de MySQL.

    • El usuario debe tener el rol ReplicationAdmin.

    • Migre los esquemas de base de datos sin claves externas ni desencadenadores.

  • Cree una red virtual que se conecte a través de ExpressRoute o VPN a la red local.

  • Cree una instancia de Azure Database Migration Service con una SKU Premium que esté conectada a la red virtual.

  • Asegúrese de que la instancia pueda acceder a la base de datos de MySQL a través de la red virtual. Asegúrese de que todos los puertos de entrada estén permitidos desde Azure a MySQL en el nivel de la red virtual, la VPN de red y la máquina que hospeda MySQL.

  • Creación de un proyecto de Database Migration Service:

    Captura de pantalla que muestra cómo crear un proyecto de Database Migration ServiceFigura 3: Proyecto de Azure Database Migration Service.

Migración mediante herramientas nativas

Como alternativa al uso de Azure Database Migration Service, Contoso puede usar utilidades y herramientas habituales como MySQL Workbench, mysqldump, Toad o Navicat, para conectarse a los datos y migrarlos a Azure Database for MySQL.

  • Volcado y restauración con mysqldump:
    • Use la opción para excluir desencadenadores de mysqldump para impedir que se ejecuten los desencadenadores durante la importación y mejorar el rendimiento.
    • Use la opción de transacción única para establecer el modo de aislamiento de traducción en REPEATABLE READ y enviar una instrucción SQL START TRANSACTION antes de volcar los datos.
    • Use la opción para deshabilitar claves de mysqldump para deshabilitar las restricciones de clave externa antes de la carga. La eliminación de restricciones proporciona mejoras en el rendimiento.
    • Use Azure Blob Storage para almacenar los archivos de copia de seguridad y realizar la restauración a partir de ahí para una restauración más rápida.
    • Actualice las cadenas de conexión de la aplicación.
    • Después de haber migrado la base de datos, Contoso debe actualizar las cadenas de conexión para que apunten a la nueva instancia de Azure Database for MySQL.

Limpiar después de la migración

Después de la migración, Contoso debe realizar una copia de seguridad de la base de datos local con fines de retención y retirar el servidor de bases de datos local de MySQL.

Revisión de la implementación

Con los recursos migrados de Azure, Contoso debe proteger la infraestructura nueva y ponerla totalmente en marcha.

Seguridad

Contoso debe:

  • Asegurarse de que la nueva instancia de Azure Database for MySQL y las bases de datos estén protegidas. Para más información, consulte Seguridad en Azure Database for MySQL.
  • Revisar las configuraciones de firewall y de red virtual.
  • Configure Private Link para que todo el tráfico de las bases de datos se mantenga dentro de Azure y la red local.
  • Habilite Microsoft Defender for Identity.

Copias de seguridad

Asegúrese de que se realiza una copia de seguridad de las instancias de Azure Database for MySQL mediante la restauración geográfica, de modo que se puedan usar copias de seguridad de una región emparejada si se produce una interrupción regional.

Importante

Asegúrese de que el recurso de Azure Database for MySQL disponga de un bloqueo de recursos para impedir su eliminación. No se pueden restaurar los servidores eliminados.

Optimización de los costos y licencias

  • Azure Database for MySQL se puede escalar o reducir verticalmente. La supervisión del rendimiento del servidor y las bases de datos es importante para garantizar que se cumplan los requisitos, a la vez que se minimizan los costos.
  • Tanto la CPU como el almacenamiento tienen costos asociados. Hay disponibles varios planes de tarifa. Asegúrese de que esté seleccionado el plan de precios adecuado para cada carga de trabajo de datos.
  • Cada réplica de lectura se factura según el proceso y el almacenamiento seleccionados.
  • Use la capacidad reservada para ahorrar costos.

Conclusión

En este artículo, Contoso migró sus bases de datos de MySQL a una instancia de Azure Database for MySQL.