Backup y restauración

La base de datos guarda todo lo importante del negocio (usuarios, ventas, jornadas, premios). Es imprescindible mantener copias de seguridad.

1. Cuándo respaldar

2. Copia de seguridad (pg_dump)

En el servidor de producción (con permiso de la base de datos) ejecutar:

pg_dump "postgresql://loto_app:TU_CLAVE@localhost:5432/lotodb" \
  --file=backup-loto-$(date +%Y%m%d-%H%M).sql

O en formato comprimido (más ligera):

pg_dump "postgresql://loto_app:TU_CLAVE@localhost:5432/lotodb" \
  -Fc -f backup-loto-$(date +%Y%m%d-%H%M).dump

3. Restauración

# 1) Crear (o vaciar) la base de datos de destino
createdb -h localhost -U loto_app lotodb

# 2) Restaurar desde el archivo
pg_restore -d "postgresql://loto_app:TU_CLAVE@localhost:5432/lotodb" backup-loto-20260101-0900.dump

En una restauración de emergencia la aplicación debe estar detenida durante el proceso para evitar escrituras concurrentes.

4. Verificación de la copia

5. Script de sincronización de datos (desarrollo)

El repositorio incluye scripts/sync-from-prod.ts, que descarga la base de producción a una base local de desarrollo (solo lectura hacia producción; nunca escribe en el servidor). Se usa para:

Uso:

npx tsx scripts/sync-from-prod.ts

Este es solo para desarrollo local, no constituye la copia de seguridad de producción (lea 06-doc adjunto: docs/sincronizacion-bd.md para una explicación completa del proceso).

6. Qué NO debe respaldarse