Назад | Перейти на главную страницу

Настройка HA для MySQL / в основном MyISAM Tables

В настоящее время я использую репликацию 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 работает только на одном компьютере за раз.