migration-plan
npx machina-cli add skill 686f6c61/alfred-dev/migration-plan --openclawPlanificación de migraciones de base de datos
Resumen
Este skill estructura la planificación de una migración de base de datos de principio a fin. Una migración mal planificada puede causar pérdida de datos, downtime prolongado o inconsistencias difíciles de detectar. La planificación rigurosa es la diferencia entre un cambio transparente y un incidente.
El resultado es un plan de migración que incluye el script forward, el script de rollback, la estimación de impacto y los pasos de verificación posteriores. Este plan se revisa antes de ejecutar cualquier cambio.
Proceso
-
Analizar el cambio requerido. Antes de escribir SQL, entender exactamente qué cambia y por qué:
- Qué tablas y columnas se ven afectadas.
- Si el cambio es aditivo (nueva tabla, nueva columna) o destructivo (eliminar columna, cambiar tipo).
- Si hay datos existentes que necesitan transformación.
- Si el cambio es compatible hacia atrás con la versión actual del código o requiere despliegue coordinado.
-
Estimar el impacto en producción. Obtener métricas del entorno real:
- Tamaño de las tablas afectadas (número de filas y tamaño en disco).
- Tiempo estimado de la migración según el volumen de datos.
- Si la operación bloquea la tabla (ALTER TABLE con lock en MySQL, por ejemplo).
- Si se necesita ventana de mantenimiento o se puede ejecutar en caliente.
Para tablas grandes (millones de filas), considerar migraciones en lotes o herramientas como gh-ost, pt-online-schema-change o pgroll.
-
Escribir el script forward. El script que aplica el cambio. Requisitos:
- Debe ser idempotente cuando sea posible (IF NOT EXISTS, IF EXISTS).
- Incluir transacción si el motor lo permite para DDL.
- Separar cambios de esquema y cambios de datos si la migración es compleja.
- Respetar el sistema de migraciones del proyecto (Prisma Migrate, Alembic, Django Migrations, Flyway).
-
Escribir el script de rollback. El script que deshace el cambio forward:
- Para cambios aditivos: DROP de lo creado.
- Para cambios destructivos: restaurar desde backup o columna temporal.
- Para transformaciones de datos: script inverso o restauración desde backup.
- Verificar que el rollback deja la base de datos en un estado consistente.
-
Definir el orden de ejecución. Si la migración afecta a varias tablas con dependencias:
- Crear tablas referenciadas antes que las que las referencian.
- Eliminar foreign keys antes de eliminar tablas referenciadas.
- Si hay migración de datos entre tablas, respetar el orden de dependencia.
- Documentar el orden explícitamente en el plan.
-
Planificar la verificación post-migración. Definir comprobaciones que confirmen que la migración se aplicó correctamente:
- Verificar que las tablas y columnas existen con los tipos esperados.
- Contar filas antes y después para detectar pérdida de datos.
- Ejecutar queries de validación sobre los datos migrados.
- Comprobar que la aplicación funciona correctamente con el nuevo esquema.
- Revisar los logs en busca de errores relacionados con el cambio.
-
Documentar el plan. El plan de migración debe incluir:
- Descripción del cambio y motivación.
- Script forward y script de rollback.
- Estimación de tiempo y necesidad de downtime.
- Orden de ejecución.
- Checklist de verificación post-migración.
- Responsable de la ejecución y plan de comunicación.
Que NO hacer
- No ejecutar migraciones directamente en producción sin haberlas probado en un entorno con datos realistas.
- No asumir que el rollback "no se necesitará". Si no hay rollback, no hay plan.
- No mezclar migraciones de esquema con migraciones de datos en un solo paso si la migración es compleja.
- No ignorar los bloqueos de tabla. Un ALTER TABLE en una tabla con millones de filas puede bloquear la base de datos durante minutos u horas.
- No olvidar actualizar los modelos del ORM después de la migración.
Source
git clone https://github.com/686f6c61/alfred-dev/blob/main/skills/datos/migration-plan/SKILL.mdView on GitHub Overview
Este skill estructura la planificación de una migración de base de datos de principio a fin. Garantiza que haya un script forward, un rollback, estimación de impacto y pasos de verificación, todo revisado antes de ejecutar cambios. La planificación rigurosa evita pérdidas de datos, downtime y inconsistencias.
How This Skill Works
Guía la creación de un plan de migración que incluye analizar el cambio, estimar impacto, escribir scripts forward y rollback, definir el orden de ejecución y plan de verificación post-migración. Integra buenas prácticas de migración como idempotencia, transacciones cuando sean posibles y uso de frameworks de migración (Prisma Migrate, Alembic, Django Migrations, Flyway). Considera migraciones en batches para tablas grandes usando herramientas como gh-ost o pt-online-schema-change.
When to Use It
- Planificar un cambio de esquema (nueva tabla/columna) o un cambio destructivo.
- Migraciones para tablas grandes que requieren operaciones en caliente o en batches.
- Necesidad de estimación de impacto, ventana de mantenimiento y verificación post-migración.
- Coordinación de migraciones entre múltiples tablas con dependencias.
- Alineación con el framework de migración del proyecto y documentación del plan.
Quick Start
- Step 1: Analizar el cambio requerido y mapear tablas/columnas afectadas, tipos de cambio y dependencias.
- Step 2: Estimar impacto en producción, definir ventana de mantenimiento y preparar scripts forward/rollback.
- Step 3: Definir orden de ejecución, aplicar migración con verificación post y revisar logs para confirmar éxito.
Best Practices
- Escribir el script forward y el script de rollback de forma idempotente cuando sea posible (IF NOT EXISTS, IF EXISTS).
- Usar transacciones si el motor lo permite y separar cambios de esquema y datos para migraciones complejas.
- Estimar impacto real: tamaño de tablas, tiempo de migración y posibles bloqueos; planificar en consecuencia.
- Definir y documentar el orden de ejecución (dependencias entre tablas; claves foráneas antes de eliminar tablas referenciadas).
- Probar exhaustivamente en staging, validar post-migración y no ejecutar en producción sin pruebas previas.
Example Use Cases
- Agregar una nueva columna de estado a la tabla de usuarios y actualizar datos durante la migración con un rollback disponible.
- Renombrar una columna y migrar datos a una nueva columna para mantener compatibilidad gradual.
- Dividir una tabla grande en dos tablas separadas y migrar datos con verificación de conteos.
- Migración en caliente de una tabla con millones de filas utilizando gh-ost o pt-online-schema-change para minimizar downtime.
- Ejecutar rollback restaurando desde backup y verificando consistencia si la migración falla.