Tutorial: migrar o MySQL para o Banco de Dados do Azure para MySQL offline usando o DMS

Você pode usar o Serviço de Migração de Banco de Dados do Azure para executar uma instância do MySQL local de migração de banco de dados completa e única para o Azure para MySQL com recursos de migração de dados de alta velocidade. Neste tutorial, migraremos um banco de dados de exemplo de uma instância local do MySQL 5.7 para o Banco de Dados do Azure para MySQL (v5.7) usando uma atividade de migração offline no Serviço de Migração de Banco de Dados do Azure. Embora os artigos suponham que a origem seja uma instância de banco de dados MySQL e o destino seja o Banco de Dados do Azure para MySQL, ele pode ser usado a fim de migrar de um Banco de Dados do Azure para MySQL para outro apenas alterando o nome e as credenciais do servidor de origem. Além disso, também há suporte para a migração de servidores MySQL de versão inferior (v 5.6 e posterior) para versões posteriores.

Importante

Para migrações online, você pode usar ferramentas open-source, como o MyDumper/o MyLoader com a replicação de dados.

Observação

Para obter uma versão com script baseada no PowerShell dessa experiência de migração, confira Migração offline com script para o Banco de Dados do Azure para MySQL.

Observação

O Amazon RDS (Serviço de Banco de Dados Relacional) para MySQL e o Amazon Aurora (baseado em MySQL) também têm suporte como fontes de migração.

Neste tutorial, você aprenderá como:

  • Migrar o esquema de banco de dados usando o utilitário mysqldump.
  • Crie uma instância do Serviço de Migração de Banco de Dados do Azure.
  • Criar um projeto de migração usando o Serviço de Migração de Banco de Dados do Azure.
  • Executar a migração.
  • Monitorar a migração.

Pré-requisitos

Para concluir este tutorial, você precisará:

  • Tenha uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.

  • Ter um banco de dados MySQL local com a versão 5.7 ou posterior. Se não tiver, baixe e instale o MySQL community edition 5.7.

  • A migração offline do MySQL tem suporte apenas no SKU do DMS Premium.

  • Criar uma instância no Banco de Dados do Azure para MySQL. Confira o artigo Usar o MySQL Workbench para se conectar e consultar dados a fim de obter detalhes sobre como se conectar e criar um banco de dados usando o aplicativo do Workbench. A versão do Banco de Dados do Azure para MySQL deve ser igual ou maior que a versão do MySQL local. Por exemplo, o MySQL 5.7 pode migrar para o Banco de Dados do Azure para MySQL 5.7 ou atualizado para 8.

  • Criar uma Rede Virtual do Microsoft Azure para o Serviço de Migração de Banco de Dados do Azure usando o modelo de implantação do Azure Resource Manager, que fornece conectividade site a site aos servidores de origem locais por meio do ExpressRoute ou da VPN. Para obter mais informações sobre como criar uma rede virtual, confira a Documentação da Rede Virtual e, especificamente, os artigos de Início Rápido com detalhes passo a passo.

    Observação

    Durante a configuração da rede virtual, se você usar o ExpressRoute com emparelhamento de rede com a Microsoft, adicione os seguintes pontos de extremidade de serviço à sub-rede na qual o serviço será provisionado:

    • Ponto de extremidade do banco de dados de destino (por exemplo, ponto de extremidade do SQL, ponto de extremidade do Cosmos DB, e assim por diante)
    • Ponto de extremidade de armazenamento
    • Ponto de extremidade do barramento de serviço

    Essa configuração é necessária porque o Serviço de Migração de Banco de Dados do Azure não tem conectividade com a internet.

  • Verifique se as regras do grupo de segurança de rede da rede virtual não bloqueiam a porta de saída 443 de ServiceTag para ServiceBus, Storage e AzureMonitor. Para obter mais detalhes sobre a filtragem de tráfego do NSG da rede virtual, confira o artigo Filtrar o tráfego de rede com grupos de segurança de rede.

  • Abra o Firewall do Windows a fim de permitir que as conexões da Rede Virtual para o Serviço de Migração de Banco de Dados do Azure acessem o Servidor MySQL de origem, que, por padrão, é a porta TCP 3306.

  • Ao usar um dispositivo de firewall na frente de seus bancos de dados de origem, talvez seja necessário adicionar regras de firewall para permitir que as conexões do Serviço de Migração de Banco de Dados do Azure acessem os bancos de dados de origem para migração.

  • Crie uma regra de firewall no nível de servidor ou configure pontos de extremidade de serviço da VNet para o Banco de Dados do Azure para MySQL de destino a fim de permitir o acesso da Rede virtual do Serviço de Migração de Banco de Dados do Azure aos bancos de dados de destino.

  • O MySQL de origem deve estar no MySQL community edition com suporte. Para determinar a versão da instância do MySQL, execute o seguinte comando no utilitário MySQL ou no MySQL Workbench:

    SELECT @@version;
    
  • O Banco de Dados do Azure para MySQL dá suporte somente a tabelas do InnoDB. Para converter tabelas do MyISAM para o InnoDB, consulte o artigo Converter tabelas do MyISAM para o InnoDB

  • O usuário deve ter os privilégios para ler dados no banco de dados de origem.

Dimensionando a instância de destino do Banco de Dados do Azure para MySQL

Para preparar o servidor de destino do Banco de Dados do Azure para MySQL para carregamentos de dados mais rápidos usando o Serviço de Migração de Banco de Dados do Azure, recomenda-se os parâmetros de servidor e as alterações de configuração a seguir.

  • max_allowed_packet – defina como 1073741824 (ou seja, 1 GB) para evitar problemas de conexão devido a linhas longas.
  • slow_query_log – defina como OFF para desativar o log de consultas lentas. Isso eliminará a sobrecarga causada pelo log de consulta lento durante cargas de dados.
  • query_store_capture_mode – defina como NONE para desativar o Repositório de Consultas. Isso eliminará a sobrecarga causada pelas atividades de amostragem por Repositório de Consultas.
  • innodb_buffer_pool_size – innodb_buffer_pool_size só pode ser aumentado escalando verticalmente a computação para o servidor do Banco de Dados do Azure para MySQL. Escale verticalmente o servidor para SKU de 64 vCores para Uso Geral do tipo de preço do portal durante a migração para aumentar o tamanho do innodb_buffer_pool_size.
  • innodb_io_capacity & innodb_io_capacity_max – altere para 9.000 dos Parâmetros do servidor no portal do Azure a fim de melhorar a utilização de E/S para otimizar a velocidade de migração.
  • innodb_write_io_threads & innodb_write_io_threads – altere para 4 nos Parâmetros do servidor no portal do Azure para melhorar a velocidade da migração.
  • Escalar verticalmente a camada de armazenamento – Os IOPs do Banco de Dados do Azure para MySQL aumenta progressivamente com o aumento na camada de armazenamento.
    • Na opção de implantação de servidor único, para cargas mais rápidas, é recomendável aumentar a camada de armazenamento para aumentar a IOPS provisionada.
    • Na opção de implantação de servidor flexível, recomendamos que você dimensione (aumente ou diminua) a IOPS, independentemente do tamanho do armazenamento.
    • Observe que o tamanho do armazenamento só pode ser escalado verticalmente, não reduzido verticalmente.

Quando a migração for concluída, você poderá reverter os parâmetros do servidor e a configuração para os valores exigidos pela sua carga de trabalho.

Migrar esquema de banco de dados

Para transferir todos os objetos de banco de dados, como procedimentos armazenados, índices e esquemas de tabela, é necessário extrair o esquema do banco de dados de origem e aplicar ao banco de dados de destino. Para extrair o esquema, você pode usar mysqldump com o parâmetro --no-data. Para isso, você precisa de um computador que possa se conectar ao banco de dados MySQL de origem e ao Banco de Dados do Azure para MySQL de destino.

Para exportar o esquema usando mysqldump, execute o seguinte comando:

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

Por exemplo:

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

Para importar o esquema no Banco de Dados do Azure para MySQL de destino, execute o seguinte comando:

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

Por exemplo:

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

Se você tiver gatilhos ou chaves estrangeiras em seu esquema, a carga de dados paralela durante a migração será tratada pela tarefa de migração. Não é necessário remover gatilhos ou chaves estrangeiras durante a migração de esquema.

Registrar o provedor de recursos Microsoft.DataMigration

  1. Entre no portal do Azure. Pesquise e selecione Assinaturas.

    Mostrar assinaturas do portal

  2. Selecione a assinatura na qual deseja criar a instância do Serviço de Migração de Banco de Dados do Azure e, em seguida, selecione Provedores de recursos.

    Exibir provedores de recursos

  3. Pesquise por migração, depois selecione Registrar para Microsoft.DataMigration.

    Registrar provedor de recursos

Criar uma instância do Serviço de Migração de Banco de Dados

  1. No portal do Azure, selecione + Criar um recurso, pesquise Serviço de Migração de Banco de Dados do Azure e, em seguida, selecione Serviço de Migração de Banco de Dados do Azure na lista suspensa.

    Azure Marketplace

  2. Na tela Serviço de Migração de Banco de Dados do Azure, selecione Criar.

    Criar uma instância do Serviço de Migração de Banco de Dados do Azure

  3. Na tela Criar Serviço de Migração, especifique um nome para o serviço, a assinatura e um grupo de recurso novo ou existente.

  4. Selecione um tipo de preço e passe para a tela Rede. A capacidade de migração offline está disponível apenas no tipo de preço Premium.

    Para obter mais informações sobre os custos e camadas de preços, consulte a página de preços.

    Definir configurações básicas do Serviço de Migração de Banco de Dados do Azure

  5. Selecione uma rede virtual existente na lista ou forneça o nome da rede virtual a ser criada. Passe para a tela Examinar + criar. Você tem a opção de adicionar marcas ao serviço usando a tela Marcas.

    A rede virtual fornece ao Serviço de Migração de Banco de Dados do Azure acesso ao SQL Server de origem e à instância do Banco de Dados SQL do Azure de destino.

    Definir configurações de rede do Serviço de Migração de Banco de Dados do Azure

    Para obter mais informações sobre como criar uma rede virtual no portal do Azure, confira o artigo Criar uma rede virtual usando o portal do Azure.

  6. Examine as configurações e selecione Criar para criar o serviço.

    Criação do Serviço de Migração de Banco de Dados do Azure

Criar um projeto de migração

Depois que o serviço é criado, localize-o no portal do Azure, abra-o e, em seguida, crie um projeto de migração.

  1. Faça logon no portal do Azure, selecione + criar um recurso, procure o serviço de migração de banco de dados do Azure e, em seguida, selecione serviço de migração de banco de dados do Azure na lista suspensa.

    Localize todas as instâncias do Serviço de Migração de Banco de Dados do Azure

  2. Selecione a instância do serviço de migração nos resultados da pesquisa e escolha + Novo projeto de migração.

    Criar um novo projeto de migração

  3. Na tela Novo projeto de migração, especifique um nome para o projeto, na caixa de seleção Tipo de servidor de origem, selecione MySQL, na caixa de seleção Tipo de servidor de destino, selecione Banco de Dados do Azure para MySQL e, na caixa de seleção Tipo de atividade de migração, selecione Migração de dados. Selecione Criar e executar uma atividade.

    Criar o Serviço de migração de banco de dados do Azure

    Observação

    Como alternativa, você pode escolher Criar somente o projeto para criar o projeto de migração agora e executar a migração posteriormente.

Configurar projeto de migração

  1. Na tela Selecionar fonte, especifique os detalhes da conexão da instância do MySQL de origem e selecione Avançar: Selecionar destino>>

    Tela para adicionar detalhes da origem

  2. Na tela Selecionar destino, especifique os detalhes da conexão da instância do Banco de Dados do Azure para MySQL de destino e selecione Avançar: Selecionar bancos de dados>>

    Tela para adicionar detalhes do destino

  3. Na tela Selecionar bancos de dados, mapeie o banco de dados de origem e de destino para migração e selecione Avançar: Definir configurações de migração. Você pode selecionar a opção Tornar Servidor de Origem Somente Leitura para tornar a origem somente leitura, mas esteja ciente de que essa é uma configuração no nível do servidor. Se selecionada, ela definirá todo o servidor como somente leitura, não apenas os bancos de dados selecionados.

    Se o banco de dados de destino contiver o mesmo nome de banco de dados do banco de dados de origem, o Serviço de Migração de Banco de Dados do Azure selecionará o banco de dados de destino por padrão. Tela para selecionar detalhes do banco de dados

    Observação

    Apesar de você poder selecionar vários bancos de dados nesta etapa, existem limites quanto à quantidade e à velocidade com que os bancos de dados podem ser migrados dessa forma, uma vez que cada um deles compartilhará a computação. Com a configuração padrão do SKU Premium, cada tarefa de migração tentará migrar duas tabelas em paralelo. Essas tabelas podem ser de qualquer um dos bancos de dados selecionados. Se isso não for rápido o suficiente, você poderá dividir as atividades de migração de banco de dados em diferentes tarefas de migração e dimensionar em vários serviços. Além disso, há um limite de dez instâncias do Serviço de Migração de Banco de Dados do Azure por assinatura em cada região. Para obter um controle mais granular sobre a taxa de transferência e a paralelização da migração, confira o artigo PowerShell: executar migração offline do banco de dados MySQL para o Banco de Dados do Azure para MySQL usando o DMS

  4. Na tela Definir configurações de migração, selecione as tabelas que fazem parte da migração e Avançar: Resumo>> . Se as tabelas de destino tiverem dados, elas não serão selecionadas por padrão, mas você poderá selecioná-las explicitamente, e elas serão truncadas antes do início da migração.

    Tela para selecionar tabelas

  5. Na tela Resumo, na caixa de texto Nome da atividade, especifique um nome para a atividade de migração e examine o resumo para ter certeza de que os detalhes de origem e de destino correspondem ao que foi especificado anteriormente.

    Resumo do projeto de migração

  6. Selecione Iniciar migração. A janela de atividade de migração aparece e o Status da atividade está Inicializando. O Status é alterado para Em execução quando as migrações de tabela são iniciadas.

    Executar a migração

Monitorar a migração

  1. Na tela de atividade de migração, selecione Atualizar para atualizar a exibição e ver o progresso em relação ao número de tabelas concluídas.

  2. Você pode clicar no nome do banco de dados na tela atividade para ver o status de cada tabela à medida que elas estão sendo migradas. Selecione Atualizar para atualizar a exibição.

    Monitorando a migração

Concluir a migração

  1. Na tela de atividade de migração, selecione Atualizar para atualizar a exibição até que o Status da migração seja exibido como Concluído.

    Migração completa

Atividades após a migração

A substituição de migração em uma migração offline é um processo dependente do aplicativo que está fora do escopo deste documento, mas as seguintes atividades pós-migração são prescritas:

  1. Criar logons, funções e permissões de acordo com os requisitos do aplicativo.
  2. Recriar todos os gatilhos no banco de dados de destino como extraído durante a etapa anterior à migração.
  3. Executar testes de integridade do aplicativo no banco de dados de destino para certificar a migração.

Limpar os recursos

Se você não quiser continuar usando o Serviço de Migração de Banco de Dados, poderá excluí-lo com as seguintes etapas:

  1. Faça logon no portal do Azure, selecione + criar um recurso, procure o serviço de migração de banco de dados do Azure e, em seguida, selecione serviço de migração de banco de dados do Azure na lista suspensa.

    Localizar todas as instâncias do DMS

  2. Selecione a instância de serviço de migração nos resultados da pesquisa e selecione Excluir serviço.

    Excluir serviço de migração

  3. Na caixa de diálogo de confirmação, digite o nome do serviço na caixa de texto DIGITAR NOME DO SERVIÇO DE MIGRAÇÃO DE BANCO DE DADOS e selecione Excluir

    Confirmar exclusão do serviço de migração

Próximas etapas