Partilhar via


Migrar o MySQL local para o Banco de Dados do Azure para MySQL: Migração de Dados com o MySQL Workbench

A migração de dados é fundamental para mover bancos de dados MySQL de ambientes locais para o Banco de Dados do Azure para MySQL. Este artigo se concentra no uso do MySQL Workbench, uma ferramenta poderosa que simplifica a migração. Usando o MySQL Workbench, você pode transferir seus dados de forma eficiente, minimizando o tempo de inatividade e garantindo a integridade dos dados. Este guia orienta você pelo processo passo a passo de configuração e execução de uma migração de dados usando o MySQL Workbench, destacando as melhores práticas e possíveis armadilhas a evitar. Se você é um administrador de banco de dados experiente ou novo em migrações de banco de dados, este artigo fornece as informações e técnicas necessárias para obter uma migração perfeita e bem-sucedida para o Azure.

Pré-requisitos

Migrar o MySQL local para o Banco de Dados do Azure para MySQL: Migração de Dados

Configurar

Siga todas as etapas no guia de instalação para criar um ambiente que ofereça suporte às etapas a seguir.

Configurar parâmetros do servidor (origem)

Dependendo do tipo de migração escolhida (offline versus online), você deseja avaliar se vai modificar os parâmetros do servidor para dar suporte a uma saída rápida dos dados. Se você estiver fazendo online, talvez não seja necessário fazer nada com os parâmetros do servidor, pois é provável que você execute uma binlog replicação e tenha os dados sincronizados por conta própria. No entanto, se você estiver fazendo uma migração offline, depois de interromper o tráfego de aplicativos, poderá alternar os parâmetros do servidor de suporte à carga de trabalho para suporte à exportação.

Configurar parâmetros do servidor (Destino)

Revise os parâmetros do servidor antes de iniciar o processo de importação para o Banco de Dados do Azure para MySQL. Os parâmetros do servidor podem ser recuperados e definidos usando o portal do Azure ou chamando os cmdlets do Azure PowerShell para MySQL para fazer as alterações.

Execute o seguinte script do PowerShell para obter todos os parâmetros:

\[Net.ServicePointManager\]::SecurityProtocol = \[Net.SecurityProtocolType\]::Tls
12

Install-Module -Name Az.MySql
Connect-AzAccount
$rgName = "{RESOURCE\_GROUP\_NAME}";
$serverName = "{SERVER\_NAME}";
Get-AzMySqlConfiguration -ResourceGroupName $rgName -ServerName $serverName
mysql --host {servername}.mysql.database.azure.com --database mysql --user
{u sername}@{servername} -p --ssl-ca=c:\\temp\\BaltimoreCyberTrustRoot.crt.cer
-A -e "SHOW GLOBAL VARIABLES;" \> c:\\temp\\settings\_azure.txt

No novo arquivo 'settings_azure.txt', você pode ver o Banco de Dados do Azure padrão para parâmetros de servidor MySQL, conforme mostrado no apêndice.

Para suportar a migração, defina os parâmetros da instância MySQL de destino para permitir uma entrada mais rápida. Os seguintes parâmetros de servidor devem ser definidos antes de iniciar a migração de dados:

  • max\_allowed\_packet – defina o parâmetro como 1073741824 (ou seja, 1 GB) ou o maior tamanho de uma linha no banco de dados para evitar qualquer problema de estouro devido a linhas longas. Considere ajustar esse parâmetro se houver linhas BLOB grandes que precisem ser puxadas (ou lidas).

  • innodb\_buffer\_pool\_size – Escale o servidor para 32 vCore Memory Optimized SKU a partir da camada de preços do portal durante a migração para aumentar o innodb_buffer_pool_size. Innodb_buffer_pool_size só pode ser aumentada dimensionando a computação para o Banco de Dados do Azure para o servidor MySQL. Parâmetros do Servidor de Referência no Banco de Dados do Azure para MySQL para o valor máximo da camada. O valor máximo em um sistema vCore 32 otimizado para memória é 132070244352.

  • innodb\_io\_capacity & innodb\_io\_capacity\_max - Altere o parâmetro para 9000 melhorar a utilização de E/S para otimizar a velocidade de migração.

  • max\_connections - Se estiver usando uma ferramenta que gera vários threads para aumentar a taxa de transferência, aumente as conexões para suportar essa ferramenta. O padrão é 151, max é 5000.

    Nota

    Tenha cuidado ao realizar o dimensionamento. Algumas operações não podem ser desfeitas, como o dimensionamento de armazenamento.

Essas configurações podem ser atualizadas usando os cmdlets do Azure PowerShell abaixo:

Install-Module -Name Az.MySql
$rgName = " {RESOURCE\_GROUP\_NAME}";
$serverName = "{SERVER\_NAME}";

Select-AzSubscription -Subscription "{SUBSCRIPTION\_ID}"
Update-AzMySqlConfiguration -Name max\_allowed\_packet -ResourceGroupName
$rgna me -ServerName $serverName -Value 1073741824
Update-AzMySqlConfiguration -Name innodb\_buffer\_pool\_size -ResourceGroupName
$rgname -ServerName $serverName -Value 16106127360
Update-AzMySqlConfiguration -Name innodb\_io\_capacity -ResourceGroupName
$rgna me -ServerName $serverName -Value 9000
Update-AzMySqlConfiguration -Name innodb\_io\_capacity\_max -ResourceGroupName
$ rgname -ServerName $serverName -Value 9000

\#required if You've functions

Update-AzMySqlConfiguration -Name log\_bin\_trust\_function\_creators
-ResourceGr oupName $rgname -ServerName $serverName -Value ON

Dados

Escolha da ferramenta

Com os objetos de banco de dados e os usuários do sistema de origem migrados, a migração pode começar. Os bancos de dados em execução no MySQL versão 8.0 não podem usar o DMS do Azure para migrar a carga de trabalho. Em vez disso, os usuários de migração devem usar o MySQL Workbench.

Etapas manuais de importação e exportação

  • Abra o MySQL Workbench e conecte-se como usuário raiz do banco de dados local.

  • Em **Gerenciamento**, selecione **Exportação de dados**. Selecione o esquema reg_app .

  • Em Objetos a Exportar, selecione Dump Stored Procedures and Functions, Dump Events e Dump Triggers.

  • Em Opções de Exportação, selecione Exportar para Arquivo Independente.

  • Além disso, marque a caixa de seleção Incluir Criar esquema . Consulte a imagem abaixo para observar a configuração correta do mysqldump.

    Captura de tela do esquema include create.

      Teste

  • Se qualquer uma dessas opções parecer indisponível, é provável que elas sejam obstruídas pelo painel Saída. Basta alterar o layout do editor.

    Captura de tela do layout do editor.

      Teste

  • Selecione a guia Progresso da exportação.

  • Selecione Iniciar exportação, observe que o MySQL Workbench faz chamadas para a mysqldump ferramenta.

  • Abra o script de exportação recém-criado.

  • Encontre todas as DEFINER instruções e altere para um usuário válido ou remova-as completamente.

Nota

Isso pode ser feito passando o --skip-definer comando in the mysqldump. Esta não é uma opção no MySQL Workbench; portanto, as linhas precisam ser removidas manualmente nos comandos de exportação. Embora apontemos quatro itens para remover aqui, pode haver outros itens que podem falhar ao migrar de uma versão do MySQL para outra (como novas palavras reservadas).

  • Encontre SET GLOBAL instruções e altere para um usuário válido ou remova-as completamente.

  • Certifique-se de que sql\_mode não está definido como NO\_AUTO\_CREATE\_USER.

  • Remova a hello\_world função.

  • No MySQL Workbench, crie uma nova conexão com o Banco de Dados do Azure para MySQL.

    • Em Hostname, insira o DNS completo do servidor (ex: servername.mysql.database.azure.com).

    • Digite o nome de usuário (por exemplo: sqlroot@servername).

    • Selecione a guia SSL .

    • Para o arquivo de CA SSL, navegue até o arquivo de chave BaltimoreCyberTrustRoot.crt.cer .

    • Selecione Testar conexão, verifique se a conexão foi concluída.

    • Selecione OK.

      Captura de tela da caixa de diálogo de conexão MySQL.

      A caixa de diálogo de conexão MySQL é exibida.

  • Selecione File-Open> SQL Script.

  • Navegue até o arquivo de despejo, selecione Abrir.

  • Selecione Execute (Executar).

Atualizar aplicativos para suportar SSL

  • Alterne para a API do servidor Java no Visual Studio Code.

  • Abra o arquivo launch.json .

  • Atualize o DB_CONNECTION_URL para jdbc:mysql://serverDNSname:3306/reg\_app?useUnicode=true\&useJDBCCompliantT imezoneShift=true\&useLegacyDatetimeCode=false\&serverTimezone=UTC\&verifySe rverCertificate=true\&useSSL=true\&requireSSL=true\&noAccessToProcedureBodie s=true. anotar os parâmetros SSL adicionais.

  • Atualize DB_USER_NAME para conferenceuser@servername.

  • Inicie a configuração de depuração e verifique se o aplicativo funciona localmente com o novo banco de dados.

Reverter parâmetros do servidor

Os parâmetros a seguir podem ser alterados no Banco de Dados do Azure para a instância de destino do MySQL. Esses parâmetros podem ser definidos por meio do portal do Azure ou usando os cmdlets do Azure PowerShell para MySQL.

$rgName = "YourRGName";
$serverName = "servername";
Update-AzMySqlConfiguration -Name max\_allowed\_packet -ResourceGroupName
$rgna me -ServerName $serverName -Value 536870912
Update-AzMySqlConfiguration -Name innodb\_buffer\_pool\_size -ResourceGroupName
$rgname -ServerName $serverName -Value 16106127360
Update-AzMySqlConfiguration -Name innodb\_io\_capacity -ResourceGroupName $rgna
me -ServerName $serverName -Value 200
Update-AzMySqlConfiguration -Name innodb\_io\_capacity\_max -ResourceGroupName
$ rgname -ServerName $serverName -Value 2000

Alterar a cadeia de conexão para a API Java

  • Use os comandos a seguir para alterar a cadeia de conexão da API Java do Serviço de Aplicativo:
$rgName = "YourRGName";
$app_name = "servername";
az webapp config appsettings set -g $rgName -n $app_name
--settings DB_CONNECTION_URL={DB_CONNECTION_URL}

Nota

Lembre-se de que você pode usar o Portal para definir a cadeia de conexão.

  • Reinicie a API do Serviço de Aplicativo
az webapp restart -g $rgName -n $app\_name

Você concluiu com êxito uma migração local para o Banco de Dados do Azure para MySQL!

Próximo passo