Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save pogermano/e552015b98c99ddddbbae935a2fbf4b3 to your computer and use it in GitHub Desktop.

Select an option

Save pogermano/e552015b98c99ddddbbae935a2fbf4b3 to your computer and use it in GitHub Desktop.
Backup e Restauração do PostgreSQL no Docker

Backup e Restauração do PostgreSQL no Docker

Este documento apresenta os passos para realizar o backup e a restauração de um banco de dados PostgreSQL rodando em um container Docker. Também inclui soluções para problemas comuns.


1. Verificar se o PostgreSQL está rodando

Antes de iniciar o backup, verifique se o PostgreSQL está ativo dentro do container:

# Substitua <container_id> pelo ID ou nome do container

docker exec -it <container_id> pg_isready -U postgres

Se o resultado for algo como:

/var/run/postgresql:5432 - accepting connections

O banco está funcionando corretamente.

Caso o banco não esteja rodando, reinicie o container:

docker restart <container_id>

2. Realizar o Backup

Opção 1: Gerar o backup diretamente no host (Pode falhar!)

docker exec -it <container_id> pg_dumpall -U postgres > backup_full.sql

Problema comum: O arquivo backup_full.sql pode ficar com 0 bytes.

Alternativa 1: Gerar o backup dentro do container

docker exec -it <container_id> bash
pg_dumpall -U postgres > /backup_full.sql
exit

Agora, copie o backup para sua máquina local:

docker cp <container_id>:/backup_full.sql ./backup_full.sql

Verifique se o arquivo tem conteúdo:

ls -lh backup_full.sql
cat backup_full.sql | head -n 20

Se o arquivo estiver com 0 bytes, tente refazer o processo garantindo que o PostgreSQL esteja rodando corretamente.


3. Restaurar o Backup

Antes de restaurar, garanta que o banco de dados está vazio ou exclua os dados antigos:

docker exec -it <container_id> psql -U postgres -c "DROP DATABASE IF EXISTS nome_do_banco;"
docker exec -it <container_id> psql -U postgres -c "CREATE DATABASE nome_do_banco;"

Agora, restaure o backup:

docker exec -i <container_id> psql -U postgres -d nome_do_banco < backup_full.sql

Caso o PostgreSQL esteja recusando conexão, verifique as configurações de autenticação no arquivo pg_hba.conf e postgresql.conf.


4. Solução para Problemas Comuns

Erro: "PostgreSQL Database directory appears to contain a database; Skipping initialization"

Isso ocorre se você está tentando rodar uma versão diferente do PostgreSQL sem migrar os dados corretamente. Solução:

mv /var/lib/postgresql/data /var/lib/postgresql/data_old
mkdir /var/lib/postgresql/data
chown -R postgres:postgres /var/lib/postgresql/data

Depois, inicialize o banco novamente e importe os dados do backup.

Erro: "database files are incompatible with server"

O banco de dados foi criado em uma versão diferente. Para corrigir, você precisa restaurar o backup em um PostgreSQL da mesma versão original, depois fazer um dump e importar na nova versão.


Este guia deve ajudar a garantir um backup e restauração bem-sucedidos. 🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment