Snapshots de Base de Datos en Laravel
Versiona, restaura y compara tu base de datos con Spatie Laravel DB Snapshots
Introducción
Cuando trabajas en proyectos Laravel medianos o grandes —especialmente en producción, staging o entornos multi-tenant— cometer un error en la base de datos puede costar caro.
Spatie Laravel DB Snapshots es un paquete que permite crear snapshots (instantáneas) de tu base de datos, restaurarlas fácilmente y llevar control de cambios de una forma mucho más segura que los backups tradicionales.
En este artículo te explico qué es, para qué sirve, cuándo usarlo y cómo aprovecharlo correctamente en proyectos Laravel.
¿Qué es Laravel DB Snapshots?
Laravel DB Snapshots es un paquete de Spatie que permite:
Crear snapshots del estado completo de la base de datos
Restaurar la base de datos desde un snapshot
Mantener un historial de estados
Facilitar pruebas, despliegues y rollback de datos
Es ideal para equipos, ambientes de staging, QA, testing automatizado y deploys controlados.
¿Para qué sirve realmente?
Este paquete es especialmente útil cuando:
Vas a ejecutar migraciones riesgosas
Necesitas volver a un estado exacto de datos
Haces pruebas destructivas en staging
Quieres comparar estados antes y después de cambios importantes
Trabajas con seeders complejos o datos reales anonimizados
Instalación del paquete
composer require spatie/laravel-db-snapshots
Publica la configuración si lo deseas:
php artisan vendor:publish --tag=db-snapshots-config
Crear un snapshot de la base de datos
php artisan snapshot:create
Esto guarda una copia completa del estado actual de la base de datos.
Puedes nombrar el snapshot:
php artisan snapshot:create before-migration
Restaurar un snapshot
php artisan snapshot:restore before-migration
⚠️ Advertencia:
Esto sobrescribe completamente la base de datos actual.
Listar snapshots disponibles
php artisan snapshot:list
Ideal para ver rápidamente qué estados tienes guardados.
Casos de uso reales
✅ Antes de una migración peligrosa
php artisan snapshot:create pre-alter-table php artisan migrate
Si algo falla:
php artisan snapshot:restore pre-alter-table
✅ Testing con datos reales
Puedes restaurar snapshots antes de correr pruebas automatizadas para garantizar un estado consistente.
✅ Entornos de staging
Permite resetear el entorno sin depender de backups manuales o dumps externos.
Buenas prácticas de seguridad
❌ No usar en producción sin respaldo
✔️ Usar solo en local, staging o QA
✔️ Proteger accesos a comandos artisan
✔️ No exponer snapshots en repositorios
Snapshots vs Backups tradicionales
SnapshotsBackupsRápidosMás lentosIntegrados a LaravelExternosIdeales para testingIdeales para desastreVersionablesHistóricos
👉 No reemplaza backups, los complementa.
Conclusión
Laravel DB Snapshots es una herramienta poderosa cuando necesitas control, seguridad y reversibilidad sobre tu base de datos.
Si trabajas en proyectos complejos, este paquete puede ahorrarte horas de recuperación, errores humanos y dolores de cabeza.