Initial commit: MSP Monitor Dashboard
- Next.js 14 frontend with dark cyan/navy theme - tRPC API with Prisma ORM - MeshCentral, LibreNMS, Headwind MDM integrations - Multi-tenant architecture - Alert system with email/SMS/webhook notifications - Docker Compose deployment - Complete documentation
This commit is contained in:
103
scripts/restore-db.sh
Normal file
103
scripts/restore-db.sh
Normal file
@@ -0,0 +1,103 @@
|
||||
#!/bin/bash
|
||||
|
||||
# MSP Monitor Dashboard - Database Restore Script
|
||||
# Restaura un backup de la base de datos PostgreSQL
|
||||
|
||||
set -e
|
||||
|
||||
# Verificar argumentos
|
||||
if [ -z "$1" ]; then
|
||||
echo "Uso: $0 <archivo_backup>"
|
||||
echo ""
|
||||
echo "Ejemplo: $0 /backups/msp_monitor_20240115_120000.sql.gz"
|
||||
echo ""
|
||||
echo "Backups disponibles:"
|
||||
ls -la ${BACKUP_DIR:-/backups}/msp_monitor_*.sql.gz 2>/dev/null || echo "No se encontraron backups"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
BACKUP_FILE="$1"
|
||||
|
||||
# Verificar que el archivo existe
|
||||
if [ ! -f "$BACKUP_FILE" ]; then
|
||||
echo "[✗] Archivo no encontrado: $BACKUP_FILE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Cargar variables de entorno
|
||||
if [ -f .env ]; then
|
||||
export $(cat .env | grep -v '^#' | xargs)
|
||||
fi
|
||||
|
||||
# Valores por defecto
|
||||
DB_HOST="${DB_HOST:-localhost}"
|
||||
DB_PORT="${DB_PORT:-5432}"
|
||||
DB_USER="${POSTGRES_USER:-mspmonitor}"
|
||||
DB_NAME="${POSTGRES_DB:-msp_monitor}"
|
||||
DB_PASSWORD="${POSTGRES_PASSWORD:-changeme}"
|
||||
|
||||
echo "======================================"
|
||||
echo " MSP Monitor - Database Restore"
|
||||
echo "======================================"
|
||||
echo "Fecha: $(date)"
|
||||
echo "Archivo: $BACKUP_FILE"
|
||||
echo "Base de datos: $DB_NAME"
|
||||
echo ""
|
||||
|
||||
# Confirmar restauracion
|
||||
echo "ADVERTENCIA: Esta operacion eliminara todos los datos actuales."
|
||||
read -p "¿Desea continuar? (si/no): " CONFIRM
|
||||
|
||||
if [ "$CONFIRM" != "si" ]; then
|
||||
echo "Operacion cancelada"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
export PGPASSWORD="$DB_PASSWORD"
|
||||
|
||||
# Crear backup de seguridad antes de restaurar
|
||||
echo ""
|
||||
echo "Creando backup de seguridad antes de restaurar..."
|
||||
SAFETY_BACKUP="/tmp/msp_monitor_pre_restore_$(date +%Y%m%d_%H%M%S).sql.gz"
|
||||
pg_dump -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" \
|
||||
--no-owner --no-privileges --format=custom | gzip > "$SAFETY_BACKUP"
|
||||
echo "[✓] Backup de seguridad: $SAFETY_BACKUP"
|
||||
|
||||
# Terminar conexiones activas
|
||||
echo ""
|
||||
echo "Terminando conexiones activas..."
|
||||
psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d postgres -c \
|
||||
"SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = '$DB_NAME' AND pid <> pg_backend_pid();" \
|
||||
> /dev/null 2>&1 || true
|
||||
|
||||
# Eliminar y recrear base de datos
|
||||
echo ""
|
||||
echo "Recreando base de datos..."
|
||||
psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d postgres -c "DROP DATABASE IF EXISTS $DB_NAME;"
|
||||
psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d postgres -c "CREATE DATABASE $DB_NAME;"
|
||||
echo "[✓] Base de datos recreada"
|
||||
|
||||
# Restaurar backup
|
||||
echo ""
|
||||
echo "Restaurando backup..."
|
||||
if [[ "$BACKUP_FILE" == *.gz ]]; then
|
||||
gunzip -c "$BACKUP_FILE" | pg_restore -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" --no-owner --no-privileges
|
||||
else
|
||||
pg_restore -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" --no-owner --no-privileges "$BACKUP_FILE"
|
||||
fi
|
||||
echo "[✓] Backup restaurado"
|
||||
|
||||
unset PGPASSWORD
|
||||
|
||||
# Aplicar migraciones pendientes
|
||||
echo ""
|
||||
echo "Verificando migraciones..."
|
||||
npx prisma db push --skip-generate 2>/dev/null || echo "[!] No se pudieron aplicar migraciones automaticamente"
|
||||
|
||||
echo ""
|
||||
echo "======================================"
|
||||
echo " Restauracion completada"
|
||||
echo "======================================"
|
||||
echo ""
|
||||
echo "El backup de seguridad esta en: $SAFETY_BACKUP"
|
||||
echo "Elimine manualmente cuando ya no lo necesite."
|
||||
Reference in New Issue
Block a user