Usamos MMM combinado com replicação circular.
Nós temos dois servidores MySQL (foo-db1, foo-db2) e cada um é escravo para o outro, então uma atualização em qualquer um será enviada para o outro:
Agora que cada instância tem os dados, descobrimos que é melhor que as gravações sejam apenas para um. Para conseguir isso, criamos um IP virtual (vIP) sob um nome de host de serviço diferente (foo-db) para o qual os clientes enviam INSERTs e UPDATEs. Sob o Debian você instalaria o pacote "mysql-mmm-agent" e geralmente seguiria este guia:
Usamos essa configuração na maioria dos nossos sites: dois servidores da Web front-end conversando com dois servidores de banco de dados de back-end. O monitor MMM é executado em um dos servidores da Web (que é determinado pelo Heartbeat):
www.howtoforge.com/high-availability-load-balancer-haproxy-heartbeat-debian-etch
Então, em resumo: use a replicação circular para garantir que dois (ou mais?) servidores MySQL estejam em sincronia; use MMM para controlar onde o serviço de banco de dados vIP mora; use o Heartbeat para garantir que o agente MMM seja executado somente em uma máquina por vez.