Como realmente usar o slave mysql assim que o master é failover ou é queimado

6

Eu tenho a replicação mestre-escravo do MySQL que funciona bem; Eu pesquisei a rede inteira e o site MySQL para encontrar o procedimento padrão para usar a replicação, mas não encontrei nada. É como se os administradores estivessem satisfeitos em ter a replicação ativada, mas, quando chega a hora de executar uma recuperação de desastres, nenhum plano inicial foi colocado em prática e compartilhado publicamente.

O que eu quero saber é como fazer com que a máquina escrava substitua a principal caso a última tenha sido danificada, queimada, etc. Eu acho que a máquina escrava deve pegar o endereço de rede do mestre, mas o que mais deve ser feito? Por exemplo, alterando permissões de usuário do MySQL ou executando alguns comandos! Por favor, inclua referências, se houver.

    
por Jawad Al Shaikh 22.08.2011 / 09:42

3 respostas

10

Para uma solução de DR, você provavelmente deseja um processo semi-manual. Ou seja, você precisa decidir se o desastre valida um failover completo de recuperação de desastres e não se trata apenas de um pequeno blipp de rede, e você fica preso a dias de trabalho de recuperação de falhas.

Para mudar um escravo do MySQL para um mestre, você apenas emite alguns comandos no mysql, Detalhes do Mysql podem ser encontrados aqui .

Eu sugeriria strongmente o script de todo o processo (e testá-lo!) e adicionar quaisquer outros comandos que você deseja executar na caixa para fazer o failover de recuperação de desastres (reiniciar a camada da Web ou qualquer outra coisa necessária). Usamos func em um servidor de gerenciamento para executar comandos de failover em todas as camadas de nossos aplicativos.

Ao me referir à recuperação de desastres, estou falando de falha no site. Para um failover de cluster, as coisas provavelmente devem ser automáticas e muito mais simples.

    
por 22.08.2011 / 10:12
4

Tudo o que é necessário para substituir um servidor MySQL por uma réplica é trocar o endereço IP do servidor, sem necessidade de comandos adicionais no MySQL.

Para um conforto extra, se você quiser alguma paz de espírito e fazer isso automaticamente, você pode fazer o seguinte:

  • Peça aos dois servidores MySQL a replicação master-master, verifique aqui
  • Crie um IP virtual que será usado pelo servidor master inicial, eu heartbeat do usuário para isso (parte do projeto LinuxHA), mas você pode usar sua arma preferida de escolha para o seu sistema operacional
  • Configure os parâmetros para o IP ser alternado, isso pode ser a queda da rede, a outra máquina morrendo ou simplesmente o MySQL sendo desligado

Esta configuração tem muitas vantagens, você pode facilmente fazer manutenção em um nó, trocando o tráfego para o outro e ter uma recuperação sem problemas, você nem precisará sair da cama :) Apesar de uma recomendação, ser inteligente sobre seus parâmetros IP virtuais, você pode acabar com ambos os nós tentando reivindicar o IP virtual que não é o resultado desejado.

    
por 22.08.2011 / 10:12
2

Supondo que você tenha 2 MySQL Slaves: slave 1 e slave 2. No caso de seu master estar desativado, você decide promover o slave 1 para se tornar um novo master. Eu sugiro um procedimento a seguir:

Certifique-se de que todos os escravos processaram qualquer declaração no seu relay log com:

mysql> STOP SLAVE IO_THREAD;
mysql> SHOW PROCESSLIST; to see 'Has read all relay log' state.

no escravo 1, promova-o para se tornar um mestre com:

mysql> STOP SLAVE;
mysql> RESET MASTER;

no escravo 2, aponte para novo mestre com:

mysql> CHANGE MASTER TO MASTER_HOST='slave 1';
mysql> START SLAVE;

E o último é instruir cada cliente a direcionar suas declarações para o Escravo 1.

link

    
por 22.08.2011 / 10:11