Репликация MySQL или кластер MySQL?
В настоящее время я запускаю веб-приложение Rails 3 с MySQL на одном первом сервере и приложение Rails API на втором сервере, который подключается к базе данных MySQL с первого сервера.
Я не рад, что API зависит от базы данных с первого сервера и решил использовать репликацию / кластеризацию, но я не уверен, что лучше всего подходит для моего случая?
- Master - ведомая репликация, наш API не только для чтения, он также пишет много информации, поэтому он не выглядит таким ярким.
- Мастер - Мастер репликации, слишком боится несогласованности в данных, так как он может выйти из синхронизации.
- Кластер MySQL - это кажется лучшим вариантом для меня, однако я не уверен, стоит ли кластеризовать только с 2 узлами?
Что если один узел выйдет из строя, значит ли это, что, как только он заработает и будет использовать второй узел в качестве донора, весь кластер будет недоступен? Как я могу избежать этого?
Как вы думаете, мой лучший вариант здесь?
1 ответ
Таким образом, вы не можете кластеризовать только 2 узла. Вам нужен кворум, или вы можете потерять сервер и разбить мозг, тогда вы не уверены, какой из них имеет какие данные.
У вас может быть 2 сервера данных и третий сервер голосования, который не хранит данные, а просто является членом кластера для голосования.
Обычно я использую кластер mysql и все мои клиенты подключаются локально к haproxy, и haproxy решает, куда отправлять соединения, и отправляет все записи на один сервер 100% времени, пока он не умрет, а затем отправляется на резервный сервер.