Get the FREE Ultimate OpenClaw Setup Guide →

migration-plan

npx machina-cli add skill 686f6c61/alfred-dev/migration-plan --openclaw
Files (1)
SKILL.md
4.1 KB

Planificació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

  1. 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.
  2. 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.

  3. 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).
  4. 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.
  5. 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.
  6. 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.
  7. 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

  1. Step 1: Analizar el cambio requerido y mapear tablas/columnas afectadas, tipos de cambio y dependencias.
  2. Step 2: Estimar impacto en producción, definir ventana de mantenimiento y preparar scripts forward/rollback.
  3. 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.

Frequently Asked Questions

Add this skill to your agents
Sponsor this space

Reach thousands of developers