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.
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 postgresSe 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>docker exec -it <container_id> pg_dumpall -U postgres > backup_full.sqlProblema comum: O arquivo backup_full.sql pode ficar com 0 bytes.
docker exec -it <container_id> bash
pg_dumpall -U postgres > /backup_full.sql
exitAgora, copie o backup para sua máquina local:
docker cp <container_id>:/backup_full.sql ./backup_full.sqlVerifique se o arquivo tem conteúdo:
ls -lh backup_full.sql
cat backup_full.sql | head -n 20Se o arquivo estiver com 0 bytes, tente refazer o processo garantindo que o PostgreSQL esteja rodando corretamente.
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.sqlCaso o PostgreSQL esteja recusando conexão, verifique as configurações de autenticação no arquivo pg_hba.conf e postgresql.conf.
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/dataDepois, inicialize o banco novamente e importe os dados do backup.
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. 🚀