Tipos de backup no PostgreSQL: completo, incremental, diferencial
Imagina que seu banco de dados é tipo um mega arquivo de biblioteca com milhares de livros. Backup completo é como mandar um motoboy toda noite pra copiar todos os livros. Mas e se quase nada mudou? Isso não só é lento, mas também pesa no transporte e ocupa muito espaço. É aí que entram os backups incrementais e diferenciais. A gente trabalha de forma mais esperta, copiando só o que realmente mudou.
Hoje vamos ver esses tipos de backup:
- Backup completo: cópia total do banco de dados.
- Backup incremental: copia só as mudanças desde o último backup.
- Backup diferencial: copia as mudanças desde o último backup completo.
Cada um desses jeitos tem seus prós, contras e usos. Bora entender melhor.
Backup completo
Backup completo (ou Full Backup) é uma cópia de segurança de todo o banco de dados em um momento específico. Ele guarda tanto a estrutura do banco (tabelas, índices, schemas) quanto todos os dados. Resumindo, é um "snapshot" de tudo.
Exemplo de comando pra backup completo:
pg_dump -U username -d database_name -F c -f full_backup.dump
Aqui:
-U username— nome do usuário do PostgreSQL.-d database_name— nome do banco de dados.-F c— formato do backup (custom, bom pra restaurar compg_restore).-f full_backup.dump— nome do arquivo onde vai ficar o backup.
Mais detalhes sobre o comando pg_dump e seus parâmetros você vai ver nas próximas aulas :P
Vantagens do backup completo:
- Fácil de restaurar. Se der ruim, o backup completo te salva rapidinho restaurando tudo.
- Snapshot total dos dados. Dá pra usar pra migrar o banco pra outro servidor ou ambiente.
Desvantagens do backup completo:
- Tamanho dos dados: backup completo pode ficar gigante, principalmente se você tem muito dado.
- Demora pra rodar: quanto mais dados, mais tempo pra fazer a cópia.
- Espaço de armazenamento: cada backup completo ocupa espaço separado, pode acabar com o storage rapidinho.
Quando usar backup completo:
- Na hora de fazer o primeiro backup.
- Antes de fazer mudanças grandes no banco.
- Pra arquivar por muito tempo (faz o backup completo e manda pro "freezer").
Backups incrementais
Backup incremental (Incremental Backup) salva só os arquivos que mudaram desde o último backup — seja ele completo ou incremental. Isso economiza espaço em disco e acelera o processo de backup.
No PostgreSQL, backups incrementais podem ser feitos com a ferramenta pgBackRest — uma utilidade poderosa pra criar e gerenciar backups do PostgreSQL, suportando estratégias completas, incrementais e diferenciais.
Como funciona o pgBackRest?
pgBackRestusa metadados e checksums dos arquivos pra ver o que mudou.- Só os arquivos realmente alterados entram no backup incremental.
- Tem suporte pra arquivamento automático dos arquivos WAL, então dá pra restaurar até um ponto exato no tempo.
Exemplo de comando pra backup incremental:
pgbackrest --stanza=main --type=incr backup
Onde:
--stanza=main— nome da configuração (conjunto de parâmetros pra um banco específico).--type=incr— indica que é backup incremental.
Antes do primeiro backup incremental, tem que fazer um completo (--type=full).
Vantagens dos incrementais com pgBackRest:
- Economia de espaço: só copia arquivos alterados.
- Rápido pra rodar: principalmente se mudou pouca coisa.
- Gerenciamento automático de WAL: o pgBackRest cuida do arquivamento e aplicação dos arquivos WAL.
- Flexibilidade na restauração: dá pra escolher o ponto de restauração (PITR).
Desvantagens e detalhes:
- Precisa configurar antes: tem que setar o
stanza, diretório do repositório, permissões, etc. - Pode ser complicado pra quem tá começando: precisa entender WAL e a arquitetura do PostgreSQL.
- Depende do repositório: todos os backups ficam centralizados — tem que cuidar bem do storage.
Quando usar backups incrementais:
- Se o banco de dados muda bastante.
- Quando o backup completo fica pesado ou demora demais.
- Se você quer uma estratégia de restauração confiável e automática gastando pouco recurso.
Backups diferenciais
Backup diferencial (Differential Backup) salva todas as mudanças que rolaram desde o último backup completo. A diferença pro incremental é que cada backup diferencial tem o pacote completo de mudanças desde o último completo. Então, pra restaurar, só precisa do último backup completo e do último diferencial.
Exemplo do processo:
- Primeira noite: faz backup completo (A).
- Segunda noite (B): faz backup diferencial — guarda mudanças desde A.
- Terceira noite (C): faz backup diferencial — também guarda mudanças desde A.
Vantagens:
- Fácil de restaurar: Pra restaurar, só precisa do backup completo e do último diferencial.
- Mais rápido que completo: Backup diferencial é mais rápido que completo, porque só copia as mudanças.
Desvantagens:
- Tamanho do arquivo de backup: Cada novo backup diferencial vai ficando maior, já que guarda todas as mudanças desde o completo.
- Espaço em disco: No longo prazo, pode precisar de mais espaço do que os incrementais.
Backup diferencial é útil quando você quer facilitar a restauração: ele guarda tudo que mudou desde o último backup completo. Isso é ótimo se os dados mudam bastante, mas fazer backup completo toda hora é pesado demais. Nessas situações, o diferencial é um bom meio-termo entre velocidade e segurança.
Comparando os tipos de backup
| Tipo de backup | Completo | Incremental | Diferencial |
|---|---|---|---|
| Tamanho dos dados | Máximo | Mínimo | Médio |
| Tempo pra rodar | Lento | Rápido | Moderado |
| Restauração | Fácil | Complicada (depende de todos os backups) | Média (precisa do último completo e diferencial) |
| Quando usar | Primeira cópia, migrações | Backups frequentes em tempo real | Backup regular |
A escolha do tipo de backup depende do quanto você precisa de segurança, da frequência das mudanças e dos recursos disponíveis. Pra bancos pequenos, backup completo regular resolve. Se o banco cresce, os incrementais ajudam a economizar espaço. E se você quer restaurar rapidinho, os diferenciais podem ser a melhor opção. O mais importante é não esquecer de fazer backup sempre e automatizar o processo!
GO TO FULL VERSION