Backup
Esta documentação detalha métodos recomendados para realizar backup das bases de dados e dos volumes persistentes (PVC) da plataforma Aura. Cobre abordagens manuais e uso de ferramentas de backup, sem detalhar ou citar nomes de softwares específicos.
1. Backup de Bancos de Dados (PostgreSQL)
Existe apenas uma base de dados PostgreSQL por ambiente (Produção, Teste, Homologação, etc.), necessário para o funcionamento da plataforma Aura:
- Nome padrão: aura_blocks
1.1. Métodos de Backup do PostgreSQL
1.1.1. Backup Manual com pg_dump (linha de comando
O método mais comum e recomendado para backup lógico do PostgreSQL utiliza comandos nativos da ferramenta, geralmente executados a partir do pod ou da máquina onde está o banco.
Exemplo A: Dump direto do pod para o host local
kubectl exec -it <namespace>/<postgresdb-pod> -- pg_dump -U <db_user> <db_name> > ./backup.sqlEste comando executa o pg_dump diretamente dentro do pod e redireciona o resultado (backup.sql) para o seu host local, sem necessidade de copiar depois.
- Prós: Prático, evita etapas extras.
- Contras: O dump é transferido pela rede; em bancos muito grandes, avalie limitações de banda e possíveis timeouts do kubectl.
Exemplo B: Dump gravado no pod e copiado depois
kubectl exec -it <namespace>/<postgresdb-pod> -- bash -c "pg_dump -U <db_user> <db_name> > /tmp/backup.sql"
kubectl cp <namespace>/<postgresdb-pod>:/tmp/backup.sql ./backup.sqlUse este método se preferir salvar o dump no pod e copiar para o host em seguida.
1.1.2. Backup via Interface Gráfica
Se preferir interface gráfica, utilize ferramentas de administração de bancos de dados compatíveis com PostgreSQL, seguindo a documentação oficial dessas ferramentas.
1.1.3. Backup Avançado
Ferramentas especializadas podem ser utilizadas para automatizar, agendar e aprimorar backups em ambientes críticos ou com alto volume de dados, permitindo, por exemplo, backups incrementais, upload em nuvem, gerenciamento de retenção, entre outros recursos.
- Consulte a documentação das ferramentas de sua escolha para instalação, configuração e restore.
1.1.4. Backup do Volume do PostgreSQL (PVC)
Também é possível realizar backup do volume do banco utilizando métodos manuais (como cópia de arquivos) ou ferramentas de backup de volumes persistentes.
Importante: Para garantir a consistência do backup, recomenda-se pausar o banco ou executá-lo em modo de backup durante o processo.
1.2. Restauração
1.2.1. Restauração Manual
Importante: Antes de restaurar o backup, certifique-se de que a base de dados (<db_name>) já está criada no PostgreSQL. O comando psql não cria a base automaticamente durante a restauração.
# Exemplo: criando a base de dados se ainda não existir
kubectl exec -it <namespace>/<postgresdb-pod> -- psql -U <db_user> -c "CREATE DATABASE <db_name>;"Depois, prossiga com a restauração.
Exemplo A: Restauração a partir do host local direto do pod
cat ./backup.sql | kubectl exec -i <namespace>/<postgresdb-pod> -- psql -U <db_user> <db_name>Exemplo B: Copia o backup para o pod e depois é feita a restauração
kubectl cp ./backup.sql <namespace>/<postgresdb-pod>:/tmp/backup.sql
kubectl exec -it <postgresdb-pod> -- psql -U <db_user> -d <db_name> -f /tmp/backup.sql1.3. Boas Práticas
- Automatize backups periódicos em produção.
- Mantenha múltiplas cópias (offsite/nuvem/local).
- Sempre teste o restore em ambiente de homologação.
- Documente o processo de restauração.
1.4. Comparativo de Métodos
Método | Consistência | Automatizável | Offsite | Complexidade | Recuperação |
|---|---|---|---|---|---|
Comandos nativos | Sim | Sim | Sim | Baixa | Fácil |
Ferramentas especializadas | Sim | Sim | Sim | Média | Avançada |
Backup do volume (PVC) | Sim* | Sim | Sim | Média | Rápida |
*Consistência depende do banco estar pausado ou em modo de backup durante o procedimento.
2. Backup de Volumes Persistentes (PVC)
Os volumes persistentes (PVC) estão descritos nos manifestos do Kubernetes, geralmente no arquivo persistentvolumeclaim.yaml. Exemplo de PVC:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: storage
namespace: aura-blocks
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 50Gi
storageClassName: <storageClassName>A escolha do storageClassName impacta diretamente as opções de backup disponíveis.
2.1. Métodos de Backup de PVC
2.1.1. Backup Manual
Realize backup copiando arquivos diretamente do volume do pod para outro local seguro.
Exemplo A: Usando kubectl cp
kubectl cp <namespace>/<pod>:/caminho/dados ./backup-localSubstitua <namespace>, <pod> e o caminho do volume conforme sua aplicação.
Exemplo B: Usando container temporário + tar
kubectl run backup-job --rm -i -t --restart=Never \
--image=alpine \
--overrides='{"spec": {"volumes": [{"name": "data", "persistentVolumeClaim": {"claimName": "<nome-pvc>"}}], "containers": [{"name": "backup", "image": "alpine", "command": ["sh"], "stdin": true, "tty": true, "volumeMounts": [{"mountPath": "/caminho/dados", "name": "data"}]}]}}' -- \
shDentro do shell:
tar czvf /tmp/backup.tar.gz /caminho/dadosEm outro shell, copie o arquivo do pod:
kubectl cp <namespace>/backup-job:/tmp/backup.tar.gz ./backup.tar.gzDicas:
- Compacte arquivos grandes (tar, gzip).
- Faça backup regularmente e teste a restauração.
2.2. Comparativo dos Métodos
Método | Suporte a Volumes | Backup Offsite | Automação | Complexidade | Volume Grande |
|---|---|---|---|---|---|
Manual (cp, tar) | Sim | Sim | Baixa | Baixa | Médio |
Ferramentas de backup | Sim | Sim | Alta | Média/Alta | Ótimo |
3. Recomendações Finais
- Realize backup periódico dos dados críticos.
- Prefira automação para ambientes produtivos.
- Sempre teste a restauração!
- Documente o processo de restauração para cada método.
- Utilize múltiplas estratégias para resiliência máxima.