Uma equipe de tecnologia da informação optou por utilizar o PostgreSQL para gerenciar um novo sistema de gestão de documentos. O responsável pela administração do sistema precisa garantir a alta disponibilidade e a integridade dos dados, além de otimizar o desempenho das operações de leitura e escrita. Uma das tarefas mais críticas é o planejamento e a execução de backups e a manutenção da performance. Considerando as boas práticas e as funcionalidades nativas do PostgreSQL, a estratégia de administração mais adequada para aplicar no ambiente é
Aconfigurar a replicação síncrona entre o banco de dados primário e o standby para garantir que não haja perda de dados, o que torna o sistema de backup desnecessário.
Brealizar backups físicos completos usando a ferramenta pg_basebackup em um servidor em modo de replicação assíncrona e, para garantir a recuperação pontual (point-in-time recovery), manter o WAL (Write-Ahead Log) continuamente arquivado.
Crealizar backups exclusivamente lógicos com a ferramenta pg_dump, pois eles são mais rápidos e garantem a recuperação completa de todo o banco de dados em caso de falha de hardware.
Ddesativar o mecanismo de WAL (Write-Ahead Log) para evitar o consumo de espaço em disco e o overhead de escrita, já que os backups periódicos são suficientes para a recuperação de dados.
Eutilizar a ferramenta VACUUM FULL diariamente para compactar as tabelas e remover a fragmentação, pois essa é a única forma de garantir a saúde e o bom desempenho do banco de dados a longo prazo.
Revelar gabarito e comentário▾
GabaritoB — realizar backups físicos completos usando a ferramenta pg_basebackup em um servidor em modo de replicação assíncrona e, para garantir a recuperação pontual (point-in-time recovery), manter o WAL (Write-Ahead Log) continuamente arquivado.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
PostgreSQL: backup físico, WAL e point-in-time recovery
Gabarito: letra B. A estratégia mais adequada combina backup físico completo com pg_basebackup em servidor de replicação assíncrona e arquivamento contínuo do WAL (Write-Ahead Log), o que permite a recuperação pontual (point-in-time recovery). Essa é a prática recomendada pela documentação oficial do PostgreSQL para garantir alta disponibilidade e integridade dos dados.
O PostgreSQL é um SGBD objeto-relacional de código aberto, amplamente utilizado por sua robustez e conformidade com padrões. Para garantir a disponibilidade e a recuperação de dados, o administrador precisa entender dois conceitos fundamentais: o WAL e os tipos de backup.
O WAL (Write-Ahead Log) é o mecanismo de log de transações do PostgreSQL. Antes de qualquer alteração ser gravada nos arquivos de dados, ela é registrada no WAL. Isso garante a durabilidade das transações (propriedade ACID) e permite a recuperação do banco em caso de falha. O WAL é essencial para a recuperação pontual: ao restaurar um backup físico e aplicar os arquivos WAL arquivados, é possível reconstruir o banco até um instante específico no tempo, minimizando a perda de dados.
Existem dois tipos principais de backup no PostgreSQL:
Backup físico (nível de arquivo): copia os arquivos de dados do cluster, incluindo o WAL. É a base para a recuperação pontual e para a configuração de replicação. A ferramenta pg_basebackup é a forma recomendada de realizar esse tipo de backup, pois produz uma cópia consistente do cluster.
Backup lógico (nível de banco): exporta os dados em formato SQL ou outro formato legível, usando ferramentas como pg_dump e pg_dumpall. É útil para migrações, backups de tabelas específicas ou bancos pequenos, mas não captura o estado completo do cluster (como roles, tablespaces e o WAL) e não é adequado para recuperação pontual em larga escala.
A replicação é outra técnica de alta disponibilidade. No PostgreSQL, a replicação pode ser síncrona ou assíncrona. Na replicação síncrona, o servidor primário aguarda a confirmação do servidor standby antes de confirmar a transação, garantindo zero perda de dados, mas com impacto no desempenho. Na assíncrona, o primário não aguarda, o que melhora o desempenho, mas pode haver perda de dados em caso de falha. A replicação não substitui o backup: ela protege contra falhas de hardware do servidor primário, mas não contra erros lógicos (como um DELETE sem WHERE) ou corrupção de dados propagada para o standby.
A manutenção de desempenho também é crucial. O comando VACUUM é usado para limpar versões antigas de linhas (devido ao MVCC) e atualizar estatísticas. O VACUUM FULL reescreve a tabela para eliminar a fragmentação, mas bloqueia a tabela durante a operação, causando indisponibilidade. Por isso, não deve ser executado diariamente em tabelas grandes; o VACUUM comum (sem FULL) é suficiente para a manutenção rotineira, e o VACUUM FULL deve ser usado com moderação, em janelas de manutenção.
A banca explora a confusão entre backup físico e lógico, entre replicação e backup, e entre VACUUM e VACUUM FULL. A alternativa correta é a que combina as práticas recomendadas: backup físico com pg_basebackup, replicação assíncrona (para não impactar o desempenho) e arquivamento contínuo do WAL para permitir a recuperação pontual.
Backup PostgreSQL
1Tipos
Físico (pg_basebackup)
Copia arquivos do cluster
Base para PITR
Lógico (pg_dump)
Exporta dados/SQL
Não captura WAL/roles
2WAL (Write-Ahead Log)
Durabilidade (ACID)
Arquivamento contínuo
Permite point-in-time recovery
3Replicação
Síncrona
Zero perda
Impacta desempenho
Assíncrona
Melhor desempenho
Pode perder dados
4Manutenção
VACUUM (rotineiro)
VACUUM FULL (bloqueia tabela)
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
A replicação síncrona garante que não haja perda de dados em caso de falha do servidor primário, mas não torna o backup desnecessário. A replicação protege contra falhas de hardware, mas não contra erros lógicos, corrupção de dados ou desastres que afetem ambos os servidores. O backup é essencial para a recuperação em cenários que a replicação não cobre. Além disso, a replicação síncrona pode impactar o desempenho, pois o primário aguarda a confirmação do standby.
Alternativa B — ✅ Correta ⟵ GABARITO
Esta é a estratégia mais adequada. O pg_basebackup realiza um backup físico completo do cluster, que é a base para a recuperação. A replicação assíncrona é uma escolha equilibrada, pois não impacta o desempenho das operações de escrita no primário. O arquivamento contínuo do WAL permite a recuperação pontual (point-in-time recovery), ou seja, é possível restaurar o banco até um instante específico, minimizando a perda de dados. Essa combinação é amplamente recomendada pela documentação oficial do PostgreSQL para garantir alta disponibilidade e integridade.
Alternativa C — ❌ Incorreta
Backups exclusivamente lógicos com pg_dumpnão garantem a recuperação completa do banco em caso de falha de hardware. O pg_dump exporta dados e esquema, mas não captura o estado completo do cluster, como roles, tablespaces, e o WAL. Além disso, a restauração de um backup lógico é mais lenta e não permite recuperação pontual. Para falhas de hardware, o backup físico é o mais adequado.
Alternativa D — ❌ Incorreta
Desativar o WAL é inviável e perigoso. O WAL é essencial para a durabilidade das transações e para a recuperação do banco. Sem ele, qualquer falha pode corromper os dados. Além disso, o WAL é necessário para a replicação e para a recuperação pontual. O espaço em disco e o overhead de escrita são gerenciáveis e justificáveis pela segurança que o WAL proporciona.
Alternativa E — ❌ Incorreta
O VACUUM FULLnão deve ser executado diariamente. Ele bloqueia a tabela durante a operação, causando indisponibilidade, e é mais lento que o VACUUM comum. Para a manutenção rotineira, o VACUUM comum (ou o autovacuum) é suficiente. O VACUUM FULL deve ser usado apenas em situações específicas, como após grandes exclusões, e em janelas de manutenção.
NÃO CAIA NESSA!
A banca tenta confundir o candidato ao apresentar a replicação síncrona como substituta do backup (alternativa A) e o VACUUM FULL como manutenção diária (alternativa E). Lembre-se: replicação não é backup, e VACUUM FULL é uma operação pesada que bloqueia a tabela.
PEGA ESSA DICA!
Para questões sobre backup no PostgreSQL, lembre-se da tríade: backup físico + WAL arquivado + recuperação pontual. Essa é a combinação que garante a recuperação mais completa. O pg_dump é para backups lógicos, e o VACUUM FULL é para manutenção pesada, não rotineira.