Кластер MariaDB Galera не реплицирует данные после сбоя

Я устанавливаю кластер galera на двух разных серверах и синхронизирую их как репликацию мастер-мастер.

КОНФИГУРАЦИЯ СЕРВЕРА

Debian GNU/Linux 7 Жесткий диск 500 ГБ

Допустим, у меня есть два сервера. Сервер А и Сервер Б

ПРОБЛЕМА

Теперь по какой-то причине, если сервер A Mysql разбился или сервер не работает, в это время полный трафик, управляемый сервером B, и данные журнала на сервере B, сервер A и сервер B находятся в репликации master-master, поэтому оба узла являются мастерами.

Теперь проблема заключается в том, что когда A был недоступен, а данные, вставленные в B, которые реплицируются на A, полностью в порядке, когда A находится в рабочем состоянии, но данные не синхронизируются, которые выполняют операцию обновления на B в отсутствие A.

Кто-нибудь знает, почему это происходит, или есть ли какая-либо конфигурация, которая решила мою проблему?

Заранее спасибо.


person H.Patel    schedule 24.03.2017    source источник


Ответы (1)


Это типичный сценарий разделения мозга.

Происходит то, что ваш кластер не может определить, какой из них является основным узлом. Подробнее об этом можно прочитать здесь.

Чтобы этого не произошло в будущем, убедитесь, что в вашем кластере нечетное количество узлов, или используйте Арбитр Galera.

Я надеюсь, что это было полезно. Удачи!

person mrb    schedule 25.03.2017
comment
@mrb у нас есть 2 сервера в репликации (четное число), вы имеете в виду, что нам нужно добавить какой-то фиктивный сервер, чтобы снова избежать этой проблемы? эта проблема распространена? - person Devang; 27.03.2017
comment
@Деванг. Проблема с четными номерами заключается в том, что они не могут определить, какой из двух серверов является «основным» узлом после отказа узла. Добавление третьего узла в кластер может решить эту проблему. Вы можете найти всю информацию здесь: galeracluster.com/documentation-webpages/twonode.html. - person mrb; 27.03.2017
comment
@Devang, да, проблема очень распространена, потому что ваше приложение очень зависит от сети. И все мы знаем, что сеть не надежна на 100%. Вы можете прочитать теорему CAP доктора Эрика Брюэра, если хотите узнать о ней больше. :) - person mrb; 27.03.2017
comment
@H.Patel Я знаю, что сервер A является вашим основным узлом. Но сервер A и сервер B не могут после сбоя определить, какой из них имеет последнюю версию данных, и поэтому они не могут решить, какой из них является основным компонентом. Добавив Galera Arbitrator или третий узел, вы можете решить эту проблему. Им просто нужно, чтобы третья сторона помогла им с голосованием (подсчет кворума). - person mrb; 28.03.2017
comment
Возможно, это немного лучше объясняет расщепленный мозг и расчеты кворума: weightedquorum.html. - person mrb; 28.03.2017