2.6 KiB
Guia de Migração para Produção
Este guia descreve o procedimento seguro para atualizar o ambiente de produção para a nova arquitetura de persistência local, garantindo que nenhum dado seja perdido.
Pré-requisitos
- Acesso SSH ao servidor de produção.
- Permissões de
sudoou docker.
Procedimento Passo-a-Passo
1. Preparação e Backup
Antes de atualizar qualquer código, faça o backup do banco de dados atual (que está rodando no volume Docker antigo).
Se você já baixou o novo Makefile, pode usar o comando abaixo. Caso contrário, copie o Makefile para o servidor ou execute o comando manual.
Opção A: Usando Makefile (Recomendado)
make backup
Isso criará um arquivo .sql na pasta backups/.
Opção B: Manual
mkdir -p backups
docker exec dnsblock-db mysqldump -u root -p<SUA_SENHA_ATUAL> --all-databases > backups/backup_pre_migration.sql
2. Atualização do Código
Baixe a versão mais recente do código que contém a nova configuração do docker-compose.yml (com volume ./mysql_data) e o .env seguro.
git pull origin main
# Ou copie os arquivos manualmente se não usar git
3. Configuração do Ambiente
- Certifique-se de que o arquivo
.envestá configurado corretamente com as novas variáveis seguras (caso tenha mudado). - Garanta que o
.envNÃO está versionado no git.
4. Reinicialização dos Serviços
Agora vamos trocar a infraestrutura. Ao rodar este comando, o container do banco será recriado apontando para a nova pasta ./mysql_data (que estará vazia inicialmente).
make down
make up
Ou docker-compose down && docker-compose up -d
5. Restauração dos Dados
Agora que o banco novo está vazio, vamos importar o backup que fizemos no Passo 1.
Identifique o nome do arquivo gerado em backups/ (ex: backups/backup_20241217_100000.sql).
make restore FILE=backups/backup_YYYYMMDD_HHMMSS.sql
Manual:
docker exec -i dnsblock-db mysql -u root -p<NOVA_SENHA_ENV> < backups/backup_pre_migration.sql
6. Verificação
Verifique se os dados foram restaurados corretamente acessando a aplicação ou consultando o banco:
# Verifica se o cliente "IPv0 Soluções" está correto
docker exec -i dnsblock-db mysql -u root -p<NOVA_SENHA_ENV> dnsblock -e "SELECT name FROM clients WHERE id=1;"
7. Limpeza (Opcional)
Após confirmar que tudo está funcionando, você pode listar e remover o volume antigo do Docker, se desejar liberar espaço.
docker volume ls
# Remova o volume 'dnsblock_dbdata' se ele existir e não for mais usado
# docker volume rm dnsblock_dbdata