В настоящее время я использую репликацию Master-Slave, отделяя чтение от записи на уровне приложения. Единственный вид отработки отказа, реализованный в настоящее время, - это обнаружение сбоя ведущего на уровне приложения, в результате чего ведомое устройство становится новым ведущим, чтобы приложение могло работать непрерывно. Как можно догадаться, переключиться обратно, выполнить синхронизацию, навести порядок и так далее - это большая работа.
Я много искал и прочитал десятки статей, но я не нашел решения для HA MySQL, если у вас в основном MyISAM Tables, Mysql Cluster, Heartbeat / DRBD, Schooner, все они подходят только для настроек InnoDB, но не подходит для MyISAM.
Я был бы признателен за некоторые предложения или реальный опыт работы с настройками высокой доступности. Он не обязательно должен иметь открытый исходный код (читать бесплатно), он просто должен работать.
Мы используем MMM в сочетании с круговой репликацией.
У нас есть два сервера MySQL (foo-db1, foo-db2), и каждый из них подчинен другому, поэтому обновление любого из них будет отправлено другому:
http://onlamp.com/onlamp/2006/04/20/advanced-mysql-replication.html
Теперь, когда у каждого экземпляра есть данные, мы обнаружили, что лучше всего, чтобы запись выполнялась только в один. Для этого мы создаем виртуальный IP-адрес (vIP) под другим именем хоста службы (foo-db), на который клиенты отправляют INSERT и UPDATE. В Debian вы должны установить пакет mysql-mmm-agent и, как правило, следовать этому руководству:
http://mysql-mmm.org/mmm2:guide
Мы используем эту конфигурацию на большинстве наших веб-сайтов: два интерфейсных веб-сервера общаются с двумя внутренними серверами баз данных. Монитор MMM работает на одном из веб-серверов (который определяется Heartbeat):
www.howtoforge.com/high-availability-load-balancer-haproxy-heartbeat-debian-etch
Итак, вкратце: используйте круговую репликацию, чтобы убедиться, что два (или более?) Сервера MySQL синхронизированы; используйте MMM, чтобы контролировать, где находится vIP службы базы данных; используйте Heartbeat, чтобы убедиться, что агент MMM работает только на одном компьютере за раз.