Mudanças entre as edições de "Backup PostgreSQL Grande Porte"

De VRWiki
 
Linha 1: Linha 1:
 
= Backups de Bancos PostgreSQL (Grande Porte) =
 
= Backups de Bancos PostgreSQL (Grande Porte) =
  
Este documento descreve estratégias comuns para realizar **backup de bancos de dados PostgreSQL de grande porte**, abordando vantagens, desvantagens e boas práticas. O foco é minimizar impacto em produção, garantir consistência dos dados e facilitar a recuperação em caso de desastre.
+
Este documento descreve estratégias comuns para realizar <b>backup de bancos de dados PostgreSQL de grande porte</b>, abordando vantagens, desvantagens e boas práticas. O foco é minimizar impacto em produção, garantir consistência dos dados e facilitar a recuperação em caso de desastre.
  
  
 
== Objetivos de um bom backup ==
 
== Objetivos de um bom backup ==
  
* Garantir **recuperação de dados** em caso de falha, erro humano ou ataque
+
* Garantir <b>recuperação de dados</b> em caso de falha, erro humano ou ataque
* Minimizar **impacto no banco principal (produção)**
+
* Minimizar <b>impacto no banco principal (produção)</b>
* Possibilitar **restauração parcial ou total**
+
* Possibilitar <b>restauração parcial ou total</b>
* Manter cópias **fora do servidor de origem**
+
* Manter cópias <b>fora do servidor de origem</b>
  
  
 
== 1. Backup lógico via replicação (pg_dump em réplica) ==
 
== 1. Backup lógico via replicação (pg_dump em réplica) ==
  
Nesta abordagem, utiliza-se uma **réplica de leitura** (streaming replication) para executar o backup lógico com `pg_dump`, evitando carga adicional no banco principal.
+
Nesta abordagem, utiliza-se uma <b>réplica de leitura</b> (streaming replication) para executar o backup lógico com `pg_dump`, evitando carga adicional no banco principal.
  
 
=== Funcionamento ===
 
=== Funcionamento ===
  
 
* Banco primário replica dados continuamente para um ou mais nós secundários
 
* Banco primário replica dados continuamente para um ou mais nós secundários
* O `pg_dump` é executado **no banco replicado**
+
* O `pg_dump` é executado <b>no banco replicado</b>
 
* O backup é gerado em formato lógico (custom format)
 
* O backup é gerado em formato lógico (custom format)
  
Linha 44: Linha 44:
 
== 2. Backup físico da pasta de dados (data directory) ==
 
== 2. Backup físico da pasta de dados (data directory) ==
  
O backup físico consiste em copiar diretamente o **diretório de dados do PostgreSQL** (`PGDATA`).
+
O backup físico consiste em copiar diretamente o <b>diretório de dados do PostgreSQL</b> (`PGDATA`).
  
 
=== Abordagem tradicional ===
 
=== Abordagem tradicional ===
Linha 60: Linha 60:
 
=== Desvantagens ===
 
=== Desvantagens ===
  
* Necessita **parada do banco** (downtime)
+
* Necessita <b>parada do banco</b> (downtime)
 
* Risco operacional se scripts não forem bem controlados
 
* Risco operacional se scripts não forem bem controlados
 
* Pouca flexibilidade para restaurações parciais
 
* Pouca flexibilidade para restaurações parciais
Linha 66: Linha 66:
 
=== Alternativas mais seguras ===
 
=== Alternativas mais seguras ===
  
* `pg_basebackup`: permite backup físico **sem parar o banco**
+
* `pg_basebackup`: permite backup físico <b>sem parar o banco</b>
* Uso de WALs para **PITR (Point-In-Time Recovery)**
+
* Uso de WALs para <b>PITR (Point-In-Time Recovery)</b>
  
 
=== Boas práticas ===
 
=== Boas práticas ===
Linha 99: Linha 99:
 
=== Observações ===
 
=== Observações ===
  
* Verificar se a solução é **application-aware** para PostgreSQL
+
* Verificar se a solução é <b>application-aware</b> para PostgreSQL
 
* Garantir suporte a WAL e restauração consistente
 
* Garantir suporte a WAL e restauração consistente
  
Linha 105: Linha 105:
 
== 4. RAID ==
 
== 4. RAID ==
  
RAID **não é backup**, mas pode fazer parte da estratégia de disponibilidade.
+
RAID <b>não é backup</b>, mas pode fazer parte da estratégia de disponibilidade.
  
 
=== O que o RAID oferece ===
 
=== O que o RAID oferece ===
Linha 123: Linha 123:
 
=== Conclusão ===
 
=== Conclusão ===
  
RAID deve ser visto apenas como **camada de alta disponibilidade**, nunca como substituto de backup.
+
RAID deve ser visto apenas como <b>camada de alta disponibilidade</b>, nunca como substituto de backup.
  
  
Linha 130: Linha 130:
 
Mesmo com backups configurados, é fundamental:
 
Mesmo com backups configurados, é fundamental:
  
* Manter cópias **fora do servidor de origem**
+
* Manter cópias <b>fora do servidor de origem</b>
 
* Utilizar outro datacenter, storage remoto ou cloud (VRBackup)
 
* Utilizar outro datacenter, storage remoto ou cloud (VRBackup)
 
* Implementar política de retenção (diário, semanal, mensal)
 
* Implementar política de retenção (diário, semanal, mensal)

Edição atual tal como às 13h25min de 13 de janeiro de 2026

Backups de Bancos PostgreSQL (Grande Porte)

Este documento descreve estratégias comuns para realizar backup de bancos de dados PostgreSQL de grande porte, abordando vantagens, desvantagens e boas práticas. O foco é minimizar impacto em produção, garantir consistência dos dados e facilitar a recuperação em caso de desastre.


Objetivos de um bom backup

  • Garantir recuperação de dados em caso de falha, erro humano ou ataque
  • Minimizar impacto no banco principal (produção)
  • Possibilitar restauração parcial ou total
  • Manter cópias fora do servidor de origem


1. Backup lógico via replicação (pg_dump em réplica)

Nesta abordagem, utiliza-se uma réplica de leitura (streaming replication) para executar o backup lógico com `pg_dump`, evitando carga adicional no banco principal.

Funcionamento

  • Banco primário replica dados continuamente para um ou mais nós secundários
  • O `pg_dump` é executado no banco replicado
  • O backup é gerado em formato lógico (custom format)

Vantagens

  • Não impacta significativamente o banco de produção
  • Permite backup por banco
  • Não exige parada do banco

Desvantagens

  • Processo pode ser lento para bancos muito grandes
  • Consome CPU, memória e I/O do servidor réplica
  • Não preserva estatísticas internas e configurações físicas
  • Restauração pode ser demorada

Boas práticas

  • Utilizar formato `custom` (`pg_dump -Fc`) para permitir paralelismo na restauração
  • Garantir que a réplica esteja sincronizada
  • Automatizar via cron ou ferramentas de orquestração


2. Backup físico da pasta de dados (data directory)

O backup físico consiste em copiar diretamente o diretório de dados do PostgreSQL (`PGDATA`).

Abordagem tradicional

  • Parar o serviço PostgreSQL
  • Copiar o diretório de dados via script (`rsync`, `tar`, etc.)
  • Reiniciar o serviço

Vantagens

  • Backup rápido, especialmente para bancos muito grandes
  • Preserva estrutura física, índices e estatísticas
  • Restauração geralmente mais rápida

Desvantagens

  • Necessita parada do banco (downtime)
  • Risco operacional se scripts não forem bem controlados
  • Pouca flexibilidade para restaurações parciais

Alternativas mais seguras

  • `pg_basebackup`: permite backup físico sem parar o banco
  • Uso de WALs para PITR (Point-In-Time Recovery)

Boas práticas

  • Sempre validar consistência após restore
  • Testar restauração regularmente


3. Soluções de backup de mercado (ex: Veeam Backup)

Ferramentas comerciais oferecem integração com PostgreSQL e infraestrutura.

Características

  • Interface gráfica e gerenciamento centralizado
  • Automação de políticas de retenção
  • Integração com snapshots de storage e virtualização

Vantagens

  • Reduz complexidade operacional
  • Suporte técnico através do fornecedor da ferramenta
  • Integração com ambientes VMware, Hyper-V e cloud

Desvantagens

  • Custo de licenciamento
  • Dependência de fornecedor
  • Menor controle sobre detalhes internos do backup

Observações

  • Verificar se a solução é application-aware para PostgreSQL
  • Garantir suporte a WAL e restauração consistente


4. RAID

RAID não é backup, mas pode fazer parte da estratégia de disponibilidade.

O que o RAID oferece

  • Redundância de discos
  • Proteção contra falha física de hardware
  • Melhor desempenho de leitura/escrita (dependendo do nível)

Limitações

  • Não protege contra:
 * Exclusão acidental de dados
 * Corrupção lógica
 * Ataques (ex: ransomware)
  • Erros são replicados imediatamente

Conclusão

RAID deve ser visto apenas como camada de alta disponibilidade, nunca como substituto de backup.


Observação importante: backups fora da máquina

Mesmo com backups configurados, é fundamental:

  • Manter cópias fora do servidor de origem
  • Utilizar outro datacenter, storage remoto ou cloud (VRBackup)
  • Implementar política de retenção (diário, semanal, mensal)


Informações adicionais e boas práticas gerais

  • Documentar claramente o processo de backup e restore
  • Monitorar falhas de backup
  • Testar restores periodicamente (disaster recovery test)
  • Utilizar compressão e paralelismo quando possível


Estratégia recomendada

Uma estratégia robusta geralmente combina:

  • Replicação + `pg_dump` para restores lógicos
  • Backup físico (`pg_basebackup` + WAL) para recuperação rápida
  • Cópia externa (offsite)
  • RAID para resiliência de hardware


Backups só são confiáveis quando a restauração foi testada com sucesso.