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

Você pode usar o Serviço de Migração de Banco de Dados do Azure para migrar os bancos de dados de uma instância do MySQL local para o Banco de Dados do Azure para MySQL com tempo de inatividade mínimo.You can use Azure Database Migration Service to migrate the databases from an on-premises MySQL instance to Azure Database for MySQL with minimal downtime. 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 minimum downtime to the application. Neste tutorial, você migrará o banco de dados de exemplo Employees de uma instância local do MySQL 5.7 para o Banco de Dados do Azure para MySQL usando uma 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 on-premises instance of MySQL 5.7 to Azure Database for MySQL by using an online migration activity in Azure Database Migration Service.

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

  • Migrar o esquema de exemplo usando o utilitário mysqldump.Migrate the sample schema using mysqldump utility.
  • 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.

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 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.

Observação

Comunicação livre de desvioBias-free communication

A Microsoft dá suporte a um ambiente diversificado e de inclusão.Microsoft supports a diverse and inclusionary environment. Este artigo contém referências à palavra subordinada.This article contains references to the word slave. O Guia de estilo da Microsoft para comunicação sem tendência reconhece isso como uma palavra de exclusão.The Microsoft style guide for bias-free communication recognizes this as an exclusionary word. A palavra é usada neste artigo para fins de consistência porque, atualmente, ela é a palavra que aparece no software.The word is used in this article for consistency because it's currently the word that appears in the software. Quando o software for atualizado para remover a palavra, este artigo será atualizado para estar em alinhamento.When the software is updated to remove the word, this article will be updated to be in alignment.

Pré-requisitosPrerequisites

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

  • Baixar e instalar o MySQL community edition 5.6 ou 5.7.Download and install MySQL community edition 5.6 or 5.7. A versão do MySQL local deve corresponder à versão do Banco de Dados do Azure para MySQL.The on-premises MySQL version must match with Azure Database for MySQL version. Por exemplo, o MySQL 5.6 só pode migrar para o Banco de Dados do Azure para MySQL 5.6; não pode ser atualizado para 5.7.For example, MySQL 5.6 can only migrate to Azure Database for MySQL 5.6 and not upgraded to 5.7.

  • Criar uma instância no Banco de Dados do Azure para MySQL.Create an instance in Azure Database for MySQL. Consulte 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 portal do Azure.Refer to the article Use MySQL Workbench to connect and query data for details about how to connect and create a database using the Azure portal.

  • Crie um Rede Virtual do Microsoft Azure para o serviço de migração de banco de dados do Azure usando Azure Resource Manager modelo de implantação, que fornece conectividade site a site para seus servidores de origem locais usando o ExpressRoute ou VPN.Create a Microsoft Azure Virtual Network for Azure Database Migration Service by using 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, consulte a documentação da rede virtuale especialmente 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.

    Observação

    Durante a instalação do networkNet virtual, se você usar o ExpressRoute com emparelhamento de rede para a Microsoft, adicione os seguintes pontos de extremidade de serviço à sub-rede na qual o serviço será provisionado:During virtual networkNet setup, if you use ExpressRoute with network peering to Microsoft, add the following service endpoints to the subnet in which the service will be provisioned:

    • 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)Target database endpoint (for example, SQL endpoint, Cosmos DB endpoint, and so on)
    • Ponto de extremidade de armazenamentoStorage endpoint
    • Ponto de extremidade do barramento de serviçoService bus endpoint

    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.This configuration is necessary because Azure Database Migration Service lacks internet connectivity.

  • Verifique se as regras do grupo de segurança de rede de rede virtual não bloqueiam as seguintes portas de comunicação de entrada para o serviço de migração de banco de dados do Azure: 443, 53, 9354, 445, 12000.Ensure that your virtual network Network Security Group rules don't block the following inbound communication ports to Azure Database Migration Service: 443, 53, 9354, 445, 12000. Para obter mais detalhes sobre a filtragem de tráfego NSG de rede virtual, consulte 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.

  • Configurar o Firewall do Windows para acesso ao mecanismo de banco de dados.Configure your Windows Firewall for database engine access.

  • Abra o Firewall do Windows para permitir que o Serviço de Migração de Banco de Dados do Azure acesse o Servidor MySQL de origem, que, por padrão, é a porta TCP 3306.Open your Windows firewall to allow Azure Database Migration Service to access the source MySQL Server, which by default is TCP port 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 o Serviço de Migração de Banco de Dados do Azure acesse os bancos de dados de origem para migração.When using a firewall appliance in front of your source database(s), you may need to add firewall rules to allow Azure Database Migration Service to access the source database(s) for migration.

  • Crie uma regra de firewall no nível de servidor para o Banco de Dados do Azure para MySQL a fim de permitir o acesso do Serviço de Migração de Banco de Dados do Azure aos bancos de dados de destino.Create a server-level firewall rule for Azure Database for MySQL to allow Azure Database Migration Service access to the target databases. Forneça o intervalo de sub-rede da rede virtual usada para o serviço de migração de banco de dados do Azure.Provide the subnet range of the virtual network used for Azure Database Migration Service.

  • O MySQL de origem deve estar no MySQL community edition com suporte.The source MySQL must be on supported MySQL community edition. Para determinar a versão da instância do MySQL, execute o seguinte comando no utilitário MySQL ou no MySQL Workbench:To determine the version of MySQL instance, in the MySQL utility or MySQL Workbench, run the following command:

    SELECT @@version;
    
  • O Banco de Dados do Azure para MySQL dá suporte somente a tabelas do InnoDB.Azure Database for MySQL supports only InnoDB tables. Para converter tabelas do MyISAM para o InnoDB, consulte o artigo Converter tabelas do MyISAM para o InnoDBTo convert MyISAM tables to InnoDB, see the article Converting Tables from MyISAM to InnoDB

  • Habilite registro em log binário no arquivo my.ini (Windows) ou my.cnf (Unix) no banco de dados de origem usando a seguinte configuração:Enable binary logging in the my.ini (Windows) or my.cnf (Unix) file in source database by using the following configuration:

    • server_id = 1 ou superior (relevante apenas para MySQL 5.6)server_id = 1 or greater (relevant only for MySQL 5.6)
    • log-bin = <path> (relevante apenas para MySQL 5,6) Por exemplo: log-bin = E:\ MySQL_logs \BinLoglog-bin =<path> (relevant only for MySQL 5.6) For example: log-bin = E:\MySQL_logs\BinLog
    • binlog_format = rowbinlog_format = row
    • Expire_logs_days = 5 (é recomendável não usar zero; relevante somente para MySQL 5.6)Expire_logs_days = 5 (it's recommended to not use zero; relevant only for MySQL 5.6)
    • Binlog_row_image = full (relevante apenas para o MySQL 5.6)Binlog_row_image = full (relevant only for MySQL 5.6)
    • log_slave_updates = 1log_slave_updates = 1
  • O usuário precisa ter a função ReplicationAdmin com os seguintes privilégios:The user must have the ReplicationAdmin role with the following privileges:

    • CLIENTE DE REPLICAÇÃO: obrigatório apenas para tarefas de Processamento de Alterações.REPLICATION CLIENT - Required for Change Processing tasks only. Em outras palavras, tarefas somente de Carregamento Completo não exigem esse privilégio.In other words, Full Load only tasks don't require this privilege.
    • RÉPLICA DE REPLICAÇÃO: obrigatório apenas para tarefas de Processamento de Alterações.REPLICATION REPLICA - Required for Change Processing tasks only. Em outras palavras, tarefas somente de Carregamento Completo não exigem esse privilégio.In other words, Full Load only tasks don't require this privilege.
    • SUPER: obrigatório somente nas versões anteriores a MySQL 5.6.6.SUPER - Only required in versions earlier than MySQL 5.6.6.

Migrar o esquema de exemploMigrate the sample schema

Para concluir 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.To complete all the database objects like table schemas, indexes and stored procedures, we need to extract schema from the source database and apply to the database. Para extrair o esquema, você pode usar mysqldump com o parâmetro --no-data.To extract schema, you can use mysqldump with the --no-data parameter.

Supondo que você tenha os funcionários do MySQL exemplo de banco de dados no sistema local, o comando para fazer a migração de esquema usando o mysqldump é:Assuming you have MySQL Employees sample database in the on-premises system, the command to do schema migration using mysqldump is:

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

Por exemplo:For example:

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

Para importar o esquema no Banco de Dados do Azure para MySQL de destino, execute o seguinte comando:To import schema to Azure Database for MySQL target, run the following command:

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

Por exemplo:For example:

mysql.exe -h shausample.mysql.database.azure.com -u dms@shausample -p employees < d:\employees.sql

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. Execute o seguinte script no MySQL Workbench para extrair o script de soltar a chave estrangeira e adicionar um script de chave estrangeira.Execute the following script in MySQL Workbench to extract the drop foreign key script and add foreign key script.

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;

Execute a chave estrangeira removível (que é a segunda coluna) no resultado da consulta de chave estrangeira removível.Run the drop foreign key (which is the second column) in the query result to drop foreign key.

Observação

O Azure DMS não dá suporte à ação referencial em cascata, 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, consulte a seção ações referenciais do artigo restrições de chave estrangeira.For more information, in the MySQL documentation, see the Referential Actions section of the article FOREIGN KEY Constraints. O Azure DMS exige que você remova as restrições de chave estrangeira no servidor de banco de dados de destino durante o carregamento inicial e não pode usar 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 sua carga de trabalho depende da atualização de uma tabela filho relacionada por meio dessa ação referencial, recomendamos que você execute um despejo e uma restauração em vez disso.If your workload depends on updating a related child table via this referential action, we recommend that you perform a dump and restore instead.

Importante

Se estiver importando dados usando um backup, remova os comandos CREATE DEFINER manualmente ou usando o comando --skip-definer ao executar um mysqldump.If importing data using a backup, remove the CREATE DEFINER commands manually or by using the --skip-definer command when performing a mysqldump. O DEFINER requer superprivilégios para criar e está restrito no Banco de Dados do Azure para MySQL.DEFINER requires super privileges to create and is restricted in Azure Database for MySQL.

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

Para desabilitar gatilhos no banco de dados de destino, use o seguinte comando:To disable triggers in the target database, use the following command:

SELECT Concat('DROP TRIGGER ', Trigger_Name, ';') FROM  information_schema.TRIGGERS WHERE TRIGGER_SCHEMA = 'your_schema';

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 DMSCreate a DMS instance

  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 uma rede virtual existente ou crie uma nova.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 ao SQL Server de origem e à instância de destino do banco de dados SQL do Azure.The virtual network provides Azure Database Migration Service with access to the source SQL Server and the target Azure SQL Database instance.

    Para obter mais informações sobre como criar uma rede virtual no portal do Azure, consulte 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.

  5. Selecione um tipo de preço.Select a pricing tier.

    Para obter mais informações sobre os custos e camadas de preços, consulte a página de preços.For more information on costs and pricing tiers, see the pricing page.

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

  6. 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.

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

  2. Na tela Serviços de Migração de Banco de Dados do Azure, pesquise 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 Azure Database Migration Service instance that you created, and then select the instance.

    Localizar a 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. Em Novo projeto de migração, especifique um nome de projeto; na caixa de texto Tipo de servidor de origem, selecione MySQL e, 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, in the Target server type text box, select AzureDbForMySQL.

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

    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. Selecione Salvar, observe os requisitos para usar o DMS para migrar dados com êxito e selecione Criar e executar atividade.Select Save, note the requirements to successfully use DMS to migrate data, and then select Create and run activity.

Especifique as configurações de origemSpecify source details

  1. Na tela Adicionar Detalhes da Origem, especifique os detalhes da conexão da instância do MySQL de origem.On the Add Source Details screen, specify the connection details for the source MySQL instance.

    Tela Adicionar Detalhes da Origem

Detalhes do destino favoritoSpecify target details

  1. Selecione Salvare, na tela Detalhes de destino, especifique os detalhes de conexão do servidor do Banco de Dados para MySQL de destino, que é a instância previamente provisionada do Banco de Dados do Azure para MySQL na qual o esquema Employees foi implantado usando mysqldump.Select Save, and then on the Target details screen, specify the connection details for the target Azure Database for MySQL server, which is the pre-provisioned instance of Azure Database for MySQL to which the Employees schema was deployed by using mysqldump.

    Tela de detalhes do 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

    Observação

    Embora você possa selecionar vários bancos de dados nesta etapa, cada instância do serviço de migração de banco de dados do Azure dá suporte a até quatro bancos de dados para migração simultânea.Though you can select multiple databases in this step, each instance of Azure Database Migration Service supports up to four databases for concurrent migration. Além disso, há um limite de duas instâncias do serviço de migração de banco de dados do Azure por região em uma assinatura.Also, there is a limit of two instances of Azure Database Migration Service per region in a subscription. Por exemplo, se você tiver 40 bancos de dados para migrar, só poderá migrar oito deles simultaneamente, e somente se tiver criado duas instâncias do serviço de migração de banco de dados do Azure.For example, if you have 40 databases to migrate, you can only migrate eight of them concurrently, and only if you have created two instances of Azure Database Migration Service.

  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 Concluído.On the migration activity screen, select Refresh to update the display until the Status of the migration shows as Complete.

    Status da atividade: concluído

  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 specific database to get to the migration status for Full data load and Incremental data sync operations.

    O carregamento de dados completo mostrará o status de migração da carga inicial e a sincronização de dados incremental mostrará o status da CDC (Captura de Dados de Alterações).Full data load will show the initial load migration status while Incremental data sync will show change data capture (CDC) status.

    Status da atividade: carregamento completo concluído

    Status da atividade: sincronização de dados incrementais

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

Após a conclusão do carregamento completo inicial, os bancos de dados são marcados como Pronto 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 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 Confirmare 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 SQL do Azure de destino.When the database migration status shows Completed, connect your applications to the new target Azure SQL Database.

Próximas etapasNext steps