Files
server/MIGRATION.md
2025-12-17 12:33:42 -03:00

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

  1. Acesso SSH ao servidor de produção.
  2. Permissões de sudo ou 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

  1. Certifique-se de que o arquivo .env está configurado corretamente com as novas variáveis seguras (caso tenha mudado).
  2. Garanta que o .env NÃ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