Documentación/ Bases de datos/ Respaldos y restauración

Respaldos y restauración

Protege tus datos con respaldos automáticos. sh0 es compatible con destinos de almacenamiento local, S3 y Cloudflare R2 con políticas de retención configurables y restauración con un solo clic.

Respaldos manuales

Puedes activar un respaldo en cualquier momento desde la página de detalle de la base de datos. Los respaldos manuales usan las mismas herramientas de volcado específicas del motor que los respaldos programados.

  1. Navega a tu base de datos dentro del stack.
  2. Haz clic en la pestaña Respaldos.
  3. Haz clic en Respaldar ahora.
  4. Selecciona un destino de almacenamiento (o usa el predeterminado).
  5. El respaldo se ejecuta en segundo plano -- puedes seguir trabajando.
Database backups tab -- showing the Backup Now button and storage destination selector

sh0 usa la utilidad de volcado nativa de cada motor para garantizar respaldos consistentes:

MotorHerramienta de respaldoFormato
PostgreSQLpg_dumpFormato personalizado (.dump) o SQL
MySQL / MariaDBmysqldumpSQL (.sql.gz)
MongoDBmongodumpArchivo BSON (.archive)
RedisInstantánea RDBArchivo RDB (.rdb)
Tip
Los respaldos manuales son útiles antes de realizar operaciones riesgosas como actualizaciones de versión, migraciones de esquema o cambios masivos de datos.

Respaldos programados

Configura respaldos automáticos que se ejecutan según una programación. sh0 usa expresiones cron para máxima flexibilidad.

  1. Abre la pestaña Respaldos de la base de datos.
  2. Haz clic en Configurar programación.
  3. Ingresa una expresión cron o selecciona un preset (diario, cada 6 horas, semanal).
  4. Elige el destino de almacenamiento.
  5. Establece una política de retención.
  6. Haz clic en Guardar.
Scheduled backup configuration -- cron expression input, preset buttons, and storage destination dropdown

Expresiones cron

Las programaciones de respaldo usan sintaxis cron estándar de 5 campos. Estos son los patrones comunes:

Common Cron Patterns
# Every day at 2:00 AM
0 2 * * *

# Every 6 hours
0 */6 * * *

# Every Sunday at midnight
0 0 * * 0

# Every hour
0 * * * *

# Monday to Friday at 3:30 AM
30 3 * * 1-5

Destinos de almacenamiento

Los respaldos se pueden almacenar localmente en el servidor o subirse a almacenamiento de objetos en la nube. Se recomienda encarecidamente el uso de almacenamiento remoto para recuperación ante desastres.

Almacenamiento local

Por defecto, los respaldos se almacenan en el sistema de archivos local del servidor. Esta es la opción más sencilla, pero no ofrece protección contra fallas de disco o pérdida del servidor.

Default backup location
/var/lib/sh0/backups/<stack-name>/<database-name>/
Warning
Los respaldos solo locales no protegen contra fallas de hardware. Para bases de datos en producción, siempre configura al menos un destino de almacenamiento remoto.

Almacenamiento compatible con S3

sh0 es compatible con cualquier proveedor de almacenamiento de objetos compatible con S3, incluyendo AWS S3, Cloudflare R2, MinIO, Backblaze B2 y DigitalOcean Spaces.

Para configurar un proveedor de almacenamiento:

  1. Ve a Configuración → Proveedores de almacenamiento.
  2. Haz clic en Agregar proveedor.
  3. Ingresa la URL del endpoint, la clave de acceso, la clave secreta, el nombre del bucket y la región.
  4. Haz clic en Probar conexión para verificar el acceso.
  5. Haz clic en Guardar.
S3 storage provider configuration -- endpoint, credentials, bucket, and region fields with a Test Connection button
Tip
Cloudflare R2 ofrece transferencia de salida gratuita, lo que lo convierte en una excelente opción para almacenamiento de respaldos. Establece el endpoint como https://<account-id>.r2.cloudflarestorage.com.

Retención

Una programación conserva un número acotado de copias para su origen. El valor que fija es un número de copias a conservar, no un número de días. La retención solo cuenta las copias creadas por esa programación: las copias manuales nunca se cuentan ni se eliminan, y cuando un origen tiene varias programaciones, cada una purga únicamente las suyas. El valor predeterminado es 7, y 0 significa ilimitado: ninguna eliminación automática.

AjusteDescripción
Número conservadoCuántas copias programadas completadas conservar para este origen. Lo que exceda esa cantidad es lo que una purga eliminaría.
Copias manualesNunca se cuentan para el número conservado ni se eliminan automáticamente.
Valor igual o menor que 0Desactiva la purga para esa programación.
Purga automática: corregida en 1.6.18
En la 1.6.17 y versiones anteriores nada ejecutaba nunca la purga: el número de retención se guardaba y se mostraba, pero las copias programadas se acumulaban hasta borrarlas a mano. Desde la 1.6.18 la purga se ejecuta tras cada copia programada correcta, con un barrido horario de recuperación para los repositorios ya desbordados. Si sigue en una versión anterior, continúe eliminando las copias antiguas desde la pestaña Copias de seguridad y dimensione su almacenamiento en consecuencia.

Restaurar desde un respaldo

Restaurar un respaldo reemplaza el contenido actual de la base de datos con los datos del respaldo. sh0 se encarga de detener la base de datos, restaurar los datos y reiniciar el contenedor.

  1. Abre la pestaña Respaldos de la base de datos.
  2. Busca el respaldo que deseas restaurar en la lista del historial.
  3. Haz clic en el botón Restaurar junto al respaldo.
  4. Confirma la operación de restauración en el diálogo.
  5. Espera a que la restauración se complete -- la base de datos estará temporalmente no disponible.
Backup restore confirmation dialog -- warning about data replacement and a confirm button
Danger
Restaurar un respaldo sobrescribe todos los datos actuales de la base de datos. Considera crear un respaldo nuevo del estado actual antes de restaurar uno anterior.

Historial y estado de respaldos

La tabla de historial de respaldos muestra todos los respaldos de una base de datos, incluyendo su estado, tamaño, duración y ubicación de almacenamiento.

Backup history table -- showing timestamps, sizes, durations, statuses, and storage destinations for each backup

Cada respaldo puede tener uno de los siguientes estados:

  • Completado -- El respaldo finalizó exitosamente y está disponible para restaurar.
  • En progreso -- El respaldo se está ejecutando actualmente.
  • Fallido -- El respaldo encontró un error. Haz clic en la entrada para ver el mensaje de error.
  • Expirado -- El respaldo fue eliminado por la política de retención.

También puedes descargar los respaldos completados directamente desde el panel de control para almacenamiento sin conexión o migración a otro servidor.