PITR e backups
O DIVZ mantém o WAL contínuo e permite restaurar o banco em qualquer instante dentro da janela do seu plano — de 3 dias no gratuito a 30 dias no Business. Além disso, todo projeto recebe um dump lógico diário cifrado.
Duas camadas diferentes
Elas resolvem problemas distintos e não se substituem:
| PITR | Dump lógico diário | |
|---|---|---|
| O que é | restaurar o banco em qualquer instante da janela | um arquivo .sql.gz cifrado, uma vez por dia |
| Granularidade | o segundo | o dia |
| Serve para | desfazer um erro recente (DELETE sem WHERE, migração ruim) | desastre, auditoria, levar os dados embora |
| Onde vive | no próprio storage engine | servidor + Hetzner Storage Box, cifrado com age |
| Como acionar | console ou POST /api/v1/pitr | abrir um chamado no suporte |
Janela por plano
| Plano | Janela de PITR |
|---|---|
| Explorar | 3 dias |
| Starter | 7 dias |
| Pro | 14 dias |
| Business | 30 dias |
Dentro dessa janela qualquer instante é alcançável, não apenas os horários de um snapshot. Isso é possível porque o WAL — o registro de tudo que o Postgres escreve — é preservado de forma contínua, e não descartado depois de aplicado.
Como restaurar
A restauração não sobrescreve o banco atual. Ela cria um branch novo com o estado daquele instante, e você decide o que fazer com ele: comparar, extrair as linhas perdidas ou promover.
curl -X POST https://api.divz.com.br/api/v1/pitr \
-H "Authorization: Bearer divz_..." \
-H "Content-Type: application/json" \
-d '{
"projectId": "<id>",
"timestamp": "2026-09-08T02:15:00-03:00",
"branchName": "antes-do-delete"
}'O timestamp aceita ISO 8601 com fuso. O branch resultante recebe o sufixo -restored e vem com connection string própria.
Restaurar para um branch em vez de por cima é deliberado: no minuto seguinte a um acidente ninguém tem certeza do horário exato do erro. Errar o instante e sobrescrever a produção transformaria um problema recuperável em perda definitiva.
Recuperando de um acidente
- Pare de escrever no banco se puder. Cada escrita nova depois do erro complica a reconciliação.
- Estime o instante alguns minutos antes do comando errado. É mais barato restaurar cedo demais e comparar do que tarde demais e perder o rastro.
- Restaure para um branch e conecte nele.
- Traga só o que falta. Na maioria dos casos é um
INSERT ... SELECTde uma tabela do branch para a produção — não uma troca de banco inteiro.
O dump diário
Independente do PITR, todo projeto ativo recebe um pg_dump por dia, comprimido e cifrado com age antes de sair do servidor. As cópias vão para a Hetzner Storage Box. Como o dump é cifrado com chave pública, quem tiver acesso ao armazenamento não consegue ler o conteúdo.
Precisa de uma cópia dos seus dados para levar embora? Abra um chamado no suporte pedindo o dump do projeto — os dados são seus.
Próximo: API REST