ну для начала - "правильное" решение: shared storage. Все остальное, в общем-то, на данный момент выглядит больше костылями.master-master, насколько знаю (может кто поправит), в реализации мускула - штука своеобразная. смысл такой - запись ведется одновременно на оба сервера, уже после записи данные отправляются соседнему, как в master-slave репликации. То есть можете писать статистику (и тут вроде как эта схема использования мускула с master-master оправданна), но сильно конкурентную запись делать нежелательно. Ну и технология эта неотработанная толком.
затем - зачем вам это?
если вопрос просто о HA, то ситуация с последовательным (быстрым) падением 2х серверов малореальна. Если же один упал - то это уже критическая ситуация, которую нужно руками решать. Почему бы просто не сделать master-slave, а дальше все ручками? http://dev.mysql.com/doc/refman/5.1/en/replication-solutions-switch.html (заодно посмотрите коммент)
CARP тоже не обеспечивает моментальной реакции.
То есть делаете скрипт, который отслеживает состояние мастера (на самом деле, думаю, что лучше тут следить за состоянием carp-интерфейса) и если жопа, то отрабатывать failover ситуацию.
Упадет сервак #1 - ваш скрипт переведет #2 в режим мастера (получите пару таймаутов на запросы, причем это вам обеспечит даже момент переключения CARP), вы ручками поднимете #1, затем сделаете его новым слейвом, отсинхонизируете, все проверите. При большом желании, можно и отскриптовать в полный автомат, только нафик это надо - если упала БД - значит уже плохо и надо смотреть в чем дело.
На чудеса не надейтесь - у вас 2 мускула, которые будут работать с 2мя физически разнесенными экземплярами данных. CARP - это из другой стези, там мегабайты данных в транзакциях не прокидывать.