Как изменение уровня изоляции влияет на Galera Cluster
В настоящее время я играю с Percona XtraDB Cluster, который основан на Galera Cluster. В Galera docs я видел следующее:Warning: When using Galera Cluster in master-slave mode, all four levels are available to you, to the extend that MySQL supports it. In multi-master mode, however, you can only use the REPEATABLE-READ level.
И проблема в том, что мое приложение использует READ-COMMITTED
уровень изоляции. Поэтому я хочу узнать, как работает Galera с этим уровнем изоляции. Согласно вышеупомянутому предупреждению, Galera должна работать только в режиме "ведущий-ведомый". Это означает, что только один узел должен разрешать запись.
Но я провел эксперимент: имея кластер из 3 узлов (на одном ПК с использованием Docker), я изменил уровень изоляции на всех узлах на READ-COMMITTED, перезапустил эти узлы и попытался выполнить запросы на запись на каждом узле - все было выполнено успешно, что противоречит предупреждению выше.
Итак, вот мои вопросы:
- Как Galera реагирует на уровни изоляции, отличные от "REPEATABLE-READ"?
- Как я могу проверить, работает ли кластер в режиме master-master или master-slave? Разве подчиненные узлы не должны отклонять запросы на запись?
1 ответ
Насколько я мог понять различные источники информации (такие как этот и этот), "локальный" уровень изоляции может быть любым из поддерживаемых механизмом СУБД. Последняя статья гласит:
Отдельные узлы кластера могут обеспечить любой уровень изоляции в той степени, в которой он поддерживается MySQL/InnoDB.
И только связь между узлами работает иначе: Галеры просто не поддерживают SERIALIZABLE
уровень и может работать с другими.
И по поводу второго вопроса. Галера всегда работает в режиме "мастер-мастер" (ссылка?). И только некоторые ручные изменения в конфигурации могут заставить "ведомые" экземпляры отклонять запросы "записи".
Тем не менее, если кто-то имеет больше информации или знает, что мой ответ неверен - добро пожаловать, напишите свой ответ.