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 é crítica 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 Workbench do MySQL, uma ferramenta poderosa que simplifica a migração. Com o Workbench do MySQL você pode transferir dados com eficiência, minimizando o tempo de inatividade e garantindo a integridade dos dados. Este guia apresenta o processo passo a passo de configurar e executar uma migração de dados usando o Workbench do MySQL, destacando as melhores práticas e possíveis armadilhas a serem evitadas. Seja como um administrador de banco de dados experiente ou inexperiente nas migrações de banco de dados, este artigo fornece os insights e as técnicas necessárias para obter uma migração perfeita e com êxito para o Azure.
Pré-requisitos
Migrar o MySQL local para o Banco de Dados do Azure para MySQL: migração de dados
Instalação
Siga todas as etapas no guia de instalação para criar um ambiente para dar suporte às etapas a seguir.
Configurar parâmetros de servidor (Origem)
Dependendo do tipo de migração escolhido (offline x online), avalie se você vai modificar os parâmetros do servidor para dar suporte a uma saída rápida dos dados. Se for fazer a online, talvez não seja necessário fazer nada nos parâmetros do servidor, pois provavelmente você executará uma replicação binlog
e fará a sincronização dos dados por conta própria. No entanto, se for fazer uma migração offline, após interromper o tráfego do aplicativo é possível alternar os parâmetros de servidor de suporte à carga de trabalho para dar suporte à exportação.
Configurar parâmetros de servidor (Destino)
Examine os parâmetros do servidor antes de iniciar o processo de importação no Banco de Dados MySQL do Azure. Os parâmetros do servidor podem ser recuperados e configurados usando o portal do Azure ou chamando os cmdlets do Azure PowerShell for 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
Para fazer o mesmo com a ferramenta MySQL, baixe a certificação raiz da CA para c:\temp (crie este diretório).
Observação
O certificado está sujeito a alterações. Confira Configurar conectividade SSL no aplicativo para conectar-se com segurança ao Banco de Dados do Azure para MySQL para obter as informações mais recentes sobre o certificado.
Execute o seguinte em um prompt de comando e certifique-se de atualizar os tokens:
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 os parâmetros de servidor padrão do Banco de Dados do Azure para MySQL Server, conforme mostrado no apêndice.
Para dar suporte à migração, defina os parâmetros de instância do 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
– configure o parâmetro como1073741824
(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 grandes linhas de BLOB que precisam ser extraídas (ou lidas).innodb\_buffer\_pool\_size
– Escale verticalmente o servidor para SKU de 32 vCore Otimizado para Memória do tipo de preço do portal durante a migração para aumentar o tamanho do iinnodb_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. Parâmetros de servidor de referência no Banco de Dados do Azure para MySQL para o valor máximo do nível. O valor máximo em um sistema de 32 vCore Otimizado para Memória é132070244352
.innodb\_io\_capacity
einnodb\_io\_capacity\_max
– Altere o parâmetro para9000
para 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 dar suporte a essa ferramenta. O padrão é151
, o máximo é5000
.Observação
Tome cuidado ao executar 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
Opção de 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 Azure DMS para migrar a carga de trabalho. Em vez disso, os usuários de migração devem usar o MySQL Workbench.
Etapas de importação e exportação manuais
Abra o MySQL Workbench e conecte-se como o 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 Despejar Funções e Procedimentos Armazenados, Despejar Eventos e Despejar Gatilhos.
Em Opções de Exportação, selecione Exportar para Arquivo Autônomo.
Além disso, marque a caixa de seleção Incluir Criar Esquema. Confira a imagem abaixo para observar a configuração correta do mysqldump.
Test
Se qualquer uma dessas opções aparece indisponível, ela provavelmente está obstruída pelo painel Saída. Basta alterar o layout do editor.
Test
Selecione a guia Progresso da Exportação.
Selecione Iniciar Exportação, observe que o MySQL Workbench faz chamadas para a ferramenta
mysqldump
.Abra o script de exportação recém-criado.
Localize todas as instruções
DEFINER
e altere-as para um usuário válido ou remova-as por completo.
Observação
Isso pode ser feito passando o --skip-definer
no comando mysqldump. Essa não é uma opção no MySQL Workbench, portanto, as linhas precisam ser removidas manualmente nos comandos de exportação. Embora tenhamos apontado quatro itens para serem removidos aqui, pode haver outros itens que poderiam falhar ao migrar de uma versão do MySQL para outra (como novas palavras reservadas).
Localize as instruções
SET GLOBAL
e altere-as para um usuário válido ou remova-as completamente.Verifique se
sql\_mode
não está definido comoNO\_AUTO\_CREATE\_USER
.Remova a função
hello\_world
.No MySQL Workbench, crie uma nova conexão com o Banco de Dados do Azure para MySQL.
Para o nome do host, insira o DNS do servidor completo (por exemplo:
servername.mysql.database.azure.com
).Insira o nome de usuário (por exemplo,
sqlroot@servername
).Selecione a guia SSL.
Para o arquivo de Autenticação do Cliente SSL, navegue até o arquivo da chave BaltimoreCyberTrustRoot.crt.cer.
Selecione Testar Conexão e verifique se a conexão foi concluída.
Selecione OK.
A caixa de diálogo conexão MySQL é exibida.
Selecione Arquivo->Abrir script SQL.
Navegue até o arquivo de despejo e selecione Abrir.
Selecione Executar.
Atualizar aplicativos para dar suporte a SSL
Alterne para a API do servidor Java no Visual Studio Code.
Abra o arquivo launch.json.
Atualize 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.
Observe 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 na instância de destino do Banco de Dados do Azure para 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 do Java
- Usar os comandos a seguir para alterar a cadeia de conexão para a API do 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}
Observação
Você pode usar o Portal para configurar 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!