Skip to main content

Como fazer BACKUP e restauração do sistema completo e do banco de dados?

IMPORTANTE: Leia antes de começar

  • Este procedimento cria cópias de segurança do seu sistema Fokus
  • É necessário que você tenha conhecimento técnico para lidar com os procedimentos abaixo
  • Execute os backups semanalmente ou antes de qualquer atualização
  • Tempo estimado: 10 a 30 minutos
  • Em caso de dúvidas, contate o suporte Link Tecnologia
  • É necessário que seiga a risca todas as recomendações
  • A Link disponibiliza um serviço de backup automatizado para que este processo não precise ser feito manualmente. Para mais informaçoes consulte nossa equipe comercial.

ATENÇÃO: Para backup apenas do BANCO DE DADOS, execute somente o passo 2 deste manual.


.1 BACKUP DO SISTEMA LGS (Aplicação)

Passo 1: Entrar na pasta do LGS

cd ~/Dockers/lgs

Passo 2: Criar pasta para os backups

mkdir -p backups

Passo 3: Copiar o arquivo docker-compose.yml

cp docker-compose.yml backups/docker-compose.yml

Passo 4: Verificar o nome do container LGS

docker ps

Procure pelo container que tem "lgs" no nome. Exemplo: lgs-lgs-1

Passo 5: Salvar a imagem do container

docker commit lgs-lgs-1 linktecnologia/garagem:latest
docker save -o backups/lgs-backup-$(date +%Y%m%d).tar linktecnologia/garagem:latest

Passo 6: Verificar se os arquivos foram criados

ls -lh backups/

Você deve ver 2 arquivos: o .yml e o .tar


.2 BACKUP DO BANCO DE DADOS (PostgreSQL)

Passo 1: Entrar na pasta do PostgreSQL

cd ~/Dockers/postgres

Passo 2: Criar pasta para os backups

mkdir -p backups

Passo 3: Copiar o arquivo docker-compose.yml

cp docker-compose.yml backups/docker-compose.yml

Passo 4: Verificar o nome do container PostgreSQL

docker ps

Procure pelo container que tem "postgres" no nome. Exemplo: postgres-postgres-1

Passo 5: Fazer backup do banco de dados

docker exec -i postgres-postgres-1 pg_dump -U postgres -d lgs > backups/lgs-database-$(date +%Y%m%d).sql

Explicação de cada parte:

Parte do Comando O que faz Explicação
docker exec -i Executa um comando dentro do container -i mantém a entrada aberta para capturar os dados
postgres-postgres-1 Nome do container PostgreSQL Nome do seu container (veja com docker ps)
pg_dump Ferramenta de backup do PostgreSQL Exporta todo o conteúdo do banco de dados
-U postgres Usuário do banco de dados Usuário: postgres (usuário administrador padrão)
-d lgs Nome do banco de dados Banco: lgs (banco de dados do sistema Fokus)
> Redireciona a saída Salva o resultado em um arquivo
backups/lgs-database-$(date +%Y%m%d).sql Arquivo de destino Cria arquivo com a data atual (ex: lgs-database-20241202.sql)

IMPORTANTE: Ajuste conforme seu sistema

Se no seu sistema o usuário e banco são diferentes, ajuste o comando:

docker exec -i <NOME_DO_CONTAINER> pg_dump -U <USUARIO> -d <BANCO> > backups/backup-$(date +%Y%m%d).sql

Caso necessário, consulte o usuário e senha no arquivo 'docker-compose.yml, na pasta do LGS.

Passo 6: Verificar se os arquivos foram criados

ls -lh backups/

Você deve ver 2 arquivos: o .yml e o .sql


.3 RESUMO - O QUE FOI CRIADO

Após seguir todos os passos, você terá:

📁 ~/Dockers/lgs/backups/

  • docker-compose.yml (configuração do LGS)
  • lgs-backup-20241202.tar (imagem do sistema LGS)

📁 ~/Dockers/postgres/backups/

  • docker-compose.yml (configuração do PostgreSQL)
  • lgs-database-20241202.sql (banco de dados completo)

.4 VERIFICAR ESPAÇO EM DISCO

Antes de fazer backup, verifique se há espaço suficiente:

df -h

Recomendado: Manter pelo menos 50GB livres no disco


.5 RESTAURAÇÃO DO SISTEMA

ATENÇÃO: Só faça restauração se tiver conhecimento sobre docker e bancos de dados

PRÉ-REQUISITOS

Antes de começar, certifique-se que você tem:

  • Os arquivos de backup salvos (em pendrive, HD externo, nuvem, etc)
  • Docker e Docker Compose instalados na máquina nova

PASSO 1: PREPARAR O AMBIENTE

1.1. Criar a estrutura de pastas:

mkdir -p ~/Dockers/lgs
mkdir -p ~/Dockers/postgres

1.2. Copiar os arquivos de backup para a máquina:

  • Coloque a imagem do LGS dentro de: ~/Dockers/lgs, junto com seu 'docker-compose.yml'.
  • Coloque o backup do banco dentro de: ~/Dockers/postgres, junto com seu 'docker-compose.yml'.

1.3. Verificar se os arquivos foram copiados:

ls -lh ~/Dockers/lgs/
ls -lh ~/Dockers/postgres/

Você deve ver os arquivos .tar, .yml e .sql


PASSO 2: RESTAURAR O POSTGRESQL

2.1. Entrar na pasta do PostgreSQL:

cd ~/Dockers/postgres

2.3. Iniciar o PostgreSQL:

docker-compose up -d

2.4. Aguardar o PostgreSQL iniciar (cerca de 10 segundos).

2.5. Verificar o nome do container PostgreSQL:

docker ps | grep postgres

Anote o nome do container. Exemplo: postgres-postgres-1

2.6. Criar o banco de dados:

docker exec -it postgres-postgres-1 psql -U postgres -c "CREATE DATABASE lgs OWNER postgres;"
docker exec -it postgres-postgres-1 psql -U postgres -c "GRANT ALL ON SCHEMA public TO postgres;" lgs
docker exec -it postgres-postgres-1 psql -U postgres -c "ALTER SCHEMA public OWNER TO postgres;" lgs

IMPORTANTE: Aqui estamos criando o banco 'lgs' com owner user 'postgres' padrão. Caso queira criar um usuario diferente, altere a identificação.

Garanta que no 'docker-compose.yml do LGS, a variável DATABASE_URL esteja com mesmo usuário e senha criados aqui, para que o sistema se conecte corretamente ao DB.

2.7. Restaurar o backup do banco:

docker exec -i postgres-postgres-1 psql -U postgres -d lgs < lgs-database-20241202.sql

Ajuste o nome do arquivo para a data do seu backup

Este processo pode demorar alguns minutos dependendo do tamanho do banco

2.8. Verificar se o banco foi restaurado:

docker exec -it postgres-postgres-1 psql -U postgres -d lgs -c "\dt"

Você deve ver uma lista de tabelas do sistema Fokus


PASSO 3: RESTAURAR O SISTEMA LGS

3.1. Entrar na pasta do LGS:

cd ~/Dockers/lgs

3.2. Carregar a imagem Docker do backup:

docker load -i lgs-backup-20241202.tar

Ajuste o nome do arquivo para a data do seu backup

Este processo pode demorar alguns minutos

3.4. Verificar se a imagem foi carregada:

docker images | grep garagem

Você deve ver uma imagem com o nome linktecnologia/garagem e a data

3.5. Verifique o docker-compose.yml para usar a imagem

nano docker-compose.yml

Procure pela linha image: e garanta que esteja:

image: linktecnologia/garagem

Pressione CTRL+O para salvar e CTRL+X para sair

3.6. Verificar a conexão com PostgreSQL no docker-compose.yml:

Abra o arquivo:

nano docker-compose.yml

Certifique-se que a variável DATABASE_URL está apontando para o PostgreSQL:

environment:
  DATABASE_URL: "ecto://postgres:SENHA@postgres-postgres-1:5432/lgs"

Ajuste:

  • postgres → usuário do banco
  • SENHA → senha do banco
  • postgres-postgres-1 → nome do container PostgreSQL
  • lgs → nome do banco

Pressione CTRL+O para salvar e CTRL+X para sair

3.7. Iniciar o sistema LGS:

docker-compose up -d

PASSO 4: VERIFICAÇÕES FINAIS

4.1. Verificar se todos os containers estão rodando:

docker ps
```
Você deve ver:
- Container PostgreSQL (status: Up)
- Container LGS (status: Up)

### **4.2. Testar acesso ao sistema:**

Abra o navegador e acesse:
```
http://IP_DA_MAQUINA:4000
```
ou
```
http://localhost:4000

IMPORTANTE: Mantenha definido o mesmo IP da máquina servidor anterior.

Caso tenha alterado o IP, altere-o nas variáveis PHX_HOST_I e PHX_HOST_E do 'docker-compose.yml' do LGS

4.3. Verificar conectividade dos terminais:

Acesse o sistema Fokus e verifique:

  • Terminais de entrada conectados
  • Terminais de saída conectados
  • Caixas conectados
  • ATMs conectados

PROBLEMAS COMUNS NA RESTAURAÇÃO

Problema 1: "Connection refused" ao restaurar banco

Causa: PostgreSQL ainda não terminou de iniciar

# Aguarde 30 segundos e tente novamente
sleep 30
docker exec -i postgres-postgres-1 psql -U postgres -d lgs < lgs-database-20241202.sql

Problema 2: "permission denied for schema public"

Causa: Permissões do usuário não foram configuradas

docker exec -it postgres-postgres-1 psql -U postgres lgs

Dentro do PostgreSQL:

GRANT ALL ON SCHEMA public TO postgres;
ALTER SCHEMA public OWNER TO postgres;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO postgres;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO postgres;
\q

Problema 3: LGS não conecta no PostgreSQL

Causa: Nome do container ou credenciais incorretas

Solução:

  1. Verifique o nome do container PostgreSQL:
docker ps | grep postgres
  1. Edite o docker-compose.yml do LGS:
cd ~/Dockers/lgs
nano docker-compose.yml
  1. Ajuste a linha DATABASE_URL com os dados corretos

Problema 4: "docker: command not found"

Causa: Docker não está instalado

Solução: Instale o Docker:

# Ubuntu/Debian
sudo apt update
sudo apt install docker.io docker-compose -y
sudo usermod -aG docker $USER
# Reinicie a sessão (logout/login)