Saltar a contenido

Cómo restaurar un backup de producción en una app de desarrollo (Heroku)

Esta guía explica cómo tomar un backup de la base de datos de producción y restaurarlo en una aplicación de desarrollo usando la CLI de Heroku. El objetivo es contar con datos reales en desarrollo de forma controlada, sin correr el riesgo de afectar la base de datos equivocada.

El sentido del flujo importa

El backup sale de producción y entra en desarrollo. Nunca al revés. Restaurar sobre la base de datos equivocada sobrescribe los datos existentes de forma irreversible. Verifica el nombre exacto de cada app antes de ejecutar cualquier comando.

Requisitos previos

  • La CLI de Heroku instalada y con sesión iniciada (heroku login).
  • Permisos sobre ambas aplicaciones: la de producción (origen) y la de desarrollo (destino).
  • Nombres exactos de las apps. En esta guía se usan como ejemplo:
    • Producción (origen): legalys-platform-prod
    • Desarrollo (destino): legalys-platform-dev

Video del procedimiento

Referencia en video

El procedimiento completo está en el reproductor de arriba, o puedes abrirlo directamente en Loom. Cada paso enlaza al minuto correspondiente.

Pasos

1. Generar un backup en producción — 0:41

Captura del backup de producción

  1. Confirma el nombre exacto de la app de producción (origen), por ejemplo legalys-platform-prod.
  2. Genera un backup nuevo:

    heroku pg:backups:capture --app legalys-platform-prod
    
  3. Al terminar, el comando devuelve el ID del backup (por ejemplo, b427). Anótalo: lo usarás en los siguientes pasos.

2. Listar los backups disponibles — 1:44

Listado de backups

Consulta los backups existentes de la app de producción (incluye los automáticos):

heroku pg:backups --app legalys-platform-prod

Identifica el backup que quieres restaurar —normalmente el más reciente, por ejemplo b427.

3. Obtener la URL de descarga del backup — 2:33

URL del backup

Genera una URL temporal y segura al dump del backup:

heroku pg:backups:url b427 --app legalys-platform-prod

No copies la URL a mano

La URL caduca en poco tiempo. En lugar de copiarla, encadénala directamente dentro del comando de restauración (ver paso 4). Así evitas errores y que la URL expire.

4. Restaurar el backup en la app de desarrollo — 3:19

Preparación de la restauración

Restaura hacia la app de desarrollo (destino), apuntando a la variable de entorno correcta (normalmente DATABASE_URL). Encadena la URL del paso 3 para no copiarla manualmente:

heroku pg:backups:restore \
  "$(heroku pg:backups:url b427 --app legalys-platform-prod)" \
  DATABASE_URL --app legalys-platform-dev

Revisa el destino

Confirma que --app apunta a la app de desarrollo (legalys-platform-dev) y no a producción. Este comando sobrescribe la base de datos destino.

5. Confirmar la ejecución — 4:09

Confirmación de la restauración

  • Heroku pedirá confirmación (escribir el nombre de la app destino). Complétala y presiona Enter para iniciar la restauración.
  • Para hacerlo en una sola línea sin el diálogo interactivo, añade la bandera de confirmación:

    heroku pg:backups:restore \
      "$(heroku pg:backups:url b427 --app legalys-platform-prod)" \
      DATABASE_URL --app legalys-platform-dev \
      --confirm legalys-platform-dev
    

6. Verificar que la restauración terminó bien — 5:08

Verificación de la restauración

  • Espera a que el proceso termine (unos segundos o minutos según el tamaño de la base de datos).
  • Verifica que no haya errores en la salida del comando.
  • Confirma que la base de datos de desarrollo ya contiene los datos esperados (por ejemplo, entrando a la app o consultando algunas tablas).

Notas importantes

  • No confundas origen y destino: el backup sale de producción y se restaura en desarrollo.
  • Verifica el nombre exacto de cada app antes de ejecutar cualquier comando.
  • La restauración sobrescribe la base de datos destino: cuidado con la instancia objetivo.
  • La URL del backup es temporal; úsala dentro del mismo flujo de restauración.
  • Confirma siempre antes de ejecutar un comando que modifica datos existentes.

Consejos de eficiencia

  • Encadena los comandos ($(...)) para no copiar la URL a mano.
  • Mantén una convención de nombres clara para distinguir prod, staging y dev.
  • Si el proceso se repite con frecuencia, considera automatizarlo (script o integración continua).
  • Registra qué backup se restauró (por ejemplo, b427) para auditoría y seguimiento.
  • Antes de restaurar, valida que el backup sea el correcto para evitar retrabajo.