---
title: "Mueve tu PostgreSQL de Zeabur a Zenavo: restaura la copia de seguridad y comprueba los datos"
description: "Sube y restaura directamente en Zenavo una copia de seguridad de PostgreSQL exportada desde Zeabur, entiende cómo se gestionan las versiones, los roles y los volcados pg_dumpall y verifica tus tablas antes de cambiar el tráfico."
date: 2026-11-10
language: es-ES
url: https://zenavo.app/es-ES/blog/migrate-zeabur-postgresql
---

# Mueve tu PostgreSQL de Zeabur a Zenavo: restaura la copia de seguridad y comprueba los datos

Al mudarte desde Zeabur, los servicios de tu aplicación se recrean de un paso importando la plantilla, mientras que los datos de la base de datos se traen mediante una copia de seguridad.

La buena noticia es que Zenavo acepta directamente el archivo de copia de seguridad de PostgreSQL que descargas de Zeabur, sin tener que descomprimirlo en tu ordenador ni retocar el SQL a mano. En esta guía vemos cómo restaurar esa copia de PostgreSQL en Zenavo, comprobar los datos y cambiar la aplicación. Para el proceso completo del proyecto, léela junto con nuestra [guía de migración desde Zeabur](https://zenavo.app/es-ES/blog/migrate-from-zeabur).

## 1. Descarga la copia de seguridad en Zeabur

Descarga una copia desde tu servicio PostgreSQL en Zeabur y apunta dos datos:

- **La versión mayor de PostgreSQL** (por ejemplo, 15, 16 o 17);
- **El nombre de la base de datos que usa tu aplicación**.

El archivo que descarga Zeabur suele ser un `.zip` (aunque el nombre termine en `.sql.gz`, por fuera suele ser un ZIP) con un volcado de clúster generado por `pg_dumpall`. **Deja el archivo descargado tal cual**: Zenavo acepta directamente tanto los `.zip` de Zeabur como archivos `.sql` y `.sql.gz` normales.

## 2. Crea en Zenavo una base de datos vacía de la misma versión

En el proyecto de destino en Zenavo, haz clic en **Añadir servicio → Base de datos → PostgreSQL**, elige **la misma versión mayor que tenías en Zeabur** y despliega.

Ten en cuenta tres cosas:

- **Mantén la misma versión mayor**: Zenavo impide restaurar un volcado de clúster de una versión superior (como PG 18) en una inferior (como PG 17). Haz primero la mudanza en la misma versión y actualiza más adelante si lo necesitas.
- **Deja vacía la base de datos de destino**: no arranques antes una aplicación que cree tablas automáticamente al iniciar. Si ya hay tablas creadas, la restauración del volcado fallará porque la base de datos no está vacía.
- **Comprueba las extensiones**: si tu base de datos usa extensiones como PostGIS o `pgvector`, confirma que están disponibles en la imagen de destino.

## 3. Sube la copia de seguridad y restáurala

Abre la pestaña **Copias de seguridad y restauración (Backup & Restore)** del nuevo servicio PostgreSQL, sube el archivo descargado de Zeabur en el paso 1 y lanza la restauración.

Como la copia de Zeabur es un volcado de clúster de `pg_dumpall`, Zenavo hace automáticamente estas conversiones al restaurar (ver [Subir una copia de seguridad](https://docs.zenavo.app/es-ES/operations/backups#uploading-a-backup)):

- Restaura el contenido de la base de datos de tu aplicación en la base de datos del servicio actual;
- Crea los roles que utilice la copia, conservando sus contraseñas y las políticas de seguridad a nivel de fila (RLS);
- Por seguridad, rebaja el antiguo superusuario `root` de Zeabur a un rol **sin permisos de superusuario y sin inicio de sesión**, manteniendo intacta la propiedad de sus tablas y objetos;
- Omite automáticamente las bases de datos del sistema `template1` y `postgres`.

> Si un volcado de clúster contiene varias bases de datos de aplicación distintas, Zenavo pedirá separarlas antes. La gran mayoría de proyectos de Zeabur tienen una sola base de datos y se restauran directamente.

Si la restauración falla a medias (por ejemplo, por una extensión que falta), una vez resuelto el motivo conviene borrar ese servicio PostgreSQL a medio restaurar y crear uno limpio antes de volver a intentarlo.

## 4. Comprueba las tablas y el número de filas

Cuando termine la restauración, abre la **[Vista de base de datos (Database View)](https://docs.zenavo.app/es-ES/deploy/databases#database-view)** del servicio PostgreSQL para ejecutar consultas SQL de solo lectura desde el propio navegador.

Comprueba primero que están todas las tablas de tu aplicación:

```sql
SELECT table_schema, table_name
FROM information_schema.tables
WHERE table_type = 'BASE TABLE'
  AND table_schema NOT IN ('pg_catalog', 'information_schema')
ORDER BY table_schema, table_name;
```

Después elige algunas tablas clave (como usuarios o pedidos) y compara con Zeabur el recuento exacto de filas y la fecha del último registro:

```sql
SELECT count(*) AS row_count, max(created_at) AS latest_created_at
FROM public.orders;
```

(Usa `count(*)` en lugar de las estimaciones estadísticas del sistema para obtener la cifra exacta.)

## 5. Conecta la aplicación y haz el cambio

En el servicio de tu aplicación dentro del mismo proyecto, apunta la variable de conexión al nuevo servicio PostgreSQL (cuando el servicio se llama `postgresql`):

```dotenv
DATABASE_URL=${POSTGRESQL_CONNECTION_STRING}
```

No sigas usando a mano el antiguo usuario `root` de Zeabur: utiliza la variable de conexión que expone la nueva base de datos de Zenavo (tras los incidentes de seguridad de Zeabur en 2026, también es más seguro pasar a la contraseña nueva generada automáticamente).

Para hacer el cambio **sin perder ningún dato**, sigue este orden:

1. Haz primero un ensayo en Zenavo con una copia actual y comprueba que la aplicación inicia sesión, consulta y crea registros sin fallos;
2. En una hora de poco tráfico, pausa la aplicación en Zeabur (así como las tareas programadas o consumidores de colas) para que no entren escrituras nuevas en la base de datos antigua;
3. Genera una última copia de seguridad en Zeabur y restáurala en un servicio PostgreSQL limpio en Zenavo;
4. Arranca la aplicación en Zenavo y cambia el DNS de tu dominio.

## Preguntas frecuentes

**¿Al restaurar sale un error diciendo que la base de datos no está vacía (`database is not empty`)?**
Tu aplicación se ha conectado a la base de datos antes de la restauración y ha creado las tablas automáticamente (por ejemplo, con Prisma o TypeORM). Detén primero la aplicación, borra y vuelve a crear el servicio PostgreSQL, **restaura antes la copia de seguridad y después arranca la aplicación**.

**¿La restauración termina bien, pero la aplicación da `permission denied` o no puede iniciar sesión?**
El antiguo superusuario `root` de la copia de Zeabur queda con el inicio de sesión desactivado. Cambia `DATABASE_URL` en tu aplicación para que use `${POSTGRESQL_CONNECTION_STRING}` del servicio PostgreSQL de Zenavo (que entra con el usuario `postgres` y la contraseña nueva).

**¿El archivo descargado de Zeabur termina en `.sql.gz` y no se puede descomprimir?**
Es una particularidad de cómo nombra Zeabur la descarga: en realidad es un archivo `.zip`. No hace falta cambiarle el nombre ni descomprimirlo; súbelo tal cual en **Copias de seguridad y restauración** de Zenavo y lo reconocerá automáticamente.

Una vez restaurada y comprobada la base de datos, deja activadas las copias automáticas en **Copias de seguridad y restauración**. Para el resto de la mudanza, consulta la [guía completa de migración desde Zeabur](https://zenavo.app/es-ES/blog/migrate-from-zeabur).
