H-03 — Backup Postgres: Preview O que precisa ser feito: Cri...
👤 User
H-03 — Backup Postgres: Preview
O que precisa ser feito: Criar um script de backup agendado do banco kodama_hub (container kodama-hub-postgres, imagem pgvector/pgvector:pg16, porta interna 5432, dados em ./api/pgdata/).
O que backup
Container DB: kodama-hub-postgres, banco kodama_hub, user kodama.
Volume: ./api/pgdata — mas NUNCA backup de volume cru sem parar o container (corrompe). Usar pg_dump.
Credenciais: POSTGRES_PASSWORD via .env no VPS (gitignored).
Como fazer (melhor abordagem)
Dois arquivos no repo, no diretório scripts/:
scripts/backup.sh — script executado dentro do container:
#!/bin/bash
BACKUPDIR="/home/kodama-hub/backups"
TIMESTAMP=$(date +"%Y%m%d%H%M%S")
mkdir -p "$BACKUP_DIR"
docker exec kodama-hub-postgres pg_dump
-U kodama -d kodama_hub
--no-owner --no-acl -Fc
"$BACKUPDIR/kodama-hub${TIMESTAMP}.dump"
Limpa backups com mais de 7 dias
find "$BACKUPDIR" -name "kodama-hub.dump" -mtime +7 -delete
echo "[$(date)] Backup OK: kodama-hub_${TIMESTAMP}.dump"
infra/cron/kodama-hub-backup — crontab (no VPS):
0 3 * * /home/kodama-hub/scripts/backup.sh >> /var/log/kodama-hub-backup.log 2>&1
Restore testado
Script de restore (ou checklist):
Restaurar (dry-run primeiro):
docker exec -i kodama-hub-postgres pg_restore
-U kodama -d kodama_hub
--clean --if-exists
< /home/kodama-hub/backups/kodama-hub_20260620_030000.dump
Health check pós-restore
docker exec kodama-hub-postgres psql -U kodama -d kodama_hub -c "SELECT count(*) FROM information_schema.tables WHERE table_schema='public';"
Resumo do que criar/modificar
Arquivo Ação
scripts/backup.sh Criar — script de dump + retenção 7d
infra/cron/kodama-hub-backup Criar — entry pro crontab
scripts/restore-test.sh Criar (opcional) — docs de restore
README.md ou infra/README.md Atualizar — instrução de setup do cron
VPS /etc/crontab ou crontab -e Manual — adicionar entry
Bônus: envio pro MinIO/S3
Se quiser resiliência extra (VPS pegar fogo), o backup pode ser enviado pro bucket MinIO do vault:
após pg_dump, enviar pro MinIO:
curl -X PUT -T "$BACKUPDIR/kodama-hub${TIMESTAMP}.dump"
"https://mimic-cdn.kodama.solutions/kodama-hub/backups/kodama-hub_$%7BTIMESTAMP%7D.dump"
Pronto quando
Cron de dump rodando → backup na pasta /home/kodama-hub/backups/ com data
Retenção 7 dias → backups antigos somem
Restore validado → rodou pg_restore contra cópia sem erro
analise o contexto dessa prev e me diga quais dos agents que temos na kodamahub seriam os melhores para utilizar nessa task e me retorne um prompt para passar pra ele