ID-AZ-002 - Separação Do MySQL Do Disco Do SO
ID: KB-XX-002
Responsável: Thiago Thalisson, TI
Status: Publicado
Última Atualização: 16/09/2025
Propósito
Descrever o procedimento técnico para mover o diretório de dados do MySQL para um disco externo em uma Máquina Virtual (VM) do Azure, permitindo que o disco (e os dados) seja facilmente transferido para outra VM.
Aplica-se a
GTT Nível 1: Time de desenvolvimento da Fictor.
Pré-requisitos
Instalar o MySQL: Se ainda não estiver instalado na VM, execute:
sudo apt update sudo apt install mysql-server -yCriar e Anexar Disco Externo: No Portal Azure, crie um novo disco gerenciado e anexe-o à sua máquina virtual. Normalmente, ele será identificado pelo sistema operacional como
/dev/sdc.Acesso SSH: Garanta que você tenha acesso SSH à máquina virtual.
Instruções
1. Visão Geral do Processo
Este guia está dividido em três partes principais:
Configuração Inicial: Preparar a primeira VM, instalar o MySQL, formatar um disco externo e mover os dados do MySQL para ele.
Importação de Dados: Um passo opcional para popular o banco de dados.
Transferência do Disco: Desanexar o disco da VM original e anexá-lo a uma nova VM, configurando o MySQL para rodar a partir dele.
2. Parte 1: Configuração da VM Inicial
2.2. Script para Montagem e Migração do MySQL
O script a seguir automatiza a formatação, montagem do disco, movimentação dos dados do MySQL e reconfiguração do serviço.
Crie o arquivo de script:
touch sql-move-and-update.shCole o conteúdo abaixo no arquivo. **Nota:** O script foi corrigido para atualizar o arquivo de configuração do MySQL corretamente, em vez de sobrescrevê-lo de forma incorreta.
#!/bin/bash # Função para formatar, criar ponto de montagem e montar o disco externo make_and_mount_drive() { echo ">>> Formatando e montando o disco /dev/sdc em /mnt/external-disk..." sudo mkdir -p /mnt/external-disk sudo mkfs.ext4 /dev/sdc sudo mount /dev/sdc /mnt/external-disk echo ">>> Disco montado com sucesso." } # Função para parar o MySQL, mover os dados e reconfigurar change_mysql() { echo ">>> Movendo dados do MySQL..." sudo systemctl stop mysql sudo mv /var/lib/mysql /mnt/external-disk/mysql sudo chown -R mysql:mysql /mnt/external-disk/mysql MYSQL_CONF="/etc/mysql/mysql.conf.d/mysqld.cnf" NEW_DATADIR="/mnt/external-disk/mysql" echo ">>> Fazendo backup e atualizando o arquivo de configuração do MySQL..." # Faz um backup do arquivo de configuração original sudo cp "$MYSQL_CONF" "${MYSQL_CONF}.bak" # Atualiza a diretiva 'datadir' no arquivo de configuração sudo sed -i "s|^datadir.*|datadir = ${NEW_DATADIR}|" "$MYSQL_CONF" echo ">>> Reiniciando o serviço MySQL..." sudo systemctl start mysql sudo systemctl status mysql } # Função para configurar a montagem automática do disco no boot automount() { echo ">>> Configurando fstab para montagem automática..." uuid=$(sudo blkid -s UUID -o value /dev/sdc) if [ -z "$uuid" ]; then echo "ERRO: Falha ao obter o UUID para /dev/sdc." exit 1 fi fstab_entry="UUID=$uuid /mnt/external-disk ext4 defaults 0 2" if grep -qF "$fstab_entry" /etc/fstab; then echo ">>> Entrada já existe no /etc/fstab." else echo "$fstab_entry" | sudo tee -a /etc/fstab echo ">>> Entrada adicionada ao /etc/fstab." fi sudo mount -a echo ">>> Montagem via 'mount -a' verificada." } # Execução das funções make_and_mount_drive change_mysql automount echo ">>> Processo concluído!"Torne o script executável e execute-o:
chmod +x sql-move-and-update.sh sudo ./sql-move-and-update.sh
3. Parte 2: Importação de um Banco de Dados (Opcional)
Com o MySQL rodando a partir do disco externo, você pode importar um banco de dados.
Acesse o prompt do MySQL:
sudo mysql -u root -pCrie um banco de dados para receber os dados:
CREATE DATABASE nome_do_banco; EXIT; 3. Importe o arquivo `.sql`: bash sudo mysql -u root -p nome_do_banco < /caminho/para/seu/arquivo.sql 4. Verifique se as tabelas foram importadas: bash sudo mysql -u root -p sql USE nome_do_banco; SHOW TABLES; EXIT;
4. Parte 3: Transferindo o Disco para uma Nova VM
4.1. Procedimento no Portal Azure
Na VM de origem, vá em
Discose, na seçãoDiscos de Dados, localize e clique no ícone para Desanexar o disco.Na VM de destino, vá em
Discose clique emAnexar discos existentes. Selecione o disco que você acabou de desanexar.
4.2. Configuração na Nova VM
Conecte-se via SSH à nova VM e execute os seguintes comandos para montar o disco e reconfigurar o MySQL.
Instale o MySQL na nova VM, caso ainda não tenha:
sudo apt update && sudo apt install mysql-server -yPare o serviço do MySQL:
sudo systemctl stop mysqlRemova o diretório de dados local** (que está vazio):
sudo rm -rf /var/lib/mysqlMonte o disco externo:
sudo mkdir -p /mnt/external-disk sudo mount /dev/sdc /mnt/external-diskAtualize o arquivo de configuração** do MySQL para apontar para os dados no disco:
# Use o comando sed para alterar a linha 'datadir' sudo sed -i 's|^datadir.*|datadir = /mnt/external-disk/mysql|' /etc/mysql/mysql.conf.d/mysqld.cnfReinicie o MySQL e verifique o status:
sudo systemctl start mysql sudo systemctl status mysqlConfigure a montagem automática (fstab) na nova VM, repetindo o passo
automountdo script da Parte 1, se desejar.
5. Documentação Complementar
Atenção: Certifique-se de que a VM de origem está desligada ou que o serviço do MySQL está parado antes de desanexar o disco para evitar corrupção de dados.
Chave SSH: Lembre-se de definir as permissões corretas para sua chave privada:
chmod 600 sua-chave.pem.
Histórico De Versão
Last updated