Повышенная доступность MySQL Cluster и алгоритм арбитража
Статья описывает принципы построения отказоустойчивых конфигураций кластера MySQL и алгоритмы, срабатывающие при отказе нод кластера.
Введение
MySQL Cluster - решение для построения отказоустойчивых систем. Во введении кратко опишем базовые понятия, более подробная информация в документации. Описанное ниже справедливо для версии MySQL Cluster 5.1, находящейся в момент выпуска статьи в стадии релиз-кандидата.
Нодой будем называть логический сервер, составляющий кластер. Но одном физическом сервере может быть размещено несколько нод. В кластере три основных типа нод:
1. Дата-нода (ndb-нода) - исполняемый процесс ndbd, отвечающий за хранение фрагмента данных в кластере. Важный параметр кластера NoOfReplicas (число реплик) - число дата-нод на которых хранится каждый конкретный фрагмент. Общее число дата-нод должно быть кратно числу реплик. Группа нод - несколько нод (число нод в группе равно числу реплик), хранящих идентичную информацию. Например NoOfReplicas = 2, число нод - 6. Каждая таблица разбита на 6 фрагментов (по хэшу первичного ключа), пронумеруем их F1,F2,F3,F4,F5,F6. 6 нод (D1,D2,D3,D4,D5,D6) составляют 3 группы - каждая нода первой группы (D1,D2) хранит фрагменты F1,F2; ноды второй группы D3,D4 хранят фрагменты F3,F4; ноды третьей группы D5,D6 хранят фрагменты F5,F6. Выход из строя всех нод одной группы приводит к отказу кластера.
2. SQL-нода (или API-нода) - исполняемый процесс mysqld. SQL-нода принимает подключение клиентов и обращается к дата-нодам за данными. Кроме того, каждая SQL-нода вправе хранить собственные не-NDB таблицы (MyISAM, Innodb, ...), как если бы она не входила в кластер.
3. Управляющая нода (management-нода) - исполняемый процесс ndbmgmd. Отвечает за конфигурацию кластера, каждая нода обращается к управляющей ноде при подключению к кластеру. Не управляет транзакциями и другими текущими делами, а концентрируется исключительно на конфигурации. Потребляет немного системных ресурсов, поэтому часто размещается на одном же физическом сервере с другой нодой. В случае выхода из строя управляющей ноды, кластер продолжит нормальную работу, но будет невозможен перезапуск нод. Конфигурация может содержать одну или несколько управляющих нод.
Арбитр и алгортимы арбитража
Арбитр
Одна из нод кластера всегда является арбитром. Арбитр назначается при запуске кластера и может изменяться в рамках процедуры смены арбитра. О назначении и смене арбитра можно узнать в логах кластера. В конфигурации по-умолчанию, арбитром является управляющая нода, однако это не обязательно так. Арбитром может стать любая управляющая или SQL-нода. У этих нод в конфигурации может быть указан параметр ArbitrationRank (ранг арбитра); значения параметра следующие: 0 - нода никогда не станет арбитром, 1 - нода станет арбитром с высоким приоритетом; 2 - нода станет арбитром только если нет претендентов с высоким приритетом. В каждый момент в кластере только один арбитр.
Отключение группы нод, split-brain
Арбитр требуется в ситуации, когда от кластера отключились несколько нод. Пусть кластер физически разделился на 2 кусочка (например, в силу отказа сетевого маршрутиризатора). Возможна ситуация, когда каждый кусочек будет хранить все данные кластера (то есть по крайней мере по одной ноде из каждой группы). Каждый кусочек будет вести себя как полный кластер, что приведет к нарушению целостности данных (например, часть клиентов будет работать с одним кусочком, а часть - с другим). Такая ситуация потенциально опасна и называется split-brain.
Алгоритм арбитража
Алгоритм арбитража достаточно простой. Он начинает работу сразу после обнаружения фрагментации на каждой работающей дата-ноде осколка кластера.
1. Вижу ли я по крайней мере одну дата-ноду из каждой группы (иначе говоря - обладает ли видимая часть кластера всеми данными)? Если нет - выключиться. Если да, продолжить алгоритм
2. Есть ли среди отключившихся дата-нод по одной из ноде из каждой группы (иначе говоря - обладает ли вторая часть всеми данными)? Если нет - значит вторая часть выключится по правилу 1, я могу продолжить работу. Если да, продолжить алгоритм.
3. Спросить арбитра. Если арбитр недоступен - выключиться. Если арбитр доступен, узнать присутствую ли я в текущей конфигурации, если нет - выключиться, если да - продолжить работу
Смена арбитра
Если в результате фрагментации исчез арбитр, то после выполнения алгоритма арбитража, ноды выбирают нового арбитра. Алгоритм выбора в настоящее время простой - выбирается нода с наименьшим номером (nodeid), среди имеющих старший ArbitrationRank.
Примеры
Почему конфигурация из двух физических не является оказоустойчивой?
Рассмотрим следующую конфигурацию, постоенную на двух физических машинах:
* Первый сервер - дата-нода 1, SQL-нода 1, управляющая нода 1
* Второй сервер - дата-нода 2, SQL-нода 2, (возможно также управляющая нода 2)
Значение NoOfReplicas=2 обеспечивает дублирование данных; обе ноды входят в одну группу. На первый взгляд кажется, что конфигурация откзоустойчива, но на практике это не так. При старте кластера арбитром станет первая управляющая нода. Рассмотрим ситуацию, в которой вышел из строя первый сервер (например выключился, сгорела сетевая карта или вышел из строя порт в маршрутиризаторе). На второй дата-ноде сработает алгоритм арбитража:
1. Вижу ли по одной ноде из каждой группы? Да, всего одна группа, эта нода - я.
2. Содержит ли отключивашаяся часть полный набор данных? Да, дата-нода 1 содержит копию данных.
3. Спросить арбитра. Арбитр недоступен. Выключиться.
Мы видим, что отказ одного сервера приводит к отключению всего кластера. То же самое произойдет в конфигурации с тремя серверами и NoOfReplicas=3 при отключении сервера, содержащего арбитра.
Простой пример отказоустойчивой конфигурации
Предоставим читателю убедиться в том, что следующая конфигурация является устойчивой по отношению к отказу любого из трех физических серверов:
* Первый сервер - дата-нода 1, SQL-нода 1 (ArbitrationRank=0), (NoOfReplicas=2)
* Второй сервер - дата-нода 2, SQL-нода 2 (ArbitrationRank=0), (NoOfReplicas=2)
* Третий сервер - управляющая нода (ArbitrationRank=2)
Выводы
Избыточность данных еще не гарантирует отказоустойчивость. Обязательно тестируйте конфигурации с использованием описанного выше аглоритма или путем физического отключения серверов.
|
Статья описывает принципы построения отказоустойчивых конфигураций кластера MySQL и алгоритмы, срабатывающие при отказе нод кластера.ВведениеMySQL Cluster - решение для построения отказоустойчивых |
РэдЛайн, создание сайта, заказать сайт, разработка сайтов, реклама в Интернете, продвижение, маркетинговые исследования, дизайн студия, веб дизайн, раскрутка сайта, создать сайт компании, сделать сайт, создание сайтов, изготовление сайта, обслуживание сайтов, изготовление сайтов, заказать интернет сайт, создать сайт, изготовить сайт, разработка сайта, web студия, создание веб сайта, поддержка сайта, сайт на заказ, сопровождение сайта, дизайн сайта, сайт под ключ, заказ сайта, реклама сайта, хостинг, регистрация доменов, хабаровск, краснодар, москва, комсомольск |
Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2025-12-02 » Когда ошибка молчит: как бессмысленные сообщения ломают пользовательский опыт
- 2025-12-02 » 9 лучших бесплатных фотостоков
- 2025-12-02 » UTM-метки: ключевой инструмент аналитики для маркетолога
- 2025-12-02 » ПромоСтраницы Яндекса: Что такое и для чего служит
- 2025-12-02 » Метатеги для сайта: исчерпывающее руководство по Title, Description, Canonical, Robots и другим тегам
- 2025-11-26 » Оценка эффективности контента: превращаем информационный балласт в рабочий актив
- 2025-11-26 » 10 причин высокого показателя отказов на сайте
- 2025-11-26 » Когда и зачем обновлять структуру сайта
- 2025-11-26 » Скрытые демотиваторы: как мелочи разрушают эффективность команды
- 2025-11-26 » Зачем запускать MVP и как сделать это грамотно?
- 2025-11-20 » Половина российских компаний сократит расходы на транспорт и маркетинг в 2026 году
- 2025-11-20 » Перенос сайта с большим количеством ссылок
- 2025-11-20 » Перелинковка сайта: Что такое и как ее использовать
- 2025-11-20 » Критерии выбора SEO-специалиста и подрядчика для продвижения сайта
- 2025-11-20 » Применение искусственного интеллекта в рекламных агентствах: комплексное исследование трендов 2025 года
- 2025-11-19 » Геозапросы по-новому: как покорить локальное SEO с помощью ИИ
- 2025-11-14 » Консалтинг: сущность и ключевые направления
- 2025-11-14 » Онлайн-формы: универсальный инструмент для сбора обратной связи
- 2025-11-14 » Факторы конверсии органического трафика
- 2025-11-14 » Планирование рекламного бюджета: самостоятельный подход
- 2025-11-14 » Авторизация на сайте: как выбрать решение для удержания клиентов и сохранения продаж
- 2025-11-13 » Эффективные методы стимулирования клиентов к оставлению положительных отзывов
- 2025-11-13 » Налоговая реформа — 2026: грядущие изменения для предпринимателей
- 2025-11-13 » Альтернативы мессенджерам: что выбрать вместо Telegram и WhatsApp
- 2025-11-13 » Маркировка рекламы для начинающих: полное руководство по требованиям ЕРИР
- 2025-11-13 » ИИ не отберет вашу работу — её займет специалист, владеющий искусственным интеллектом
- 2025-10-29 » Как оценить эффективность работы SEO-специалиста: практическое руководство для маркетологов и владельцев бизнеса
- 2025-10-29 » Киберспорт как маркетинговый инструмент: стратегии привлечения геймеров
- 2025-10-29 » Как говорить с аудиторией о сложном
- 2025-10-29 » Что такое доказательства с нулевым разглашением (ZKP) и их роль в блокчейне
Мудрость приносит следующие три плода: дар хорошо мыслить, хорошо говорить и хорошо поступать Демокрит - (около 460 до н.э.- около 360 до н.э.) - древнегреческий философ |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.



Мы создаем практически любые сайты от продающих страниц до сложных, высоконагруженных и нестандартных веб приложений! Наши сайты это надежные маркетинговые инструменты для успеха Вашего бизнеса и увеличения вашей прибыли! Мы делаем красивые и максимально эффектные сайты по доступным ценам уже много лет!
Комплексный подход это не просто продвижение сайта, это целый комплекс мероприятий, который определяется целями и задачами поставленными перед сайтом и организацией, которая за этим стоит. Время однобоких методов в продвижении сайтов уже прошло, конкуренция слишком высока, чтобы была возможность расслабиться и получать \ удерживать клиентов из Интернета, просто сделав сайт и не занимаясь им...
Мы оказываем полный комплекс услуг по сопровождению сайта: информационному и техническому обслуживанию и развитию Интернет сайтов.
Контекстная реклама - это эффективный инструмент в интернет маркетинге, целью которого является увеличение продаж. Главный плюс контекстной рекламы заключается в том, что она работает избирательно.