MySQL Master-Slave Replication

2

Estou tentando configurar a replicação MySQL master-slave altamente disponível. Eu pretendo ter dois servidores em redes diferentes, com um funcionando como mestre e outro funcionando como escravo da seguinte forma:

     A           B
 10.0.1.0/24 | 10.0.2.0/24
__________________________
 Master -----|---> Slave
 10.0.1.20   | 10.0.2.20

Meus servidores de aplicativos se conectarão a (e executarão as gravações do mysql em) 10.0.1.20 se o sistema estiver totalmente operacional.

Em uma condição de failover, o escravo será promovido e o mestre ficará assim:

     A           B
 10.0.1.0/24 | 10.0.2.0/24
__________________________
 (DOWN)      | Master
 10.0.1.20   | 10.0.2.20

Portanto, o servidor A está inativo e B foi promovido para o MySQL mestre. No entanto, preciso que meu servidor de aplicativos saiba que B foi promovido e todas as futuras gravações devem ser feitas para 10.0.2.20 .

Isto é trivial para o caso em que há apenas um mestre e um escravo, mas como isso deve ser tratado se houver um mestre e três escravos? Como o aplicativo PHP saberá para qual servidor mysql gravar? Eu preciso que a promoção do escravo mysql seja automática e ocorra dentro de 5 segundos. Não posso ter os dois servidores compartilhando um VIP usando heartbeat porque eles estão em duas redes diferentes em locais físicos completamente diferentes.

Como esse failover é normalmente tratado com topologias semelhantes?

    
por Ethan Hayon 08.07.2013 / 23:12

1 resposta

0

Use keepalived, ucarp, heartbeat ou algo semelhante para ter um IP mestre virtual que responda aos aplicativos php.

    
por 08.07.2013 / 23:50