gorkula.com
Trasladar una base de datos PostgreSQL de Heroku a Fly.io
Exportar una base de datos en Heroku es fácil y se puede hacer siguiendo las instrucciones de su documentación:

Para preparar una copia basta con ejecutar el siguiente comando:
$ heroku pg:backups:capture --app <app-name>

Para descargarla, ejecuta este otro comando:
$ heroku pg:backups:download --app <app-name>

Este último comando descargará un fichero llamado latest.dump que será el que usaré para importar a Fly.io

Crear y enlazar una base de datos PostgreSQL en Fly.io


La documentación de Fly.io es fácil de seguir y tiene un apartado dedicado a Postgres.

Crea una nueva base de datos con el comando:
$ flyctl postgres create

Te preguntará varias cosas como el nombre de la app (yo la suelo llamar <app-name>-db), la región, y el tipo de dyno que quieres usar.

Al terminar mostrará en consola los datos de acceso. Guárdalos porque no los podrás volver a ver y te harán falta para cualquier cosa.

Para enlazar la base de datos a una aplicación usa el comando:
$ flyctl postgres attach --app <app-name> <postgres-app-name>

Esto creará una variable de entorno DATABASE_URL en la app a la que hayas enlazado la base de datos. Asegúrate que no existe ya. De otro modo dará error.

Una vez las aplicaciones están enlazadas ya solo queda importar la base de datos. Hay que hacer un par de cosas aquí. Seguramente hay otras formas de hacerlo pero esta ha sido la que me ha parecido más fácil y lógica.

Para poder ejecutar directamente el comando pg_restore en la app de Fly crea primero un proxy en el puerto 5432:
$ flyctl proxy 5432 -a <postgres-app-name>

Con el comando pg_restore importa los datos de Heroku a la nueva base de datos especificada con el flag -d. Aquí es donde entra en juego el proxy creado anteriormente.
$ pg_restore --verbose --clean --no-acl --no-owner -d postgres://postgres:<password>@localhost:5432/<database> latest.dump

En la consola aparecerán un montón de errores pero al final todo funciona correctamente. O debería.
14 Sep - Un comentario -

Comentarios

Deja un comentario