Periodicamente, preciso fazer alterações nas tabelas no mysql 5.1, principalmente adicionando colunas. Muito simples com o comando alter table. Mas minhas tabelas têm até 40 milhões de linhas agora e estão crescendo rapidamente ... Portanto, esses comandos alter table levam várias horas. Dentro de alguns meses, eles levarão dias, eu acho.
Como estou usando o Amazon RDS, não posso ter servidores escravos para brincar e depois promover para dominar. Então, minha pergunta é se existe uma maneira de fazer isso com um tempo de inatividade mínimo? Não me importo com uma operação que leve horas ou até dias se os usuários ainda puderem usar o banco de dados, é claro ... Eles podem pelo menos ler enquanto as colunas estão sendo adicionadas? O que acontece se meu aplicativo tentar escrever? Inserir ou atualizar? Se falhar imediatamente, na verdade não é tão ruim, se apenas travar e causar problemas para o servidor db, isso é um grande problema.
Esse deve ser um problema de dimensionamento bastante comum, todos precisam adicionar colunas. O que normalmente é feito em um banco de dados de produção? Escravo -> migração mestre?
Atualização - esqueci de mencionar que estou usando o mecanismo de armazenamento innodb