Saltar al contenido

Backups

Cómo restaurar un backup de Supabase, y qué se rompe después

Cómo restaurar un backup de Supabase desde el panel o desde un archivo de volcado, qué reemplaza la restauración y por qué tu app puede seguir rota al terminar.

Vlad Tkachenko11 min de lectura
Una copia guardada que se abre hacia una base de datos, con sus filas llegando una tras otra y llenando el hueco vacío de abajo.

En resumen

  • Para restaurar un backup de Supabase o retrocedes el proyecto desde el panel, o reproduces un archivo de volcado en un proyecto con psql. Cuál de los dos tienes disponible se decidió antes de hoy.
  • Copia la base de datos tal como está ahora antes de restaurar nada. Una restauración reemplaza las tablas que hay en la copia, así que se va con ellas cada fila escrita desde entonces.
  • El desenlace habitual es una restauración que funciona y una app que sigue rota, porque tus archivos subidos y tus cuentas de acceso nunca estuvieron en la copia de la base.

Algo va mal en tu base de datos y, por una vez, tienes una copia. Ahora estás mirando un botón que no has pulsado nunca, en un proyecto con usuarios reales dentro, tratando de averiguar qué está a punto de hacerles.

Esta es la parte que guía tras guía se salta. Casi todos los artículos sobre cómo restaurar un backup de Supabase terminan en el momento en que acaba la restauración, y ahí es donde empiezan casi todos los problemas. El desenlace habitual no es una restauración que falla. Es una que funciona y deja la app rota igualmente, porque una copia de la base nunca contuvo más que la base.

Ayuda dejar de imaginar esto como recuperar tus datos. Una restauración cambia tu base de datos por una más antigua, más parecido a sustituir un archivador entero que a devolver una carpeta a su sitio. Todo lo que sigue se deduce de ahí.

¿Cómo restauro un backup de Supabase?

Tres caminos, y cuál de ellos tienes abierto hoy se decidió antes de hoy.

CaminoQué haceQué necesita
El panel de SupabaseReemplaza la base de ese proyecto por una copia nocturna con fecha que tú eligesUn plan de pago, y que la copia siga dentro de tu ventana
Point-in-time recoveryRetrocede el proyecto entero al minuto que indiquesEl complemento PITR, contratado antes de aquello de lo que te estás recuperando
Un archivo de volcado, reproducido con psqlCarga el archivo en el proyecto al que apuntes, incluidos los recién creadosEl archivo, y la contraseña de base de datos del proyecto de destino

Los dos primeros dejan tus datos donde ya estaban. El tercero es el único que puede ponerlos en otro sitio, que es lo que necesitas el día en que el problema es tu cuenta y no tus datos.

Si no tienes claro cuál de estos tienes, el plan de Supabase que tengas decide los dos primeros y comprobarlo lleva unos dos minutos.

Copia lo que tienes ahora, antes de restaurar nada

Toma primero una copia de la base en su estado roto actual. Es un solo comando, y es lo que hace reversible cada decisión posterior.

pg_dump "postgresql://…tu cadena de conexión…" \
  --clean --if-exists --no-owner \
  --file before-restore-2026-08-24.sql

Hay dos razones, y la segunda la suele aprender la gente después.

La primera es que una restauración es un reemplazo. Las tablas de la copia vuelven exactamente como estaban, así que se va con ellas cada fila escrita desde entonces. Un cliente que se registró esta mañana es una fila que estás a punto de borrar a propósito.

La segunda es que tu base rota sigue siendo el único sitio donde existen algunos de tus datos. Si la copia es del martes y el daño ocurrió el jueves, todo lo creado el miércoles está delante de ti ahora mismo y en ningún otro sitio. Restaura encima y desaparece por segunda vez, esta vez de tu mano y no por el accidente.

Mientras trabajas, apaga todo lo que escriba filas nuevas. El razonamiento es el mismo que tras cualquier borrado accidental: el hueco entre la copia y ahora se encarece cuanto más tiempo lo siga llenando la app.

Restaurar desde el panel de Supabase

Esto reemplaza la base de tu proyecto por la copia que elijas, y el proyecto no está disponible mientras dura.

Abre el proyecto con el que habla tu app, ve a Database y luego Backups, y elige la copia con fecha que quieras. Los pasos exactos léelos en la documentación de backups de Supabase, porque el panel se reorganiza y esta página no se enterará cuando pase.

Cuánto tarda depende del tamaño de tu base, que es la respuesta de Supabase. Pon un aviso de mantenimiento antes de empezar.

Point-in-time recovery es la misma operación con un dial más fino. En lugar de elegir anoche, indicas un minuto y el proyecto retrocede hasta ahí. Supabase lo describe como destructivo, que es la palabra correcta. Sus notas de soporte añaden que una restauración point-in-time no puede arrancar hasta que se eliminen las suscripciones y las ranuras de replicación existentes, así que si algo en tu app recibe cambios de la base a medida que ocurren, ese es un paso previo en vez de un error a mitad de camino.

Ninguno de los dos caminos puede llevar tus datos a otro proyecto. Los dos actúan sobre el proyecto en el que estás, lo que significa que ninguno está disponible el día en que lo que falla es tu acceso a la cuenta.

Restaurar un archivo de volcado con psql

Apuntas psql a un proyecto y reproduces el archivo dentro. Ese proyecto puede ser el que tenías, o uno recién creado en una cuenta que abriste esta mañana.

psql -d "postgresql://…cadena de conexión del proyecto destino…" \
  --variable ON_ERROR_STOP=1 \
  --single-transaction \
  --file backup-2026-08-09.sql

Dos de esas opciones conviene entenderlas, porque el comportamiento por defecto de psql es el sorprendente.

ON_ERROR_STOP=1 se detiene en el primer error. Sin ella, psql lee el error, lo imprime y sigue con la línea siguiente, así que un archivo que falló en la línea 400 de 30.000 acaba igualmente en un prompt con aspecto de éxito, sobre una base a la que le falta todo lo posterior a esa línea. --single-transaction envuelve el archivo entero en una sola operación, de modo que un fallo deja la base como estaba en lugar de a medias.

Luego las credenciales, que es donde se atasca mucha gente. Reproducir un backup es escribir, así que hace falta algo que pueda escribir. Una clave anon no sirve, y una de solo lectura tampoco. Lo que psql quiere es la contraseña de base de datos del proyecto de destino, que está en los ajustes de tu proyecto de Supabase, en Database.

Lo que vuelve depende de lo que haya en el archivo, y eso quedó decidido cuando se tomó el volcado. Tus cuentas de acceso son la parte que conviene revisar antes de fiarte. Viven en un esquema llamado auth junto a las contraseñas cifradas, y Supabase documenta moverlas entre proyectos como un trabajo con sus propios pasos. Si vas a restaurar en un proyecto nuevo y quieres que la gente entre con la contraseña que ya tiene, lee esa página antes de empezar.

Y un proyecto nuevo tiene una URL nueva y claves nuevas. Tu app sigue apuntando al antiguo hasta que lo cambies, que es la primera línea de la sección siguiente.

Restauró, y la app sigue rota

Este es el desenlace normal. Casi siempre es una de cinco cosas, y la primera cuesta un minuto.

Una restauración aterriza en el esquema donde viven tus tablas. Tus archivos subidos están fuera de él y nunca estuvieron en la copia, y que vuelvan tus cuentas de acceso depende de cómo se tomó esa copia.
Qué vesQué ha pasado en realidadQué hacer
La app carga y todas las listas están vacíasSigue hablando con el proyecto antiguoPon la URL y la clave publicable del proyecto nuevo en los ajustes de tu app y vuelve a desplegar
Las imágenes, avatares y subidas han desaparecidoLos archivos viven en Storage, fuera de la base. Las filas restauradas solo guardan la ruta de cada archivoRestaura tus archivos desde su propia copia. Ninguna copia de la base los contiene, por ningún camino
Nadie puede iniciar sesiónLas cuentas de acceso viven en el esquema auth, y si estaban en el archivo depende de cómo se tomó el volcadoSigue la guía de migración de auth de Supabase, o vuelve a restaurar desde una copia que incluya ese esquema
Las páginas se leen bien y guardar algo fallaLa base volvió legible y no escribibleCrea una fila desde la app antes de darlo por hecho. El párrafo de abajo tiene el detalle
Una función está rota y su tabla está bienLas edge functions viven en tu repositorio, fuera de la baseVuelve a desplegarlas desde tu builder o tu repo

La cuarta merece la atención. El permiso de lectura y el de escritura se conceden por separado, y una restauración puede acertar uno y fallar el otro. Así que las páginas se llenan con tus datos, todo parece recuperado, y entonces la primera persona que envía un formulario recibe un error. Mirar la app no te lo enseñará nunca, porque mirar es leer.

Cómo saber si la restauración funcionó de verdad

Inicia sesión, encuentra una fila que puedas nombrar y luego escribe una. En ese orden, y la última es la comprobación que cuenta.

Los dos van a la misma base restaurada, y las filas están visiblemente ahí en ambos casos. Solo el segundo averigua si la restauración llegó a terminar.
  • Inicia sesión desde la app como lo haría un usuario, en vez de abrir el editor de tablas de Supabase. Eso prueba la app, la conexión y las cuentas de acceso de una vez.
  • Encuentra una fila que recuerdes. Un pedido concreto, un cliente con nombre, lo último que añadiste antes de que se rompiera. "Los datos parecen estar ahí" es una sensación; una fila que puedes nombrar es una comprobación.
  • Compara un recuento con lo que esperabas. Abre tu tabla más grande en el editor de Supabase y lee el número de filas. Una restauración que se paró a medias suele aparecer aquí como un número más pequeño de la cuenta.
  • Y entonces escribe algo. Crea una fila como lo hace un usuario: haz un pedido de prueba, guarda un perfil, publica un comentario. Esta es la comprobación que falla cuando las otras tres pasan, y lo único que demuestra que la restauración terminó.
  • Abre algo que haya subido un usuario. Si tu app tiene imágenes o adjuntos, haz clic en uno. Que hayan vuelto tus archivos es una pregunta aparte de si han vuelto tus filas.

Qué hacer ahora mismo

Qué hacer

  • Copia la base tal como está ahora, antes de restaurar nada. Es un pg_dump, y es lo que hace reversible la decisión siguiente.
  • Apaga todo lo que escriba filas nuevas mientras trabajas, porque una restauración borra lo que llegó después de tomarse la copia.
  • Ajusta el camino al problema. Una restauración del panel arregla tus datos; solo un archivo de volcado reproducido con psql puede llevarlos a un proyecto nuevo.
  • Si usas psql, pon ON_ERROR_STOP=1. Una restauración que se rindió a medias en silencio tiene exactamente el mismo aspecto que una que funcionó.
  • Comprueba la restauración escribiendo, no leyendo. Inicia sesión, encuentra una fila que puedas nombrar y luego crea una desde la app.
  • Trata tus archivos subidos y tus cuentas de acceso como trabajos aparte. Ninguno de los dos termina cuando termina la base de datos.

Antes de cerrar esta pestaña, averigua si tienes siquiera algo desde lo que restaurar, y dónde está. Esa única respuesta decide qué mitad de este artículo vas a necesitar alguna vez. La lista de seguridad de 10 minutos lo cubre junto con lo demás que conviene confirmar en una app recién lanzada, y la guía de seguridad de Supabase repasa qué se suele dejar abierto.

Qué hace Reeve Care el día que restauras

La copia ya existe, ya se ha vuelto a leer y comprobar, y está fuera de tu cuenta de Supabase. Eso convierte la hora de arriba en una decisión sobre qué copia, y un botón.

Cuatro cosas que cambia sobre este artículo en concreto.

La copia está verificada antes de que la necesites. Cada backup se lee de vuelta y se cuenta contra lo que entró, y la fecha que ves en tu panel es la de la última copia que pasó la comprobación, no la del último intento. La restauración a medias contra la que avisa este artículo es un problema que encontramos una tarde cualquiera, antes de que sea tuyo.

La copia de seguridad previa no es un paso que tengas que recordar. Pulsar restaurar toma antes una copia fresca del estado actual, de modo que la propia restauración se puede deshacer.

Tus archivos subidos también vuelven, en cuanto conectas tus buckets de Storage. Esa es la fila de la tabla de arriba que si no no tiene buena respuesta.

La clave de base de datos que guardamos solo puede leer. Una restauración tiene que escribir, así que pide tu contraseña de base de datos cada vez y no guarda ninguna. La clave opcional para tus archivos sí puede escribir, porque Supabase no emite una de solo lectura para Storage, y la página donde la entregas lo dice antes de que lo hagas.

Los límites van en la misma frase, porque conviene conocerlos antes de pagar y no durante una caída:

  • Funciona con Supabase y hoy con nada más.
  • Restauras a una copia que existe, no a cualquier minuto que digas. En el peor caso pierdes un intervalo, que es hasta una noche en el plan de entrada y menos en los dos de arriba.
  • Las cuentas de acceso no se tocan nunca. Nadie sale de su sesión, ni se borra, ni vuelve.

Deja tus backups de Supabase encendidos igualmente. Dos copias en dos sitios es la idea entera, y la más barata de las dos ya está en tu plan. Qué cubre cada plan de Care está en la página de inicio.

Si prefieres no pagar por nada de esto, todo lo de este artículo sigue funcionando. Un pg_dump con una periodicidad que cumplas de verdad, guardado en un sitio que perder tu cuenta de Supabase no se lleve por delante, más una restauración de práctica al trimestre, te lleva casi todo el camino. Los tres caminos y qué se deja cada uno lo cuenta sin argumento de venta.

El ciclo completo está dibujado paso a paso en la página de backups de Supabase: la copia saliendo de Supabase, la comprobación que la sigue y el botón que la devuelve.

Preguntas frecuentes

¿Cómo restauro un backup de Supabase?

Hay tres caminos. Desde el panel eliges una copia nocturna con fecha y Supabase reemplaza con ella la base de ese proyecto, lo que requiere un plan de pago. Point-in-time recovery retrocede el proyecto entero al minuto que indiques, y requiere el complemento PITR contratado de antemano. O reproduces tú mismo un archivo de volcado con psql, que es el único camino capaz de llevar tus datos a otro proyecto en otra cuenta. Antes de cualquiera de ellos, copia la base tal como está ahora.

¿Restaurar un backup borra los datos añadidos desde que se tomó?

Sí. Una restauración es un reemplazo y no una fusión: las tablas de la copia vuelven exactamente como estaban en ese momento, y todo lo que se escribió después desaparece. Eso incluye filas que estaban perfectamente bien. Por eso conviene impedir que tu app escriba antes de empezar, y por eso conviene guardar una copia del estado actual, para poder volver a poner encima las filas buenas más recientes si luego decides que las quieres.

La restauración terminó pero faltan las imágenes de mi app. ¿Por qué?

Porque tus archivos nunca estuvieron en el backup. Supabase Storage vive fuera de tu base Postgres, así que una copia de la base contiene la fila que apunta a cada archivo y ninguno de los archivos. Restaurar te deja una tabla llena de enlaces a cosas que ya no están, o que están en un proyecto que ya no usas. Storage hay que copiarlo y restaurarlo aparte, sea cual sea el camino de backup que hayas tomado.

¿Puedo restaurar un backup de Supabase en un proyecto distinto?

Solo con un archivo de volcado que tengas tú. La restauración del panel y point-in-time recovery actúan las dos sobre el proyecto en el que estás, así que ninguna sirve el día en que el problema es que no puedes entrar en la cuenta. Un archivo pg_dump reproducido con psql entra en el proyecto al que apuntes, incluido uno recién creado en una cuenta nueva. Esa es la diferencia el día que importa.

¿Mis usuarios tendrán que registrarse otra vez después de una restauración?

Depende de si tus cuentas de acceso estaban en la copia. Viven en un esquema de la base llamado auth, junto con las contraseñas cifradas, y Supabase documenta moverlas entre proyectos como un trabajo con sus propios pasos y no como algo que viaja junto a tus tablas. Si vas a restaurar en un proyecto nuevo, lee esa guía antes de empezar. Una restauración dentro del mismo proyecto suele dejar el acceso intacto.

¿Cuánto tarda una restauración en Supabase?

Supabase dice que depende del tamaño de tu base y de cuántos datos haya que procesar, que es la respuesta honesta y no la que ayuda mientras esperas. Da por hecho que el proyecto estará caído todo ese rato y pon un aviso de mantenimiento antes de empezar. Sus notas de soporte añaden que una restauración point-in-time no puede arrancar hasta que se eliminen las suscripciones y las ranuras de replicación existentes, así que revisa eso primero si algo en tu app recibe cambios de la base en directo.

Escrito por

Vlad Tkachenko

Fundador de Reeve

Me paso el día mirando apps creadas con Lovable, Bolt, v0, Cursor y Replit, y la corta lista de errores que aparecen en ellas una y otra vez.

Más sobre el autor

Sigue leyendo

¿No sabes cómo está tu propia app?

Haz un escaneo gratuito y obtén una nota clara de la A a la F en unos 20 segundos. Sin cuenta y sin tarjeta.

Analizar mi app gratis

Comprobación externa automatizada, no una auditoría completa. La ausencia de hallazgos no es garantía de seguridad.