Periódicamente necesito hacer cambios en las tablas en mysql 5.1, principalmente agregando columnas. Muy simple con el comando alter table. Pero mis tablas tienen hasta 40 millones de filas ahora y están creciendo rápidamente ... Por lo tanto, los comandos de alterar tabla tardan varias horas. Supongo que en un par de meses tardarán días.
Como estoy usando Amazon RDS, no puedo tener servidores esclavos para jugar y luego pasar a dominar. Entonces, mi pregunta es si hay una manera de hacer esto con un tiempo de inactividad mínimo. No me importa que una operación tarde horas o incluso días si los usuarios aún pueden usar la base de datos, por supuesto ... ¿Pueden al menos leer mientras se agregan columnas? ¿Qué sucede si mi aplicación intenta escribir? Insertar o actualizar? Si falla de inmediato, eso no es tan malo, si simplemente se cuelga y causa problemas para el servidor de db, eso es un gran problema.
Este debe ser un problema de escala bastante común, todos deben agregar columnas. ¿Qué se suele hacer con una base de datos de producción? Esclavo -> maestro de migración?
Actualización : olvidé mencionar que estoy usando el motor de almacenamiento innodb