Eu dou uma chance:
- Se os slaves travarem e você voltar a colocá-lo on-line, deverá sincronizar-se com o mestre automaticamente. Você pode verificar usando o comando mysql "SHOW SLAVE STATUS \ G". Olhe especialmente para estas linhas:
Slave_IO_Running: Yes Slave_SQL_Running: Yes Last_Errno: 0 Last_Error: Seconds_Behind_Master: 0
Se parece assim, está tudo bem. Se o Seconds_Behind_Master for > 0, a réplica está alcançando. Se o Slave_IO_Running não estiver sendo executado, você tem um problema incomum, verifique os logs de erro. Se Slave_SQL_Running não estiver em execução, tente iniciá-lo com "START SLAVE;". Se isso falhar, verifique se há um erro mencionado na linha "Last_Error".
- Um escravo se tornando o mestre: se você não tiver uma configuração de cadeia (o que pode não ser uma boa ideia), você precisaria alterar a configuração de replicação do novo mestre e dos escravos.
Para ressincronizar o antigo mestre, apenas adicione-o como escravo e deixe a replicação terminar. Então você pode colocar o sistema offline e voltar ao antigo mestre.
As transações são um problema. Especialmente se você usar um backend agnóstico de transação como o MyISAM. Usando o InnoDB deve funcionar. AFAIK apenas a transação concluída é gravada no log binário e, portanto, nas réplicas. Isso só será aplicado se o banco de dados estiver ciente de suas transações.
Com os comandos dados anteriormente, você pode verificar o estado de todos os seus escravos e promover o escravo mais recente (dica: Log_Pos) para mestre. talvez apenas temporariamente, até que todos os escravos estejam frescos novamente e depois promovam o servidor designado.
Pessoalmente, acho que você precisaria de uma configuração especial (por exemplo, misturar escravos WAN e LAN, grandes consultas de transação) para ter escravos com estados de retransmissão diferentes após o mestre ter falhado.