← Blog

Cómo automatizar pruebas de restauración de bases de datos PostgreSQL y MySQL

Infraestructura · · 9 min de lectura

Programar un pg_dump o mysqldump diario no es suficiente para estar tranquilo. Para garantizar la continuidad de negocio, debes implementar una estrategia de copias de seguridad y Disaster Recovery en VPS que incluya pruebas de restauración automática.

En esta guía técnica aprenderás cómo montar un flujo de comprobación automatizado que certifique la integridad de tus bases de datos.


1. El flujo de un Restore Test automatizado

Un test de restauración robusto consta de 5 fases ejecutadas de forma aislada:

  1. Descarga: Obtener el archivo comprimido del backup desde el almacenamiento secundario (S3, Hetzner Storage Box, etc.).
  2. Despliegue de Sandbox: Iniciar un contenedor Docker limpio con el motor de base de datos exacto de producción.
  3. Importación: Cargar el volcado SQL o binario en el contenedor de prueba.
  4. Verificación de esquemas y datos: Ejecutar consultas SQL de comprobación (recuento de filas, integridad referencial).
  5. Limpieza y Notificación: Destruir el contenedor y emitir un heartbeat o alerta de estado.

2. Ejemplo práctico en Bash + Docker

#!/bin/bash
set -euo pipefail

# 1. Crear red y contenedor temporal de PostgreSQL
docker run --name pg-restore-test -e POSTGRES_PASSWORD=test_secret -d postgres:16-alpine

# Esperar a que la base de datos esté lista
sleep 10

# 2. Importar el último backup
docker exec -i pg-restore-test psql -U postgres < /path/to/latest_backup.sql

# 3. Validar número de registros en la tabla crítica de usuarios
COUNT=$(docker exec -i pg-restore-test psql -U postgres -d mi_app -t -c "SELECT COUNT(*) FROM users;")

if [ "$COUNT" -gt 0 ]; then
  echo "✅ Restore test exitoso: $COUNT usuarios verificados."
  # 4. Enviar Heartbeat de éxito a SecuryBlack
  curl -fsS https://api.securyblack.com/heartbeats/ping/TU_TOKEN_HEARTBEAT > /dev/null
else
  echo "❌ Error: La base de datos restaurada está vacía."
  exit 1
fi

# 5. Limpieza del contenedor temporal
docker rm -f pg-restore-test

3. Automatización nativa con SecuryBlack

Hacer este proceso manualmente requiere gestionar infraestructura temporal y scripts personalizados. SecuryBlack aún no lo automatiza (está en el roadmap), pero puedes añadir un heartbeat de SecuryBlack al final de este script para que te avisemos si la prueba deja de ejecutarse.

Blog

Descubre qué tiene mal tu servidor

Conecta tu primer VPS y recibe la auditoría de seguridad. Gratis durante la beta.