Dúvida: Boas práticas para alterar migrations

Fala pessoal. Estou com essa dúvida do título. Basicamente no início da minha carreira eu trabalhei bastante com bancos não relacionais.. como mongodb e etc... então sempre foi muito "tranquilo" fazer alterações no banco de produção sem quebrar nada.

Hoje estou começando a mexer mais com bancos relacionais. Uma dificuldade que eu venho tendo é que sempre que precisamos alterar uma coluna pu coisa do tipo, editar um schema ou migration acaba sendo extremamente torturante. Muitas vezes é preciso criar uma nova tabela auxiliar, mover todos os dados de produção e apagar a antiga.

Vocês conhecem boas práticas para evitar esse tipo de dor de cabeça?

Essa questão de ter que criar uma tabela de transição e depois apagar a original apenas para criar colunas é bem estranha. Nunca vi isso em lugar algum.

Já para alterar um tipo de dado da coluna, já passei por casos de criar uma coluna para fazer essa transição, mas nunca uma tabela inteira. E para alterar o tipo de coluna, todas as ferramentas de migration com que trabalhei tem dificuldades e as vezes é melhor fazer diretamente.

Criar colunas novas é algo trivial, toda ferramenta de migration deve fazer isso com as duas mãos nas costas.

O que está forçando vocês a terem que criar uma nova tabela? Isso não ficou claro para mim. Quais ferramentas de migration vocês estão usando?