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
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.
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) omy.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:
Figura 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 SQLSTART 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.