Exercício: Migrar o banco de dados MySQL local para o Banco de Dados do Azure para MySQL
Neste exercício, você migrará um banco de dados MySQL para o Azure. Você migrará um banco de dados MySQL existente em execução em uma máquina virtual para o Banco de Dados do Azure para MySQL.
Você trabalha como desenvolvedor de banco de dados para a organização AdventureWorks. A AdventureWorks vende bicicletas e peças de bicicletas diretamente ao consumidor final e distribuidores há mais de uma década. Seus sistemas armazenam informações em um banco de dados que atualmente é executado usando o MySQL em uma VM do Azure. Como parte de um exercício de racionalização de hardware, a AdventureWorks deseja mover o banco de dados para um banco de dados gerenciado do Azure. Você foi solicitado a executar essa migração.
Importante
O Serviço de Migração de Dados do Azure não é suportado no ambiente seguro gratuito do Azure. Você pode executar essas etapas em sua própria assinatura pessoal ou apenas acompanhar para entender como migrar seu banco de dados.
Configurar o ambiente
Execute esses comandos da CLI do Azure no Cloud Shell para criar uma máquina virtual, executando o MySQL, com uma cópia do banco de dados Adventure works. Os últimos comandos imprimirão o endereço IP da nova máquina virtual.
az account list-locations -o table
az group create \
--name migrate-mysql \
--location <CHOOSE A LOCATION FROM ABOVE NEAR YOU>
az vm create \
--resource-group migrate-mysql \
--name mysqlvm \
--admin-username azureuser \
--admin-password Pa55w.rdDemo \
--image Ubuntu2204 \
--public-ip-address-allocation static \
--public-ip-sku Standard \
--size Standard_B2ms
az vm open-port \
--resource-group migrate-mysql \
--name mysqlvm \
--priority 200 \
--port '22'
az vm open-port \
--resource-group migrate-mysql \
--name mysqlvm \
--priority 300 \
--port '3306'
az vm run-command invoke \
--resource-group migrate-mysql \
--name mysqlvm \
--command-id RunShellScript \
--scripts "
# MySQL installation
sudo apt-get update && sudo apt-get upgrade -y
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server
# Disable Ubuntu Firewall bind mysql
sudo ufw disable
sudo bash << EOF
echo "bind-address=0.0.0.0" >> /etc/mysql/mysql.conf.d/mysqld.cnf
echo "log-bin" >> /etc/mysql/mysql.conf.d/mysqld.cnf
echo "server-id=99" >> /etc/mysql/mysql.conf.d/mysqld.cnf
EOF
sudo service mysql stop
sudo service mysql start
# Clone exercise code
sudo git clone https://github.com/MicrosoftLearning/DP-070-Migrate-Open-Source-Workloads-to-Azure.git /home/azureuser/workshop
# Add a password to mysql root user
sudo mysqladmin -u root password Pa55w.rd
# Use mysql to create users and an empty adventureworks
sudo mysql -u root -pPa55w.rd -e \"CREATE USER azureuser IDENTIFIED BY 'Pa55w.rd';GRANT ALL PRIVILEGES ON *.* TO azureuser;CREATE DATABASE adventureworks;\"
# Use mysql to import the adventureworks database
sudo mysql --user=azureuser --password=Pa55w.rd --database=adventureworks < /home/azureuser/workshop/migration_samples/setup/mysql/adventureworks/adventureworks.sql
sudo service mysql restart"
MYSQLIP="$(az vm list-ip-addresses \
--resource-group migrate-mysql \
--name mysqlvm \
--query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \
--output tsv)"
echo $MYSQLIP
Esses comandos levarão aproximadamente 5 minutos para serem concluídos. Você não precisa esperar, você pode continuar com as etapas abaixo.
Criar o banco de dados do Azure para o servidor MySQL e o banco de dados
A primeira fase do projeto precisa que você crie um banco de dados do Azure para o MySQL para hospedar o novo banco de dados de suas empresas.
Usando um navegador da Web, abra uma nova guia e navegue até o portal do Azure.
Selecione + Criar um recurso.
Na caixa Pesquisar no Marketplace, digite Banco de Dados do Azure para MySQL e pressione enter.
Na página Banco de Dados do Azure para MySQL , selecione Criar.
Na página de opção Selecionar Banco de Dados do Azure para implantação do MySQL, em Servidor flexível, selecione Criar.
Na página Criar servidor MySQL, insira os seguintes detalhes e selecione Revisar + criar:
Property valor Grupo de recursos migrate-mysql Nome do servidor AdventureWorksNNN, onde nnn é um sufixo de sua escolha para tornar o nome do servidor exclusivo Data source Nenhuma Location Selecione a localização mais próxima de si Versão 5.7 Computação + armazenamento Selecione Configurar servidor, selecione o nível de preço Básico e, em seguida, selecione OK Nome de utilizador de administrador awadmin Palavra-passe Pa55w.rdDemo Confirme a palavra-passe Pa55w.rdDemo Na página Rever + criar, selecione Criar. Aguarde a criação do serviço antes de continuar.
Quando o serviço tiver sido criado, selecione Ir para recurso.
Selecione Segurança da conexão.
Na página Segurança da conexão, defina Permitir acesso aos serviços do Azure como Sim.
Na lista de regras de firewall, adicione uma regra chamada VM e defina o START IP ADDRESS e o END IP ADDRESS para o endereço IP da máquina virtual que executa o servidor MySQL. É o endereço IP listado como a última linha no Cloud Shell.
Selecione Adicionar endereço IP do cliente atual para também permitir que sua máquina cliente acesse o banco de dados.
Guarde e aguarde até que as regras de firewall sejam atualizadas.
No prompt do Cloud Shell, execute o seguinte comando para criar um novo banco de dados em seu serviço Banco de Dados do Azure para MySQL. Substitua [nnn] pelo sufixo usado quando criou o serviço Banco de Dados do Azure para MySQL. Substitua [grupo de recursos] pelo nome do grupo de recursos especificado para o serviço:
az MySQL db create \ --name azureadventureworks \ --server-name adventureworks[nnn] \ --resource-group migrate-mysql
Se o banco de dados for criado com êxito, você verá uma mensagem semelhante à seguinte:
{ "charset": "latin1", "collation": "latin1_swedish_ci", "id": "/subscriptions/nnnnnnnnnnnnnnnnnnnnnnnnnnnnn/resourceGroups/nnnnnn/providers/Microsoft.DBforMySQL/servers/adventureworksnnnn/databases/azureadventureworks", "name": "azureadventureworks", "resourceGroup": migrate-mysql, "type": "Microsoft.DBforMySQL/servers/databases" }
Exportar o esquema a ser usado no banco de dados de destino
Agora você se conectará à sua VM MySQL existente usando o Cloud Shell para exportar seu esquema de banco de dados.
Execute este comando da CLI do Azure para ver o endereço IP da sua VM existente.
MYSQLIP="$(az vm list-ip-addresses \ --resource-group migrate-mysql \ --name mysqlvm \ --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \ --output tsv)" echo $MYSQLIP
Conecte-se ao seu antigo servidor de banco de dados usando SSH. Digite Pa55w.rdDemo para a senha.
ssh azureuser@$MYSQLIP
Exporte o esquema para o banco de dados de origem usando o utilitário mysqldump:
mysqldump -u azureuser -pPa55w.rd adventureworks --no-data > adventureworks_mysql_schema.sql
Importar o esquema para o banco de dados de destino
No Cloud Shell, execute o seguinte comando para se conectar ao servidor azureadventureworks[nnn]. Substitua as duas instâncias de [nnn] pelo sufixo do seu serviço. Observe que o nome de usuário tem o sufixo @adventureworks[nnn ]. No prompt de senha, digite Pa55w.rdDemo.
mysql -h adventureworks[nnn].MySQL.database.azure.com -u awadmin@adventureworks[nnn] -pPa55w.rdDemo
Execute os seguintes comandos para criar um usuário chamado azureuser e defina a senha para esse usuário como Pa55w.rd. A segunda instrução dá ao usuário azureuser os privilégios necessários para criar objetos no banco de dados azureadventureworks .
GRANT SELECT ON *.* TO 'azureuser'@'localhost' IDENTIFIED BY 'Pa55w.rd'; GRANT CREATE ON *.* TO 'azureuser'@'localhost';
Execute os comandos a seguir para criar um banco de dados adventureworks .
CREATE DATABASE adventureworks;
Feche o utilitário mysql com o comando quit .
Importe o esquema adventureworks para seu serviço Banco de Dados do Azure para MySQL. Você está executando a importação como azureuser, portanto, digite a senha Pa55w.rd quando solicitado.
mysql -h adventureworks[nnnn].MySQL.database.azure.com -u awadmin@adventureworks[nnn] -pPa55w.rdDemo adventureworks < adventureworks_mysql_schema.sql
Executar uma migração online usando o Serviço de Migração de Banco de Dados
Regresse ao portal do Azure.
Clique em Todos os serviços, clique em Subscrições e, em seguida, clique na sua subscrição.
Na página da sua subscrição, em Definições, clique em Fornecedores de recursos.
Na caixa Filtrar por nome, digite DataMigration e clique em Microsoft.DataMigration.
Se o Microsoft.DataMigration não estiver registrado, clique em Registrar e aguarde até que o Status mude para Registrado. Pode ser necessário clicar em Atualizar para ver a alteração de status.
Selecione Criar um recurso, na caixa Pesquisar no Marketplace , digite Serviço de Migração de Banco de Dados do Azure e pressione Enter.
Na página Serviço de Migração de Banco de Dados do Azure, selecione Criar.
Na página Criar Serviço de Migração, insira os seguintes detalhes e selecione Avançar: Rede >>.
Property valor Selecionar um grupo de recursos migrate-mysql Nome do serviço de migração adventureworks_migration_service Location Selecione a localização mais próxima de si Modo de serviço Azure Escalão de preço Premium, com 4 vCores Na página Rede, selecione a rede virtual MySQLvnet/mysqlvmSubnet. Esta rede foi criada como parte da configuração.
Selecione Rever + criar e, em seguida, selecione Criar. Aguarde enquanto o Serviço de Migração de Banco de Dados é criado. Esta operação irá demorar alguns minutos.
No portal do Azure, vá para a página do seu Serviço de Migração de Banco de Dados.
Selecione Novo projeto de migração.
Na página Novo projeto de migração, insira os seguintes detalhes e selecione Criar e executar atividade.
Property valor Nome do projeto adventureworks_migration_project Tipo do servidor de origem MySQL Banco de dados de destino para MySQL Base de Dados do Azure para MySQL Escolher tipo de atividade Migração de dados online Quando o Assistente de Migração for iniciado, na página Selecionar origem , insira os seguintes detalhes.
Property valor Nome do servidor de origem nn.nn.nn.nn (O endereço IP da máquina virtual do Azure que executa o MySQL) Porta do servidor 3306 Nome de Utilizador azureuser Palavra-passe Pa55w.rd Selecione Avançar: Selecione o destino>>.
Na página Selecionar destino, insira os seguintes detalhes.
Property valor Nome do servidor de destino AdventureWorks[nn]. MySQL.database.azure.com Nome de Utilizador awadmin@adventureworks[nnn] Palavra-passe Pa55w.rdDemo Selecione Avançar: Selecionar bancos de dados>>.
Na página Selecionar bancos de dados, verifique se o Banco de Dados de Origem e o Banco de Dados de Destino estão definidos como adventureworks e selecione Avançar: Definir configurações de migração.
Na página Configurar configurações de migração, selecione Avançar: Resumo>>.
Na página Resumo da migração, na caixa Nome da atividade, digite AdventureWorks_Migration_Activity e selecione Iniciar migração.
Na página AdventureWorks_Migration_Activity, selecione Atualizar em intervalos de 15 segundos. Você verá o status da operação de migração à medida que ela progride.
Aguarde até que a coluna DETALHES DA MIGRAÇÃO mude para Pronto para substituição.
Modificar dados e transferir para o novo banco de dados
Retorne à página AdventureWorks_Migration_Activity no portal do Azure.
Selecione o banco de dados adventureworks .
Na página adventureworks, verifique se o status de todas as tabelas está marcado como CONCLUÍDO.
Selecione Sincronização incremental de dados. Verifique se o status de cada tabela está marcado como Sincronização.
Volte para o Cloud Shell.
Execute o seguinte comando para se conectar ao banco de dados adventureworks em execução usando o MySQL na máquina virtual:
mysql -pPa55w.rd adventureworks
Execute as seguintes instruções SQL para exibir e, em seguida, remova as ordens 43659, 43660 e 43661 do banco de dados.
SELECT * FROM salesorderheader WHERE salesorderid IN (43659, 43660, 43661); SELECT * FROM salesorderdetail WHERE salesorderid IN (43659, 43660, 43661); DELETE FROM salesorderheader WHERE salesorderid IN (43659, 43660, 43661); DELETE FROM salesorderdetail WHERE salesorderid IN (43659, 43660, 43661);
Feche o utilitário mysql com o comando quit .
Retorne à página adventureworks no portal do Azure e selecione Atualizar. Role até a página das tabelas salesorderheader e salesorderdetail . Verifique se a tabela salesorderheader indica que 3 linhas foram excluídas e 29 linhas foram removidas da tabela sales.salesorderdetail . Se não houver atualizações aplicadas, verifique se há alterações pendentes para o banco de dados.
Selecione Iniciar substituição.
Na página Substituição completa, selecione Confirmar e, em seguida, selecione Aplicar. Aguarde até que o status mude para Concluído.
Regresse ao Cloud Shell.
Execute o seguinte comando para se conectar ao banco de dados azureadventureworks em execução usando seu serviço Banco de Dados do Azure para MySQL:
mysql -h adventureworks[nnn].MySQL.database.azure.com -u awadmin@adventureworks[nnn] -pPa55w.rdDemo adventureworks
Execute as instruções SQL a seguir para exibir os pedidos e detalhes dos pedidos 43659, 43660 e 43661. O objetivo destas consultas é mostrar que os dados foram transferidos:
SELECT * FROM salesorderheader WHERE salesorderid IN (43659, 43660, 43661); SELECT * FROM salesorderdetail WHERE salesorderid IN (43659, 43660, 43661);
A primeira consulta deve retornar 3 linhas. A segunda consulta deve retornar 29 linhas.
Feche o utilitário mysql com o comando quit .
Feche a conexão ssh com o comando exit .
Limpe os recursos que você criou
Importante
Se você executou essas etapas em sua própria assinatura pessoal, poderá excluir os recursos individualmente ou excluir o grupo de recursos para excluir todo o conjunto de recursos. Os recursos que deixar em execução podem custar dinheiro.
- Usando o Cloud Shell, execute este comando para excluir o grupo de recursos:
az group delete --name migrate-mysql