Como ele está gravando no disco via binlog, eu acho que você poderia fazer algo semelhante ao que os administradores do MySQL normalmente fazem: pulsação w / DRBD ( exemplo aqui).
Porém, na última vez em que tentei usar a pulsação, ele não suportava verificação não multicast entre nós, o que significava que era mais ou menos impossível executar na infraestrutura de nuvem / VPS (AWS, Linode, Slicehost etc.). De fato, a maioria dos serviços de cluster usa multicast. Isso pode não ser mais o caso, mas é algo para estar ciente. Você pode usar keepalived para fornecer failover baseado em IP, que também suporta somente multicast, mas possui um patch disponível via Willy Tarreau (autor do HAProxy ) para adicionar suporte a unicast . Eu pessoalmente testei isso em um par de servidores Linode VPS e o keepalived é capaz de realizar failover de um endereço IP compartilhado no caso de falha do servidor mestre.
Uma coisa que você pode fazer que provavelmente é menos ideal é gravar trabalhos em vários servidores beanstalkd (também conhecido como particionamento). Se um deles cair, seu aplicativo detecta isso e grava na (s) outra (s) instância (s). Seus funcionários terão que pesquisar de forma inteligente cada uma das instâncias do beanstalkd e poder ignorar as instâncias inativas. Como você está no log de bin, fazer o backup de uma instância deve ser tão fácil quanto reiniciá-la e o aplicativo / trabalhadores detectará isso e continuará como de costume (e começará a processar os trabalhos na instância recém-iniciada). Obviamente, estou simplificando o processo, mas essa é outra maneira de lidar com isso.