Migrar bases de dados MySQL para AzureMigrate MySQL databases to Azure

Este artigo demonstra como a empresa fictícia Contoso planeou e emigrou a sua plataforma de base de dados de código aberto MySQL para Azure.This article demonstrates how the fictional company Contoso planned and migrated its on-premises MySQL open-source database platform to Azure.

Impulsionadores de negóciosBusiness drivers

A equipa de liderança de TI tem trabalhado em estreita colaboração com parceiros de negócios para entender o que querem alcançar com esta migração.The IT leadership team has worked closely with business partners to understand what they want to achieve with this migration. Querem:They want to:

  • Aumentar a disponibilidade.Increase availability. A Contoso tem tido problemas de disponibilidade com o seu ambiente mySQL no local.Contoso has had availability issues with its MySQL on-premises environment. A empresa exige que as aplicações que utilizam esta loja de dados sejam mais fiáveis.The business requires the applications that use this data store to be more reliable.
  • Aumentar a eficiência.Increase efficiency. A Contoso precisa de remover procedimentos desnecessários e simplificar processos para desenvolvedores e utilizadores.Contoso needs to remove unnecessary procedures and streamline processes for developers and users. O negócio precisa que a TI seja rápida e não perca tempo ou dinheiro para entregar mais rapidamente às necessidades do cliente.The business needs IT to be fast and not waste time or money to deliver faster on customer requirements.
  • Aumentar a agilidade.Increase agility. As equipas de TI da Contoso precisam de ser mais reativas às necessidades da empresa.Contoso IT needs to be more responsive to the needs of the business. Deve reagir mais rapidamente do que as mudanças no mercado para permitir o sucesso numa economia global.It must react faster than the changes in the marketplace to enable success in a global economy. Não deve ser um bloqueador de negócios.It mustn't become a business blocker.
  • A escala.Scale. À medida que o negócio cresce com sucesso, a Contoso IT deve fornecer sistemas que cresçam ao mesmo ritmo.As the business grows successfully, Contoso IT must provide systems that grow at the same pace.

Objetivos de migraçãoMigration goals

A equipa de cloud da Contoso definiu os objetivos da migração.The Contoso cloud team has pinned down goals for this migration. Estes objetivos ajudaram a determinar o melhor método de migração.These goals were used to determine the best migration method.

RequisitosRequirements DetalhesDetails
DisponibilidadeAvailability Atualmente, os funcionários internos estão a passar por dificuldades com o ambiente de hospedagem para o caso MySQL.Currently internal staff are having a hard time with the hosting environment for the MySQL instance. A Contoso quer ter perto de 99,99 por cento de disponibilidade para a camada de base de dados.Contoso wants to have close to 99.99 percent availability for the database layer.
EscalabilidadeScalability O hospedeiro da base de dados no local está rapidamente a ficar sem capacidade.The on-premises database host is quickly running out of capacity. A Contoso precisa de uma forma de escalar os seus casos para além das limitações atuais ou reduzir se o ambiente de negócios mudar para economizar custos.Contoso needs a way to scale its instances past current limitations or scale down if the business environment changes to save on costs.
DesempenhoPerformance O departamento de recursos humanos contoso (RH) executa vários relatórios diariamente, semanais e mensais.The Contoso human resources (HR) department runs various reports daily, weekly, and monthly. Quando executa estes relatórios, experimenta problemas de desempenho significativos com a aplicação virada para o empregado.When it runs these reports, it experiences significant performance issues with the employee-facing application. Precisa de executar os relatórios sem afetar o desempenho da aplicação.It needs to run the reports without affecting application performance.
SegurançaSecurity A Contoso precisa de saber que a base de dados está acessível apenas às suas aplicações internas e não é visível ou acessível através da internet.Contoso needs to know that the database is accessible only to its internal applications and isn't visible or accessible via the internet.
MonitorizaçãoMonitoring ATualmente, a Contoso utiliza ferramentas para monitorizar as métricas do servidor de base de dados MySQL e fornecer notificações quando a CPU, a memória ou o armazenamento têm problemas.Contoso currently uses tools to monitor the metrics of the MySQL database server and provide notifications when CPU, memory, or storage have issues. A empresa quer ter a mesma capacidade em Azure.The company wants to have this same capability in Azure.
Continuidade do negócioBusiness continuity A loja de dados de RH é uma parte importante das operações diárias da Contoso.The HR data store is an important part of Contoso's daily operations. Se se corromper ou precisar de ser restaurada, a empresa quer minimizar o tempo de inatividade o máximo possível.If it became corrupted or needed to be restored, the company wants to minimize downtime as much as possible.
AzureAzure O Contoso quer mover a candidatura para Azure sem a executar em VMs.Contoso wants to move the application to Azure without running it on VMs. A Contoso quer utilizar a plataforma Azure como serviço (PaaS) para o nível de dados.Contoso wants to use Azure platform as a service (PaaS) services for the data tier.

Design de soluçãoSolution design

Depois de fixar objetivos e requisitos, a Contoso projeta e analisa uma solução de implantação e identifica o processo de migração.After pinning down goals and requirements, Contoso designs and reviews a deployment solution and identifies the migration process. As ferramentas e serviços que utilizará para a migração também estão identificados.The tools and services that it will use for migration are also identified.

Aplicação atualCurrent application

A base de dados MySQL armazena dados de funcionários que são usados para todos os aspetos do departamento de RH da empresa.The MySQL database stores employee data that's used for all aspects of the company's HR department. Uma aplicação baseada em LÂMPADA é usada como a parte frontal para lidar com os pedidos de RH dos empregados.A LAMP-based application is used as the front end to handle employee HR requests. A Contoso tem 100.000 funcionários em todo o mundo, por isso o tempo de paragem é importante.Contoso has 100,000 employees worldwide, so uptime is important.

Solução propostaProposed solution

Utilize o Serviço de Migração da Base de Dados Azure para migrar a base de dados para uma base de dados Azure para o caso MySQL.Use Azure Database Migration Service to migrate the database to an Azure Database for MySQL instance. Modifique todas as aplicações e processos para utilizar a nova Base de Dados Azure para a instância MySQL.Modify all applications and processes to use the new Azure Database for MySQL instance.

Considerações sobre a base de dadosDatabase considerations

Como parte do processo de design de solução, a Contoso reviu as funcionalidades em Azure para hospedar os seus dados MySQL.As part of the solution design process, Contoso reviewed the features in Azure for hosting its MySQL data. As seguintes considerações ajudaram a empresa a decidir utilizar a Azure:The following considerations helped the company decide to use Azure:

  • Semelhante à Base de Dados Azure SQL, a Base de Dados Azure para o MySQL permite regrasde firewall .Similar to Azure SQL Database, Azure Database for MySQL allows for firewall rules.
  • A Azure Database for MySQL pode ser usada com a Rede Virtual Azure para evitar que o caso seja acessível ao público.Azure Database for MySQL can be used with Azure Virtual Network to prevent the instance from being publicly accessible.
  • A Azure Database for MySQL dispõe das certificações de conformidade e privacidade necessárias que a Contoso deve reunir para os seus auditores.Azure Database for MySQL has the required compliance and privacy certifications that Contoso must meet for its auditors.
  • O desempenho do relatório e do processamento de aplicações será melhorado utilizando réplicas de leitura.Report and application processing performance will be enhanced by using read replicas.
  • Capacidade de expor o serviço apenas ao tráfego de rede interna (sem acesso público) utilizando o Azure Private Link.Ability to expose the service to internal network traffic only (no public access) by using Azure Private Link.
  • Contoso optou por não se mudar para a Base de Dados Azure para o MySQL porque está a considerar utilizar o modelo de base de dados de colunas MariaDB e gráfico no futuro.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.
  • Além das funcionalidades mySQL, a Contoso é uma defensora de verdadeiros projetos de código aberto e optou por não utilizar o MySQL.Aside from MySQL features, Contoso is a proponent of true open-source projects and chose not to use MySQL.
  • A largura de banda e a latência da aplicação para a base de dados serão suficientes com base no gateway escolhido (ou Azure ExpressRoute ou VPN site-to-site).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).

Análise da soluçãoSolution review

A Contoso avalia a solução proposta ao elaborar uma lista de vantagens e desvantagens.Contoso evaluates the proposed design by putting together a pros and cons list.

ConsideraçãoConsideration DetalhesDetails
VantagensPros A Azure Database for MySQL oferece um contrato de nível de serviço (SLA) com apoio financeiro de 99,99 por cento para uma elevada disponibilidade.Azure Database for MySQL offers a 99.99 percent financially backed service-level agreement (SLA) for high availability.

O Azure oferece a capacidade de escalar para cima ou para baixo durante os tempos de carga de pico a cada trimestre.Azure offers the ability to scale up or down during peak load times each quarter. Contoso pode economizar ainda mais comprando capacidade reservada.Contoso can save even more by purchasing reserved capacity.

O Azure fornece capacidades de restauro e geo-restauro pontuais para a Base de Dados Azure para o MySQL.Azure provides point-in-time restore and geo-restore capabilities for Azure Database for MySQL.

DesvantagensCons Contoso está limitado às versões de lançamento do MySQL que são suportadas no Azure, que atualmente são 10.2 e 10.3.Contoso is limited to the MySQL release versions that are supported in Azure, which are currently 10.2 and 10.3.

A Azure Database for MySQL tem algumas limitações,como a redução do armazenamento.Azure Database for MySQL has some limitations, such as scaling down storage.

Arquitetura propostaProposed architecture

O diagrama mostra a arquitetura do cenário. Figura 1: Arquitetura de cenário.Diagram shows the scenario architecture. Figure 1: Scenario architecture.

Processo de migraçãoMigration process

PreparaçãoPreparation

Antes de migrar as suas bases de dados MySQL, tem de garantir que essas instâncias cumprem todos os pré-requisitos do Azure para uma migração bem sucedida.Before you can migrate your MySQL databases, you need to ensure that those instances meet all the Azure prerequisites for a successful migration.

Versões suportadasSupported versions

MySQL utiliza o esquema de versão x.y.z, onde x é a versão principal, y é a versão menor, e z é a versão patch.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.

A Azure suporta atualmente as versões MySQL 10.2.25 e 10.3.16.Azure currently supports MySQL versions 10.2.25 and 10.3.16.

O Azure gere automaticamente atualizações para atualizações de patchs.Azure automatically manages upgrades for patch updates. Os exemplos são de 10.2.21 a 10.2.23.Examples are 10.2.21 to 10.2.23. As atualizações de versão menores e importantes não são suportadas.Minor and major version upgrades aren't supported. Por exemplo, a atualização do MySQL 10.2 para MySQL 10.3 não é suportada.For example, upgrading from MySQL 10.2 to MySQL 10.3 isn't supported. Se pretender atualizar de 10.2 para 10.3, despeje-o e restaure-o num servidor criado com a nova versão do 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.

RedeNetwork

A Contoso precisa de criar uma ligação virtual de gateway de rede desde o seu ambiente no local até à rede virtual onde está localizada a sua base de dados 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 ligação permite que a aplicação no local aceda à base de dados sobre o gateway quando as cadeias de ligação forem atualizadas.This connection allows the on-premises application to access the database over the gateway when the connection strings are updated.

O diagrama mostra o processo de migração. Figura 2: O processo de migração.Diagram shows the migration process. Figure 2: The migration process.

MigraçãoMigration

Os administradores da Contoso migram a base de dados utilizando o Serviço de Migração da Base de Dados de Azure e seguindo o tutorial de migração passo a passo.Contoso admins migrate the database by using Azure Database Migration Service and following the step-by-step migration tutorial. Podem realizar migrações online, offline e híbridas (pré-visualização) utilizando o MySQL 5.6 ou 5.7.They can perform online, offline, and hybrid (preview) migrations by using MySQL 5.6 or 5.7.

Nota

MySQL 8.0 é suportado na Base de Dados Azure para o MySQL.MySQL 8.0 is supported in Azure Database for MySQL. A ferramenta serviço de migração da base de dados ainda não suporta esta versão.The Database Migration Service tool doesn't yet support that version.

Como resumo, devem fazer as seguintes tarefas:As a summary, they must do the following tasks:

  • Certifique-se de que todos os pré-requisitos de migração são cumpridos:Ensure all migration prerequisites are met:

    • A fonte do servidor de base de dados MySQL deve corresponder à versão que a Base de Dados Azure suporta.The MySQL database server source must match the version that Azure Database for MySQL supports. A Azure Database for MySQL suporta mySQL Community Edition, o motor de armazenamento InnoDB, e migração através da fonte e alvo com as mesmas versões.Azure Database for MySQL supports MySQL Community Edition, the InnoDB storage engine, and migration across source and target with the same versions.
    • Ativar o registo binário my.ini (Windows) ou my.cnf (Unix).Enable binary logging in my.ini (Windows) or my.cnf (Unix). A falha na ativação da registo binário provoca o seguinte erro no Assistente de Migração: "Erro na exploração madeireira binária.Failure to enable binary logging causes the following error in the Migration Wizard: "Error in binary logging. Binlog_row_image variável tem valor 'mínimo'.Variable binlog_row_image has value 'minimal.' por favor mudá-lo para 'full'. Para mais informações, consulte a documentação mySQL.please change it to 'full'." For more information, see the MySQL documentation.
    • O utilizador deve ter o ReplicationAdmin papel.User must have the ReplicationAdmin role.
    • Migrar os esquemas de base de dados sem chaves e gatilhos estrangeiros.Migrate the database schemas without foreign keys and triggers.
  • Crie uma rede virtual que se conecta via ExpressRoute ou uma VPN à sua rede no local.Create a virtual network that connects via ExpressRoute or a VPN to your on-premises network.

  • Crie uma instância do Serviço de Migração de Bases de Dados Azure com um Premium SKU que esteja ligado à rede virtual.Create an Azure Database Migration Service instance with a Premium SKU that's connected to the virtual network.

  • Certifique-se de que a instância pode aceder à base de dados MySQL através da rede virtual.Ensure that the instance can access the MySQL database via the virtual network. Certifique-se de que todas as portas de entrada são permitidas de Azure para MySQL ao nível da rede virtual, da rede VPN e da máquina que hospeda o 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.

  • Criar um novo projeto do Serviço de Migração de Bases de Dados:Create a new Database Migration Service project:

    O Screenshot mostra como criar um novo projeto do Serviço de Migração de Bases de Dados Figura 3: Um projeto do Azure Database Migration Service.Screenshot shows how to create a new Database Migration Service project Figure 3: An Azure Database Migration Service project.

Migração utilizando ferramentas nativasMigration by using native tools

Como alternativa à utilização do Azure Database Migration Service, a Contoso pode utilizar utilitários e ferramentas comuns como mySQL Workbench, mysqldump, Toad ou Navicat para ligar e migrar dados para a Base de Dados Azure para o 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.

  • Despejar e restaurar com mysqldump:Dump and restore with mysqldump:
    • Utilize a opção de gatilhos de exclusão no mysqldump para evitar que os gatilhos executem durante a importação e melhorem o desempenho.Use the exclude-triggers option in mysqldump to prevent triggers from executing during import and improve performance.
    • Utilize a opção de transação única para definir o modo de isolamento de tradução para REPEATABLE READ , e envie uma declaração START TRANSACTION SQL antes de despejar dados.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.
    • Utilize a opção de desativação no mysqldump para desativar as restrições de chaves estrangeiras antes da carga.Use the disable-keys option in mysqldump to disable foreign key constraints before load. A eliminação de constrangimentos proporciona ganhos de desempenho.Removing constraints provides performance gains.
    • Utilize o armazenamento Azure Blob para armazenar os ficheiros de cópia de segurança e efetuar a restauração a partir daí para uma restauração mais rápida.Use Azure Blob storage to store the backup files and perform the restore from there for faster restore.
    • Atualizar as cadeias de ligação da aplicação.Update application connection strings.
    • Após a migração da base de dados, o Contoso deve atualizar as cadeias de ligação para indicar a nova Base de Dados Azure para o MySQL.After the database is migrated, Contoso must update the connection strings to point to the new Azure Database for MySQL.

Limpeza após a migraçãoClean up after migration

Após a migração, a Contoso precisa de fazer o back-base no local para fins de retenção e retirar o servidor de base de dados MySQL no local.After migration, Contoso needs to back up the on-premises database for retention purposes and retire the on-premises MySQL database server.

Rever a implementaçãoReview the deployment

Com os recursos migrados no Azure, a Contoso precisa de uma operacionalização completa e de proteger a nova infraestrutura.With the migrated resources in Azure, Contoso needs to fully operationalize and secure its new infrastructure.

SegurançaSecurity

Contoso precisa de:Contoso needs to:

  • Certifique-se de que a sua nova Base de Dados Azure para a instância e bases de dados mySQL estão seguras.Ensure that its new Azure Database for MySQL instance and databases are secure. Para mais informações, consulte a Segurança na Base de Dados Azure para o MySQL.For more information, see Security in Azure Database for MySQL.
  • Reveja as configurações de firewall e de rede virtual.Review the firewall and virtual network configurations.
  • Confifiquei o Link Privado para que todo o tráfego de bases de dados seja mantido dentro da rede Azure e da rede no local.Set up Private Link so that all database traffic is kept inside Azure and the on-premises network.
  • Ativar a proteção avançada de ameaças Azure.Enable Azure Advanced Threat Protection.

Cópias de segurançaBackups

Certifique-se de que a Base de Dados Azure para as instâncias MySQL é apoiada através da utilização de geo-restauro, de modo a que as cópias de segurança possam ser utilizadas numa região emparelhada se ocorrer uma paragem 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

Certifique-se de que a Base de Dados Azure para o recurso MySQL tem um bloqueio de recursos para evitar que seja eliminada.Ensure that the Azure Database for MySQL resource has a resource lock to prevent it from being deleted. Os servidores eliminados não podem ser restaurados.Deleted servers can't be restored.

Licenciamento e otimização de custosLicensing and cost optimization

  • A base de dados Azure para o MySQL pode ser dimensionada para cima ou para baixo.Azure Database for MySQL can be scaled up or down. Monitorizar o desempenho do servidor e das bases de dados é importante para garantir que os seus requisitos são cumpridos, minimizando os custos.Monitoring the performance of the server and databases is important to ensure your requirements are met while minimizing costs.
  • Tanto o CPU como o armazenamento têm custos associados.Both CPU and storage have costs associated. Vários níveis de preços estão disponíveis.Several pricing tiers are available. Certifique-se de que o plano de preços adequado é selecionado para cada carga de trabalho de dados.Be sure the appropriate pricing plan is selected for each data workload.
  • Cada réplica de leitura é faturada com base no cálculo e armazenamento selecionados.Each read replica is billed based on the compute and storage selected.
  • Utilize a capacidade reservada para economizar custos.Use reserved capacity to save on costs.

ConclusãoConclusion

Neste artigo, a Contoso emigrou as suas bases de dados MySQL para uma Base de Dados Azure para o caso MySQL.In this article, Contoso migrated its MySQL databases to an Azure Database for MySQL instance.