Aqui na nossa empresa de TI, o backup em nuvem do PostgreSQL em um de nossos clientes estava levando 25 horas por dia. Era uma rotina com pg_dump que funcionou por anos, mas com a base de dados dobrando de tamanho, era hora de mudar a estratégia.
Mudança de Estratégia
Saiu-se do pg_dump (backup lógico) e foi para pg_basebackup (backup físico do cluster). Em vez de serializar objetos por objeto, ele lê os arquivos físicos do disco de forma sequencial, muito mais eficiente em bases grandes.
Ferramentas Utilizadas
- pg_basebackup: Para realizar o backup físico do cluster.
- LZ4: Para compressão, com ZSTD como alternativa.
- AES-256: Para criptografia.
- Offsite Nuvem: Para armazenamento.
Resultados
Com a mudança de estratégia, conseguimos reduzir o tempo de backup de 25 horas para 2 horas e 28 minutos, incluindo compressão, criptografia e envio para nuvem.
Comentários e Alternativas
- Backup com WAL-G: Possibilita um backup granular até minutos de precisão, sem incremento gigantesco no espaço.
- pgBackRest: Oferece armazenamento e gerenciamento do WAL, além de funcionalidades interessantes para ambientes maiores.
- Criptografia Simétrica vs Assimétrica: O uso de criptografia assimétrica é preferido por alguns, pois permite que a chave de encriptação seja acessível apenas para o criador.
Conclusão
A otimização do backup PostgreSQL de 25 horas para menos de 3 horas foi possível através de uma mudança de estratégia e a utilização de ferramentas adequadas. Com a crescente demanda por eficiência e segurança, é importante manter-se atualizado com as melhores práticas e tecnologias disponíveis no mercado.