MySQL Cluster¶
MySQL Cluster — это распределённая система управления базами данных (СУБД), основанная на архитектуре shared-nothing (без общего доступа к данным), которая обеспечивает высокую доступность, масштабируемость и отказоустойчивость за счёт автоматического разделения данных (шардинга) и репликации между несколькими узлами. MySQL Cluster является частью экосистемы MySQL и реализует механизм хранения NDB (Network Database), предназначенный для работы в режиме реального времени с минимальным временем простоя.
¶Архитектура
MySQL Cluster состоит из трёх типов узлов, каждый из которых выполняет определённую функцию в кластере. Все узлы работают совместно, образуя единую систему, которая может быть развёрнута на нескольких физических или виртуальных серверах.
¶Узлы данных (Data Nodes)
Узлы данных (ndbd) отвечают за хранение и обработку данных. Каждый узел данных хранит только часть данных (фрагмент), что позволяет распределять нагрузку. Данные автоматически реплицируются между узлами данных для обеспечения отказоустойчивости. Количество узлов данных может варьироваться от 2 до 48 в зависимости от версии и конфигурации.
¶Узлы управления (Management Nodes)
Узлы управления (ndb_mgmd) управляют конфигурацией кластера, отслеживают состояние узлов данных и обрабатывают запросы на подключение от клиентов. В кластере может быть один или несколько узлов управления для повышения надёжности.
¶Узлы API (API Nodes)
Узлы API (например, mysqld — сервер MySQL) предоставляют интерфейс для приложений. Они подключаются к узлам данных и выполняют SQL-запросы или запросы через NDB API. Узлы API не хранят данные, а лишь обрабатывают запросы.
¶Ключевые характеристики
¶Высокая доступность
MySQL Cluster обеспечивает 99,999% времени безотказной работы (пять девяток) за счёт автоматического восстановления после сбоев. Если один из узлов данных выходит из строя, его функции берёт на себя другой узел, хранящий реплику данных. Переключение происходит без потери данных и без остановки работы кластера.
¶Масштабируемость
Кластер может масштабироваться горизонтально путём добавления новых узлов данных. Это позволяет увеличивать объём хранимых данных и пропускную способность без перепроектирования системы. MySQL Cluster поддерживает до 48 узлов данных и до 256 узлов API.
¶Производительность
Благодаря распределённой архитектуре и использованию оперативной памяти (In-Memory) для хранения данных, MySQL Cluster обеспечивает низкую задержку (менее 10 миллисекунд) и высокую пропускную способность (до 1 миллиона транзакций в секунду). Данные могут также храниться на диске для экономии памяти.
¶Автоматическое разделение данных (шардинг)
Данные автоматически распределяются по узлам данных на основе хеш-функции от первичного ключа. Это позволяет избежать ручного управления шардами и обеспечивает равномерную нагрузку.
¶История
MySQL Cluster был разработан компанией MySQL AB (позднее приобретённой Sun Microsystems, а затем Oracle Corporation) как решение для телекоммуникационной отрасли, где требовалась высокая доступность и низкая задержка. Первая версия (MySQL Cluster 4.0) была выпущена в 2004 году. С тех пор продукт постоянно развивался:
- 2004 год: выпуск MySQL Cluster 4.0 с поддержкой NDB Cluster 6.x.
- 2008 год: MySQL Cluster 7.0 с улучшенной производительностью и поддержкой до 48 узлов данных.
- 2010 год: MySQL Cluster 7.1 с поддержкой дискового хранения данных.
- 2013 год: MySQL Cluster 7.3 с поддержкой NoSQL API (Memcached, Java, C++).
- 2016 год: MySQL Cluster 7.4 с улучшенной масштабируемостью и поддержкой JSON.
- 2020 год: MySQL Cluster 8.0 с поддержкой нового механизма хранения NDB 8.0.
На сегодняшний день MySQL Cluster используется в телекоммуникациях, финансах, электронной коммерции и других отраслях, где критически важна отказоустойчивость.
¶Применение
¶Телекоммуникации
MySQL Cluster широко применяется в системах управления абонентами (HLR/HSS), биллинговых системах и платформах для передачи сообщений. Например, одна из крупнейших телекоммуникационных компаний мира — Vodafone — использует MySQL Cluster для обработки более 1 миллиарда транзакций в день.
¶Финансовые услуги
В банковском секторе MySQL Cluster используется для обработки транзакций в реальном времени, управления счетами и обеспечения соответствия требованиям ACID (атомарность, согласованность, изоляция, долговечность). Например, PayPal применяет MySQL Cluster для обработки платежей.
¶Электронная коммерция
Крупные интернет-магазины, такие как Alibaba и eBay, используют MySQL Cluster для управления каталогами товаров, корзинами покупок и заказами. Высокая доступность позволяет избежать потери данных при сбоях.
¶Интернет вещей (IoT)
В системах IoT MySQL Cluster используется для сбора и обработки данных с датчиков в реальном времени. Например, платформа Amazon Web Services (AWS) IoT поддерживает MySQL Cluster в качестве одного из вариантов хранения данных.
¶Критика и ограничения
Несмотря на преимущества, MySQL Cluster имеет ряд ограничений:
- Сложность настройки: развёртывание и конфигурирование кластера требует глубоких знаний архитектуры NDB.
- Ограничения на размер данных: максимальный размер базы данных в MySQL Cluster 8.0 составляет 128 ТБ, что меньше, чем у некоторых конкурентов (например, Cassandra или MongoDB).
- Поддержка SQL: не все функции SQL (например, полнотекстовый поиск, пространственные индексы) доступны в MySQL Cluster.
- Требования к оборудованию: для обеспечения высокой производительности требуется использование SSD и быстрых сетевых соединений.
¶Конкуренты
На рынке распределённых СУБД MySQL Cluster конкурирует с такими продуктами, как:
- Cassandra — распределённая NoSQL-СУБД с высокой масштабируемостью.
- MongoDB — документоориентированная NoSQL-СУБД.
- CockroachDB — распределённая SQL-СУБД с поддержкой ACID.
- Galera Cluster — синхронная репликация для MySQL/MariaDB.
¶Интересные факты
- MySQL Cluster поддерживает работу на одном сервере в режиме «single-user» для тестирования.
- В кластере может быть до 4 копий (реплик) каждого фрагмента данных для максимальной надёжности.
- MySQL Cluster используется в системе управления воздушным движением Eurocontrol.
- В 2015 году MySQL Cluster был признан одной из самых быстрых СУБД для телекоммуникационных приложений по версии TM Forum.
¶Источники
- Официальная документация MySQL Cluster (Oracle Corporation)
- «MySQL Cluster: The Definitive Guide» — книга издательства O’Reilly Media
- Статьи на сайте MySQL Performance Blog
- Материалы конференций Percona Live и Oracle OpenWorld
- Технические публикации компаний Vodafone, PayPal, Alibaba
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


