Migraciones de esquema sin tiempo de caída
El problema
Durante una publicación corren dos versiones de código juntas. Una migración que cambia una columna de golpe rompe una de ellas. Así que cada cambio estructural se descompone en una secuencia de pasos cada uno seguro por sí mismo.
La secuencia segura
Añadir. Una columna nueva, que admita vacío, sin tocar la existente.
Escritura doble. El código escribe en ambas columnas y prefiere leer de la vieja.
Rellenar. En lotes pequeños, fuera de horas punta, con posibilidad de parar.
Cambiar lecturas. Tras verificar que los datos son idénticos.
Eliminar. En una publicación aparte, tras confirmar que nadie lee.
Reglas de cautela
Una migración en una tabla grande puede bloquear. Comprueba el comportamiento de bloqueo en tu motor, y ejecútala sobre una copia del tamaño de producción. Una copia de seguridad antes, y un guion de reversión escrito de antemano, no improvisado bajo presión.
En profundidad
Gestiona las migraciones como código en control de versiones, con ejecución automática y control de orden. Y no mezcles un cambio de esquema con un cambio de lógica en la misma publicación: cuando algo se rompe, quieres saber cuál de los dos tiene la culpa.