Tutorial: Migrar o RDS MySQL para o Banco de Dados do Azure para MySQL online usando o DMSTutorial: Migrate RDS MySQL to Azure Database for MySQL online using DMS

Use o Serviço de Migração de Banco de Dados do Azure para migrar bancos de dados de uma instância do RDS MySQL para o Banco de Dados do Azure para MySQL, enquanto o banco de dados de origem permanece online durante a migração.You can use Azure Database Migration Service to migrate databases from an RDS MySQL instance to Azure Database for MySQL while the source database remains online during migration. Em outras palavras, a migração pode ser feita com o mínimo de tempo de inatividade para o aplicativo.In other words, migration can be achieved with minimal downtime to the application. Neste tutorial, você migrará o banco de dados de exemplo Employees de uma instância do RDS MySQL para o Banco de Dados do Azure para MySQL usando a atividade de migração online no Serviço de Migração de Banco de Dados do Azure.In this tutorial, you migrate the Employees sample database from an instance of RDS MySQL to Azure Database for MySQL by using the online migration activity in Azure Database Migration Service.

Importante

O cenário de migração online “RDS MySQL para Banco de Dados do Azure para MySQL” será substituído por um cenário de migração offline de alto desempenho e paralelizado em 1º de junho de 2021.The “RDS MySQL to Azure Database for MySQL” online migration scenario is being replaced with a parallelized, highly performant offline migration scenario on June 1, 2021. Para migrações online, você pode usar essa nova oferta junto com a Replicação de Dados.For online migrations, you can use this new offering together with data-in replication. Como alternativa, use ferramentas de software livre, como o MyDumper/o MyLoader com a Replicação de Dados para migrações online.Alternatively, use open-source tools such as MyDumper/MyLoader with data-in replication for online migrations.

Neste tutorial, você aprenderá a:In this tutorial, you learn how to:

  • Migrar o esquema de exemplo usando os utilitários mysqldump e mysql.Migrate the sample schema by using the mysqldump and mysql utilities.
  • Crie uma instância do Serviço de Migração de Banco de Dados do Azure.Create an instance of Azure Database Migration Service.
  • Criar um projeto de migração usando o Serviço de Migração de Banco de Dados do Azure.Create a migration project by using Azure Database Migration Service.
  • Executar a migração.Run the migration.
  • Monitorar a migração.Monitor the migration.

Observação

Usar o Serviço de Migração de Banco de Dados do Azure para executar uma migração online exige a criação de uma instância com base no tipo de preço Premium.Using Azure Database Migration Service to perform an online migration requires creating an instance based on the Premium pricing tier. Para saber mais, confira a página de preços do Serviço de Migração de Banco de Dados do Azure.For more information, see the Azure Database Migration Service pricing page.

Importante

Para obter uma experiência ideal de migração, a Microsoft recomenda a criação de uma instância do Serviço de Migração de Banco de Dados do Azure na mesma região do Azure como o banco de dados de destino.For an optimal migration experience, Microsoft recommends creating an instance of the Azure Database Migration Service in the same Azure region as the target database. Mover dados entre regiões ou áreas geográficas pode desacelerar o processo de migração e introduzir erros.Moving data across regions or geographies can slow down the migration process and introduce errors.

Dica

Ao migrar bancos de dados do Azure usando o Serviço de Migração de Banco de Dados do Azure, você pode fazer uma migração offline ou um online.When you migrate databases to Azure by using Azure Database Migration Service, you can do an offline or an online migration. Com uma migração offline, o tempo de inatividade do aplicativo começa quando a migração é iniciada.With an offline migration, application downtime starts when the migration starts. Com uma migração online, o tempo de inatividade é limitado ao tempo de transferência no final da migração.With an online migration, downtime is limited to the time to cut over at the end of migration. Sugerimos que você teste uma migração offline para determinar se o tempo de inatividade é aceitável; caso contrário, faça uma migração online.We suggest that you test an offline migration to determine whether the downtime is acceptable; if not, do an online migration.

Este artigo descreve como executar uma migração online de uma instância do RDS MySQL para o Banco de Dados do Azure para MySQL.This article describes how to perform an online migration from an instance of RDS MySQL to Azure Database for MySQL.

Pré-requisitosPrerequisites

Para concluir este tutorial, você precisará:To complete this tutorial, you need to:

  • Garantir que o servidor de origem do MySQL esteja executando uma edição da comunidade do MySQL compatível.Ensure that the source MySQL server is running a supported MySQL community edition. Para determinar a versão da instância do MySQL, no utilitário mysql ou no MySQL Workbench, execute o comando:To determine the version of your MySQL instance, in the mysql utility or MySQL Workbench, run the command:

    SELECT @@version;
    

    Para obter mais informações, confira o artigo Supported Azure Database for MySQL versions (Versões compatíveis do Banco de Dados do Azure para MySQL).For more information, see the article Supported Azure Database for MySQL versions.

  • Baixe e instale o banco de dados de exemplo Employees do MySQL.Download and install the MySQL Employees sample database.

  • Crie uma instância do Banco de Dados do Azure para MySQL.Create an instance of Azure Database for MySQL.

  • 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 usando o ExpressRoute ou a VPN.Create a Microsoft Azure Virtual Network for Azure Database Migration Service by using the Azure Resource Manager deployment model, which provides site-to-site connectivity to your on-premises source servers by using either ExpressRoute or 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.For more information about creating a virtual network, see the Virtual Network Documentation, and especially the quickstart articles with step-by-step details.

  • 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.Ensure that your virtual network Network Security Group rules don't block the outbound port 443 of ServiceTag for ServiceBus, Storage and 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.For more detail on virtual network NSG traffic filtering, see the article Filter network traffic with network security groups.

  • Configure o Firewall do Windows (ou Firewall do Linux) para permitir o acesso ao mecanismo de banco de dados.Configure your Windows Firewall (or your Linux firewall) to allow for database engine access. Para o servidor MySQL, permita a porta 3306 para conectividade.For MySQL server, allow port 3306 for connectivity.

Observação

O Banco de Dados do Azure para MySQL dá suporte somente a tabelas do InnoDB.Azure Database for MySQL only supports InnoDB tables. Para converter tabelas do MyISAM para o InnoDB, confira o artigo Como converter tabelas do MyISAM para o InnoDB.To convert MyISAM tables to InnoDB, please see the article Converting Tables from MyISAM to InnoDB .

Configurar o AWS RDS MySQL para replicaçãoSet up AWS RDS MySQL for replication

  1. Para criar um grupo de parâmetros, siga as instruções fornecidas pelo AWS no artigo Arquivos de log do banco de dados MySQL, na seção Formato de log binário.To create a new parameter group, follow the instructions provided by AWS in the article MySQL Database Log Files, in the Binary Logging Format section.
  2. Crie um grupo de parâmetros com a seguinte configuração:Create a new parameter group with the following configuration:
    • log_bin = ONlog_bin = ON
    • binlog_format = rowbinlog_format = row
    • binlog_checksum = NONEbinlog_checksum = NONE
  3. Salve o novo grupo de parâmetros.Save the new parameter group.
  4. Associe o novo grupo de parâmetros à instância do RDS MySQL.Associate the new parameter group with the RDS MySQL instance. Uma reinicialização pode ser necessária.A reboot might be required.
  5. Depois que o grupo de parâmetros estiver em vigor, conecte-se à instância do MySQL e defina a retenção binlog como pelo menos 5 dias.Once the parameter group is in place, connect to the MySQL instance and set binlog retention to at least 5 days.
call mysql.rds_set_configuration('binlog retention hours', 120);

Migrar o esquemaMigrate the schema

  1. Extraia o esquema do banco de dados de origem e aplique-o ao banco de dados de destino para concluir a migração de todos os objetos de banco de dados, como esquemas de tabela, índices e procedimentos armazenados.Extract the schema from the source database and apply to the target database to complete migration of all database objects such as table schemas, indexes, and stored procedures.

    A maneira mais fácil de migrar somente o esquema é usar o mysqldump com o parâmetro --no-data.The easiest way to migrate only the schema is to use mysqldump with the --no-data parameter. O comando usado para migrar o esquema é:The command to migrate the schema is:

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

    Por exemplo, para despejar um arquivo de esquema para o banco de dados Employees, use o seguinte comando:For example, to dump a schema file for the Employees database, use the following command:

    mysqldump -h 10.10.123.123 -u root -p --databases employees --no-data > d:\employees.sql
    
  2. Importe o esquema para o serviço de destino, que é o Banco de Dados do Azure para MySQL.Import the schema to target service, which is Azure Database for MySQL. Para restaurar o arquivo de despejo de esquema, execute o seguinte comando:To restore the schema dump file, run the following command:

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

    Por exemplo, para importar o esquema para o banco de dados Employees:For example, to import the schema for the Employees database:

    mysql.exe -h shausample.mysql.database.azure.com -u dms@shausample -p employees < d:\employees.sql
    
  3. Se você tiver chaves estrangeiras em seu esquema, o carregamento inicial e a sincronização contínua da migração falharão.If you have foreign keys in your schema, the initial load and continuous sync of the migration will fail. Para extrair o script de chave estrangeira de descarte e adicionar o script de chave estrangeira no destino (Banco de Dados do Azure para MySQL), execute o seguinte script no MySQL Workbench:To extract the drop foreign key script and add foreign key script at the destination (Azure Database for MySQL), run the following script in MySQL Workbench:

    SET group_concat_max_len = 8192;
        SELECT SchemaName, GROUP_CONCAT(DropQuery SEPARATOR ';\n') as DropQuery, GROUP_CONCAT(AddQuery SEPARATOR ';\n') as AddQuery
        FROM
        (SELECT
        KCU.REFERENCED_TABLE_SCHEMA as SchemaName,
                    KCU.TABLE_NAME,
                    KCU.COLUMN_NAME,
                    CONCAT('ALTER TABLE ', KCU.TABLE_NAME, ' DROP FOREIGN KEY ', KCU.CONSTRAINT_NAME) AS DropQuery,
        CONCAT('ALTER TABLE ', KCU.TABLE_NAME, ' ADD CONSTRAINT ', KCU.CONSTRAINT_NAME, ' FOREIGN KEY (`', KCU.COLUMN_NAME, '`) REFERENCES `', KCU.REFERENCED_TABLE_NAME, '` (`', KCU.REFERENCED_COLUMN_NAME, '`) ON UPDATE ',RC.UPDATE_RULE, ' ON DELETE ',RC.DELETE_RULE) AS AddQuery
                    FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU, information_schema.REFERENTIAL_CONSTRAINTS RC
                    WHERE
                      KCU.CONSTRAINT_NAME = RC.CONSTRAINT_NAME
                      AND KCU.REFERENCED_TABLE_SCHEMA = RC.UNIQUE_CONSTRAINT_SCHEMA
      AND KCU.REFERENCED_TABLE_SCHEMA = 'SchemaName') Queries
      GROUP BY SchemaName;
    
  4. Execute a chave estrangeira removível (que é a segunda coluna) no resultado da consulta para remover a chave estrangeira.Run the drop foreign key (which is the second column) in the query result to drop the foreign key.

Observação

O DMS do Azure não dá suporte à ação referencial CASCADE, que ajuda a excluir ou atualizar automaticamente uma linha correspondente na tabela filho quando uma linha é excluída ou atualizada na tabela pai.Azure DMS does not support the CASCADE referential action, which helps to automatically delete or update a matching row in the child table when a row is deleted or updated in the parent table. Para obter mais informações, na documentação do MySQL, confira a seção Ações Referenciais do artigo Restrições de FOREIGN KEY.For more information, in the MySQL documentation, see the Referential Actions section of the article FOREIGN KEY Constraints. O DMS do Azure exige que você remova as restrições de chave estrangeira do servidor de banco de dados de destino durante o carregamento de dados inicial, e você não pode usar as ações referenciais.Azure DMS requires that you drop foreign key constraints in the target database server during the initial data load, and you cannot use referential actions. Se a sua carga de trabalho depende da atualização de uma tabela filho relacionada por meio dessa ação referencial, recomendamos que você execute despejo e restauração.If your workload depends on updating a related child table via this referential action, we recommend that you perform a dump and restore instead.

  1. Se você tiver gatilhos (gatilho de inserção ou de atualização) nos dados, eles imporão a integridade dos dados no destino antes de replicar os dados da origem.If you have triggers (insert or update trigger) in the data, it will enforce data integrity in the target before replicating data from the source. A recomendação é desabilitar os gatilhos em todas as tabelas no destino durante a migração e, em seguida, habilitar os gatilhos depois que a migração é concluída.The recommendation is to disable triggers in all the tables at the target during migration, and then enable the triggers after migration is complete.

    Para desabilitar os gatilhos no banco de dados de destino:To disable triggers in target database:

    select concat ('alter table ', event_object_table, ' disable trigger ', trigger_name)
    from information_schema.triggers;
    
  2. Se há instâncias do tipo de dados ENUM nas tabelas, recomendamos a atualização temporária para o tipo de dados ‘character varying’ na tabela de destino.If there are instances of the ENUM data type in any tables, we recommend temporarily updating to the ‘character varying’ datatype in the target table. Quando a replicação de dados for concluída, reverta o tipo de dados para ENUM.WHen data replication is complete, then revert the data type to ENUM.

Registrar o provedor de recursos Microsoft.DataMigrationRegister the Microsoft.DataMigration resource provider

  1. Entre no portal do Azure, selecione Todos os serviços e selecione Assinaturas.Sign in to the Azure portal, select All services, and then select Subscriptions.

    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.Select the subscription in which you want to create the instance of Azure Database Migration Service, and then select Resource providers.

    Exibir provedores de recursos

  3. Pesquise por migração e, em seguida, à direita do Microsoft.DataMigration, selecione Registrar.Search for migration, and then to the right of Microsoft.DataMigration, select Register.

    Registrar provedor de recursos

Criar uma instância do Serviço de Migração de Banco de Dados do AzureCreate an instance of Azure Database Migration Service

  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.In the Azure portal, select + Create a resource, search for Azure Database Migration Service, and then select Azure Database Migration Service from the drop-down list.

    Azure Marketplace

  2. Na tela Serviço de Migração de Banco de Dados do Azure, selecione Criar.On the Azure Database Migration Service screen, select Create.

    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.On the Create Migration Service screen, specify a name for the service, the subscription, and a new or existing resource group.

  4. Selecione a localização na qual deseja criar a instância do Serviço de Migração de Banco de Dados do Azure.Select the location in which you want to create the instance of Azure Database Migration Service.

  5. Selecione uma rede virtual existente ou crie uma.Select an existing virtual network or create a new one.

    A rede virtual fornece ao Serviço de Migração de Banco de Dados do Azure acesso à instância de origem do MySQL e à instância de destino do Banco de Dados do Azure para MySQL.The virtual network provides Azure Database Migration Service with access to the source MySQL instance and the target Azure Database for MySQL instance.

    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.For more information about how to create a virtual network in the Azure portal, see the article Create a virtual network using the Azure portal.

  6. Selecione um tipo de preço; para esta migração online, selecione o tipo de preço Premium: 4vCores.Select a pricing tier; for this online migration, be sure to select the Premium: 4vCores pricing tier.

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

  7. Selecione Criar para criar a conta.Select Create to create the service.

Criar um projeto de migraçãoCreate a migration project

Depois que o serviço é criado, localize-o no portal do Azure, abra-o e, em seguida, crie um projeto de migração.After the service is created, locate it within the Azure portal, open it, and then create a new migration project.

  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.In the Azure portal, select All services, search for Azure Database Migration Service, and then select Azure Database Migration Services.

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

  2. Na tela dos Serviços de Migração de Banco de Dados do Azure, procure o nome da instância do Serviço de Migração de Banco de Dados do Azure que você criou e, em seguida, selecione a instância.On the Azure Database Migration Services screen, search for the name of the Azure Database Migration Service instance that you created, and then select the instance.

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

  3. Selecione + Novo Projeto de Migração.Select + New Migration Project.

  4. Na tela Novo projeto de migração, especifique um nome para o projeto, na caixa de texto Tipo de servidor de origem, selecione MySQL e, em seguida, na caixa de texto Tipo de servidor de destino, selecione AzureDbForMySQL.On the New migration project screen, specify a name for the project, in the Source server type text box, select MySQL, and then in the Target server type text box, select AzureDbForMySQL.

  5. Na seção Escolher o tipo de atividade, selecione Migração de dados online.In the Choose type of activity section, select Online data migration.

    Importante

    Verifique se você selecionou Migração de dados online; não há suporte para migrações offline para esse cenário.Be sure to select Online data migration; offline migrations are not supported for this scenario.

    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.Alternately, you can choose Create project only to create the migration project now and execute the migration later.

  6. Clique em Salvar.Select Save.

  7. Selecione Criar e executar atividade para criar o projeto e executar a atividade de migração.Select Create and run activity to create the project and run the migration activity.

    Observação

    Anote os pré-requisitos necessários para configurar a migração online na folha de criação do projeto.Please make a note of the pre-requisites needed to set up online migration in the project creation blade.

Especifique as configurações de origemSpecify source details

  • Na tela Detalhes da origem da migração, especifique os detalhes de conexão da instância de origem do MySQL.On the Migration source detail screen, specify the connection details for the source MySQL instance.

    Detalhes da origem

Detalhes do destino favoritoSpecify target details

  1. Selecione Salvar e, em seguida, na tela Detalhes de destino, especifique os detalhes de conexão do servidor de destino do Banco de Dados do Azure para MySQL, que é pré-provisionada e tem o esquema Employees implantado usando o MySQLDump.Select Save, and then on the Target details screen, specify the connection details for the target Azure Database for MySQL server, which is pre-provisioned and has the Employees schema deployed using MySQLDump.

    Selecionar o destino

  2. Selecione Salvar e, na tela Mapear para bancos de dados de destino, mapeie os bancos de dados de origem e de destino para a migração.Select Save, and then on the Map to target databases screen, map the source and the target database for migration.

    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.If the target database contains the same database name as the source database, Azure Database Migration Service selects the target database by default.

    Mapear para bancos de dados de destino

  3. Selecione Salvar na tela Resumo de migração, na caixa de texto Nome da atividade, especifique um nome para a atividade de migração e reveja o resumo para ter certeza de que os detalhes de origem e destino correspondem ao que foi especificado anteriormente.Select Save, on the Migration summary screen, in the Activity name text box, specify a name for the migration activity, and then review the summary to ensure that the source and target details match what you previously specified.

    Resumo do Aplicativo

Execute a migraçãoRun the migration

  • Selecione Executar migração.Select Run migration.

    A janela de atividade de migração aparece e o Status da atividade está Inicializando.The migration activity window appears, and the Status of the activity is Initializing.

Monitorar a migraçãoMonitor the migration

  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 Em execução.On the migration activity screen, select Refresh to update the display until the Status of the migration shows as Running.

    Status da atividade – em execução

  2. Em NOME DO BANCO DE DADOS, selecione um banco de dados específico para obter o status de migração das operações Carregamento de dados completo e Sincronização de dados incremental.Under DATABASE NAME, select a specific database to get to the migration status for Full data load and Incremental data sync operations.

    Carregamento de dados completo mostra o status de migração da carga inicial, enquanto Sincronização de dados incremental mostra o status da CDA (captura de dados de alterações).Full data load shows the initial load migration status, while Incremental data sync shows change data capture (CDC) status.

    Tela Estoque – carregamento de dados completo

    Tela Estoque – sincronização de dados incremental

Executar migração de substituiçãoPerform migration cutover

Após a conclusão do Carregamento completo inicial, os bancos de dados serão marcados como Prontos para Substituição.After the initial Full load is completed, the databases are marked Ready to Cutover.

  1. Quando estiver pronto para concluir a migração de banco de dados, selecione Iniciar substituição.When you're ready to complete the database migration, select Start Cutover.

    Iniciar a substituição

  2. Pare todas as transações de entrada para o banco de dados de origem; aguarde até que o contador Alterações pendentes contador mostre 0.Make sure to stop all the incoming transactions to the source database; wait until the Pending changes counter shows 0.

  3. Selecione Confirmar e selecione Aplicar.Select Confirm, and the select Apply.

  4. Quando o status de migração de banco de dados mostrar Concluído, conecte seus aplicativos ao novo banco de dados de destino do Banco de Dados do Azure para MySQL.When the database migration status shows Completed, connect your applications to the new target Azure Database for MySQL database.

A migração online de uma instância local do MySQL para o Banco de Dados do Azure para MySQL agora foi concluída.Your online migration of an on-premises instance of MySQL to Azure Database for MySQL is now complete.

Próximas etapasNext steps