Migración de bases de datos de MySQL a AzureMigrate MySQL databases to 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.This article demonstrates how the fictional company Contoso planned and migrated its on-premises MySQL open-source database platform to Azure.

Impulsores del negocioBusiness drivers

El equipo directivo de TI ha trabajado estrechamente con sus socios comerciales para comprender lo quieren lograr con esta migración.The IT leadership team has worked closely with business partners to understand what they want to achieve with this migration. Quieren:They want to:

  • Aumentar la disponibilidad.Increase availability. Contoso ha tenido problemas de disponibilidad con su entorno local de MySQL.Contoso has had availability issues with its MySQL on-premises environment. La empresa requiere que las aplicaciones que usan este almacén de datos sean más confiables.The business requires the applications that use this data store to be more reliable.
  • Aumentar la eficacia.Increase efficiency. Contoso debe quitar procedimientos innecesarios y optimizar los procesos para sus desarrolladores y usuarios.Contoso needs to remove unnecessary procedures and streamline processes for developers and users. 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.The business needs IT to be fast and not waste time or money to deliver faster on customer requirements.
  • Aumentar la agilidad.Increase agility. el equipo de TI de Contoso necesita más capacidad de respuesta a las necesidades de la empresa.Contoso IT needs to be more responsive to the needs of the business. Debe poder reaccionar con más rapidez que los cambios del mercado para facilitar el éxito en una economía global.It must react faster than the changes in the marketplace to enable success in a global economy. Esto no debe convertirse en un elemento de bloqueo de la empresa.It mustn't become a business blocker.
  • Escala.Scale. A medida que el negocio crece satisfactoriamente, el equipo de TI de Contoso debe proporcionar sistemas que crezcan al mismo ritmo.As the business grows successfully, Contoso IT must provide systems that grow at the same pace.

Objetivos de la migraciónMigration goals

El equipo de la nube de Contoso ha establecido los objetivos de esta migración.The Contoso cloud team has pinned down goals for this migration. Estos objetivos se usaron para determinar el mejor método de migración.These goals were used to determine the best migration method.

RequisitosRequirements DetallesDetails
DisponibilidadAvailability Actualmente, el personal interno tiene dificultades con el entorno de hospedaje de la instancia de MySQL.Currently internal staff are having a hard time with the hosting environment for the MySQL instance. Contoso desea tener un nivel de disponibilidad de la capa de base de datos que esté cerca del 99,99 %.Contoso wants to have close to 99.99 percent availability for the database layer.
EscalabilidadScalability El host de base de datos local se está quedando sin capacidad rápidamente.The on-premises database host is quickly running out of capacity. 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.Contoso needs a way to scale its instances past current limitations or scale down if the business environment changes to save on costs.
RendimientoPerformance El departamento de recursos humanos de Contoso ejecuta varios informes diariamente, semanalmente y mensualmente.The Contoso human resources (HR) department runs various reports daily, weekly, and monthly. Al ejecutar estos informes, experimenta importantes problemas de rendimiento asociados a la aplicación orientada a los empleados.When it runs these reports, it experiences significant performance issues with the employee-facing application. Es necesario ejecutar los informes sin que afecte al rendimiento de la aplicación.It needs to run the reports without affecting application performance.
SeguridadSecurity 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.Contoso needs to know that the database is accessible only to its internal applications and isn't visible or accessible via the internet.
SupervisiónMonitoring 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.Contoso currently uses tools to monitor the metrics of the MySQL database server and provide notifications when CPU, memory, or storage have issues. La empresa quiere disponer de esta misma funcionalidad en Azure.The company wants to have this same capability in Azure.
Continuidad del negocioBusiness continuity El almacén de datos de RR. HH. es una parte importante de las operaciones diarias de Contoso.The HR data store is an important part of Contoso's daily operations. Si resulta dañado o es necesario restaurarlo, la empresa desea minimizar el tiempo de inactividad en la medida de lo posible.If it became corrupted or needed to be restored, the company wants to minimize downtime as much as possible.
AzureAzure Contoso quiere mover la aplicación a Azure sin ejecutarla en máquinas virtuales.Contoso wants to move the application to Azure without running it on VMs. Contoso quiere usar los servicios de plataforma como servicio (PaaS) de Azure para la capa de datos.Contoso wants to use Azure platform as a service (PaaS) services for the data tier.

Diseño de la soluciónSolution design

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.After pinning down goals and requirements, Contoso designs and reviews a deployment solution and identifies the migration process. También se identifican las herramientas y los servicios que se usarán para la migración.The tools and services that it will use for migration are also identified.

Aplicación actualCurrent application

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.The MySQL database stores employee data that's used for all aspects of the company's HR department. Se emplea una aplicación basada en LAMP como front-end para administrar las solicitudes de RR. HH. a los empleados.A LAMP-based application is used as the front end to handle employee HR requests. Contoso tiene 100 000 empleados en todo el mundo, por lo que el tiempo de actividad es importante.Contoso has 100,000 employees worldwide, so uptime is important.

Solución propuestaProposed solution

Use Azure Database Migration Service o migre la base de datos a una instancia de Azure Database for MySQL.Use Azure Database Migration Service to migrate the database to an Azure Database for MySQL instance. Modificar todas las aplicaciones y procesos para que utilicen la nueva instancia de Azure Database for MySQL.Modify all applications and processes to use the new Azure Database for MySQL instance.

Consideraciones sobre la base de datosDatabase considerations

Como parte del proceso de diseño de la solución, Contoso revisó las características de Azure para hospedar los datos de MySQL.As part of the solution design process, Contoso reviewed the features in Azure for hosting its MySQL data. Las siguientes consideraciones sirvieron a la empresa para decidir utilizar Azure:The following considerations helped the company decide to use Azure:

  • Al igual que Azure SQL Database, Azure Database for MySQL permite usar reglas de Firewall.Similar to Azure SQL Database, Azure Database for MySQL allows for firewall rules.
  • Azure Database for MySQL puede usarse junto con Azure Virtual Network para evitar que la instancia sea accesible públicamente.Azure Database for MySQL can be used with Azure Virtual Network to prevent the instance from being publicly accessible.
  • Azure Database for MySQL cuenta con las certificaciones de privacidad y cumplimiento que Contoso necesita presentar a sus auditores.Azure Database for MySQL has the required compliance and privacy certifications that Contoso must meet for its auditors.
  • El rendimiento del procesamiento de informes y aplicaciones mejorará mediante el uso de réplicas de lectura.Report and application processing performance will be enhanced by using read replicas.
  • Posibilidad de exponer el servicio solo al tráfico de red interno (acceso no público) mediante Azure Private Link.Ability to expose the service to internal network traffic only (no public access) by using 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.Contoso chose not to move to Azure Database for MySQL because it's considering using the MariaDB ColumnStore and graph database model in the future.
  • Aparte de por las características de MySQL, Contoso es partidario de los proyectos de código abierto verdaderos y decidió no usar MySQL.Aside from MySQL features, Contoso is a proponent of true open-source projects and chose not to use 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).The bandwidth and latency from the application to the database will be sufficient enough based on the chosen gateway (either Azure ExpressRoute or Site-to-Site VPN).

Revisión de la soluciónSolution review

Contoso evalúa el diseño propuesto y crea una lista de ventajas y desventajas.Contoso evaluates the proposed design by putting together a pros and cons list.

ConsideraciónConsideration DetallesDetails
VentajasPros 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 Database for MySQL offers a 99.99 percent financially backed service-level agreement (SLA) for high availability.

Azure facilita el escalado vertical o la reducción vertical en épocas de máxima carga en cada trimestre.Azure offers the ability to scale up or down during peak load times each quarter. Contoso puede ahorrar aún más si compra capacidad reservada.Contoso can save even more by purchasing reserved capacity.

Azure proporciona funcionalidades de restauración a un momento dado y de restauración geográfica para Azure Database for MySQL.Azure provides point-in-time restore and geo-restore capabilities for Azure Database for MySQL.

DesventajasCons 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.Contoso is limited to the MySQL release versions that are supported in Azure, which are currently 10.2 and 10.3.

Azure Database for MySQL tiene algunas limitaciones, como la reducción vertical del almacenamiento.Azure Database for MySQL has some limitations, such as scaling down storage.

Arquitectura propuestaProposed architecture

En el diagrama se muestra la arquitectura del escenario. Ilustración 1: Arquitectura del escenario.Diagram shows the scenario architecture. Figure 1: Scenario architecture.

Proceso de migraciónMigration process

PreparaciónPreparation

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.Before you can migrate your MySQL databases, you need to ensure that those instances meet all the Azure prerequisites for a successful migration.

Versiones compatiblesSupported versions

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.MySQL uses the x.y.z versioning scheme, where x is the major version, y is the minor version, and z is the patch version.

Azure admite actualmente las versiones 10.2.25 y 10.3.16 de MySQL.Azure currently supports MySQL versions 10.2.25 and 10.3.16.

Azure administra automáticamente las actualizaciones de revisiones.Azure automatically manages upgrades for patch updates. Algunos ejemplos son de 10.2.21 a 10.2.23.Examples are 10.2.21 to 10.2.23. Actualmente, no se admiten las actualizaciones de las versiones principales y secundarias.Minor and major version upgrades aren't supported. Por ejemplo, no se admite la actualización de MySQL 10.2 a MySQL 10.3.For example, upgrading from MySQL 10.2 to MySQL 10.3 isn't supported. 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.If you want to upgrade from 10.2 to 10.3, take a dump and restore it to a server created with the new engine version.

RedNetwork

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.Contoso needs to set up a virtual network gateway connection from its on-premises environment to the virtual network where its MySQL database is located. 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.This connection allows the on-premises application to access the database over the gateway when the connection strings are updated.

En el diagrama se muestra el proceso de migración. Ilustración 2: El proceso de migración.Diagram shows the migration process. Figure 2: The migration process.

MigraciónMigration

Los administradores de Contoso siguen el tutorial de migración paso a paso para migrar la base de datos con Azure Database Migration Service.Contoso admins migrate the database by using Azure Database Migration Service and following the step-by-step migration tutorial. Pueden realizar migraciones en línea, sin conexión e híbridas (versión preliminar) mediante MySQL 5.6 o 5.7.They can perform online, offline, and hybrid (preview) migrations by using MySQL 5.6 or 5.7.

Nota

MySQL 8.0 se admite en Azure Database for MySQL.MySQL 8.0 is supported in Azure Database for MySQL. La herramienta Database Migration Service todavía no admite esa versión.The Database Migration Service tool doesn't yet support that version.

En resumen, deben completar las tareas siguientes:As a summary, they must do the following tasks:

  • Asegúrese de que se cumplen todos los requisitos previos:Ensure all migration prerequisites are met:

    • El origen del servidor de bases de datos MySQL debe coincidir con la versión que admite Azure Database for MySQL.The MySQL database server source must match the version that Azure Database for MySQL supports. 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.Azure Database for MySQL supports MySQL Community Edition, the InnoDB storage engine, and migration across source and target with the same versions.
    • Habilite el registro binario en my.ini (Windows) o my.cnf (Unix).Enable binary logging in my.ini (Windows) or my.cnf (Unix). Si no se habilita el registro binario, se produce 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 más información, consulte la documentación de MySQL.Failure to enable binary logging causes the following error in the Migration Wizard: Error in binary logging. Variable binlog_row_image has value 'minimal.' please change it to 'full'. For more information, see the MySQL documentation.
    • El usuario debe tener el rol ReplicationAdmin.User must have the ReplicationAdmin role.
    • Migre los esquemas de base de datos sin claves externas ni desencadenadores.Migrate the database schemas without foreign keys and triggers.
  • Cree una red virtual que se conecte a través de ExpressRoute o VPN a la red local.Create a virtual network that connects via ExpressRoute or a VPN to your on-premises network.

  • Cree una instancia de Azure Database Migration Service con una SKU Premium que esté conectada a la red virtual.Create an Azure Database Migration Service instance with a Premium SKU that's connected to the virtual network.

  • Asegúrese de que la instancia pueda acceder a la base de datos de MySQL a través de la red virtual.Ensure that the instance can access the MySQL database via the virtual network. 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.Make sure that all incoming ports are allowed from Azure to MySQL at the virtual network level, the network VPN, and the machine that hosts MySQL.

  • Creación de un proyecto de Database Migration Service:Create a new Database Migration Service project:

    Captura de pantalla que muestra cómo crear un proyecto de Database Migration Service Ilustración 3: Proyecto de Azure Database Migration Service.Screenshot shows how to create a new Database Migration Service project Figure 3: An Azure Database Migration Service project.

Migración mediante herramientas nativasMigration by using native tools

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.As an alternative to using Azure Database Migration Service, Contoso can use common utilities and tools such as MySQL Workbench, mysqldump, Toad, or Navicat to connect to and migrate data to Azure Database for MySQL.

  • Volcado y restauración con mysqldump:Dump and restore with 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 the exclude-triggers option in mysqldump to prevent triggers from executing during import and improve performance.
    • 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 the single-transaction option to set the translation isolation mode to REPEATABLE READ, and send a START TRANSACTION SQL statement before you dump data.
    • Use la opción para deshabilitar claves de mysqldump para deshabilitar las restricciones de clave externa antes de la carga.Use the disable-keys option in mysqldump to disable foreign key constraints before load. La eliminación de restricciones proporciona mejoras en el rendimiento.Removing constraints provides performance gains.
    • 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.Use Azure Blob Storage to store the backup files and perform the restore from there for faster restore.
    • Actualice las cadenas de conexión de la aplicación.Update application connection strings.
    • 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.After the database is migrated, Contoso must update the connection strings to point to the new Azure Database for MySQL.

Limpiar después de la migraciónClean up after migration

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.After migration, Contoso needs to back up the on-premises database for retention purposes and retire the on-premises MySQL database server.

Revisión de la implementaciónReview the deployment

Con los recursos migrados de Azure, Contoso debe proteger la infraestructura nueva y ponerla totalmente en marcha.With the migrated resources in Azure, Contoso needs to fully operationalize and secure its new infrastructure.

SeguridadSecurity

Contoso debe:Contoso needs to:

  • Asegurarse de que la nueva instancia de Azure Database for MySQL y las bases de datos estén protegidas.Ensure that its new Azure Database for MySQL instance and databases are secure. Para más información, consulte Seguridad en Azure Database for MySQL.For more information, see Security in Azure Database for MySQL.
  • Revisar las configuraciones de firewall y de red virtual.Review the firewall and virtual network configurations.
  • Configure Private Link para que todo el tráfico de las bases de datos se mantenga dentro de Azure y la red local.Set up Private Link so that all database traffic is kept inside Azure and the on-premises network.
  • Habilite Microsoft Defender for Identity.Enable Microsoft Defender for Identity.

Copias de seguridadBackups

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.Ensure that the Azure Database for MySQL instances are backed up by using geo-restore, so that backups can be used in a paired region if a regional outage occurs.

Importante

Asegúrese de que el recurso de Azure Database for MySQL disponga de un bloqueo de recursos para impedir su eliminación.Ensure that the Azure Database for MySQL resource has a resource lock to prevent it from being deleted. No se pueden restaurar los servidores eliminados.Deleted servers can't be restored.

Optimización de los costos y licenciasLicensing and cost optimization

  • Azure Database for MySQL se puede escalar o reducir verticalmente.Azure Database for MySQL can be scaled up or down. 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.Monitoring the performance of the server and databases is important to ensure your requirements are met while minimizing costs.
  • Tanto la CPU como el almacenamiento tienen costos asociados.Both CPU and storage have costs associated. Hay disponibles varios planes de tarifa.Several pricing tiers are available. Asegúrese de que esté seleccionado el plan de precios adecuado para cada carga de trabajo de datos.Be sure the appropriate pricing plan is selected for each data workload.
  • Cada réplica de lectura se factura según el proceso y el almacenamiento seleccionados.Each read replica is billed based on the compute and storage selected.
  • Use la capacidad reservada para ahorrar costos.Use reserved capacity to save on costs.

ConclusiónConclusion

En este artículo, Contoso migró sus bases de datos de MySQL a una instancia de Azure Database for MySQL.In this article, Contoso migrated its MySQL databases to an Azure Database for MySQL instance.