I periodically need to make changes to tables in mysql 5.1, mostly adding columns.
Não. Não mesmo. Apenas não faça. Deve ser uma ocasião muito rara quando isto é sempre necessário.
Supondo que seus dados estejam realmente normalizados para começar, a maneira correta de resolver o problema é adicionar uma nova tabela com uma relação 1: 1 à tabela base (não obrigatória na nova tabela).
Ter que adicionar colunas regularmente é geralmente um indicador de um banco de dados que não é normalizado - se o seu esquema não estiver normalizado, então esse é o problema que você precisa consertar.
Por fim, se o seu esquema estiver realmente normalizado e você realmente precisar continuar adicionando colunas:
- Verifique se você tem uma coluna de timestamp no banco de dados ou se está gerando logs de replicação
- Crie uma cópia (B) da tabela (A)
- adicione as novas colunas a B (isso ainda bloqueará com myisam)
- desativar transações
- renomeie a tabela original (A) como algo diferente (backup)
- renomeie a nova tabela (B) com o nome da tabela original (A)
- reproduzir as transações do início da operação a partir do log de replicação ou da tabela de backup
- ativar transações.