Como recuperar da atualização do esquema com falha do Mysql, com replicação?

1

Eu tenho dois servidores MySQL configurados com replicação mestre-escravo.

Antes de implantar uma nova versão do aplicativo, nós:

1) PARAR ESCRAVO

2) Faça um dump MySQL do escravo.

No entanto, se um erro for cometido durante a implementação da nova versão do esquema (por exemplo, uma tabela é eliminada por engano), não é possível ter o escravo intacto. Nosso serviço é intensivo em gravação, por isso não podemos reativá-lo até que tenhamos um mestre trabalhando.

Se agora carregarmos o mysql dump de volta no master, levará muito tempo durante o qual nosso serviço permanecerá inativo.

Qual é a melhor prática para se recuperar de tal erro? Como posso configurar o sistema para que eu possa promover facilmente o escravo, ligar o nosso serviço e só depois tender para o banco de dados quebrado? Principalmente, estou preocupado com a nova sincronização do escravo e do mestre depois que as alterações são feitas no escravo.

    
por OmerGertel 12.04.2010 / 17:18

1 resposta

1

O método que você está usando é certamente o mais seguro, mas há maneiras de você trapacear para tornar o processo mais transparente.

  • Mantenha a sincronização desativada enquanto você executa as próximas etapas.
  • Torne o escravo o mestre (mais fácil se você tiver replicação mestre / mestre em vez de mestre / escravo) e mude seu aplicativo para ele.
  • Restaurar o antigo mestre do arquivo de despejo.
  • Reabilite a sincronização.
  • Verifique se o antigo mestre está sincronizado com o antigo escravo.
  • Troque o aplicativo de volta, se assim desejar.
por 13.04.2010 / 04:39