MySQL Cluster
MySQL Cluster jest rozproszonym systemem zarządzania bazą danych opartym na silniku NDB (Network DataBase) i zaprojektowanym do świadczenia wysokiej dostępności oraz skalowalności w środowiskach o krytycznym obciążeniu. System ten jest częścią rodziny produktów MySQL rozwijanej przez firmę Oracle Corporation po przejęciu Sun Microsystems.
Historia
Pierwsza wersja MySQL Cluster, oznaczona numerem 5.0, została wydana w 2006 roku. Projekt wywodzi się z wcześniejszego rozwiązania NDB Cluster, które pierwotnie powstało w ramach firmy MySQL AB. Po przejęciu MySQL przez Oracle, technologia ta była dalej rozwijana i zintegrowana z ekosystemem MySQL, zyskując wsparcie zarówno w wersjach komercyjnych, jak i open‑source.
Architektura
MySQL Cluster opiera się na trzech podstawowych typach węzłów:
- Data Nodes (węzły danych) – przechowują rzeczywiste dane w rozproszonym formacie tabel NDB. Dane są replikowane pomiędzy węzłami w trybie synchronicznym, co zapewnia wysoką dostępność.
- SQL Nodes (węzły SQL) – udostępniają interfejs MySQL (protokoły
mysqld) do obsługi zapytań SQL. Dzięki temu aplikacje mogą korzystać ze standardowego API MySQL, nie wiedząc o rozproszonej naturze bazy. - Management Nodes (węzły zarządzania) – koordynują konfigurację klastra, monitorują jego stan i zarządzają podziałem danych (partitioning) oraz replikacją.
Komunikacja pomiędzy węzłami odbywa się przy użyciu protokołów własnych NDB oraz protokołu TCP/IP. Dzięki temu możliwe jest rozproszenie klastra zarówno w jednej fizycznej lokalizacji (np. w CentOS lub RHEL), jak i w wielu centrach danych.
Kluczowe cechy
- Skalowalność horyzontalna
- Możliwość dodawania kolejnych węzłów danych i SQL bez przerywania pracy systemu.
- Wysoka dostępność
- Replikacja synchroniczna zapewnia, że w przypadku awarii jednego węzła, pozostałe przejmują jego zadania natychmiast.
- Niskie opóźnienia
- Silnik NDB jest zoptymalizowany pod kątem operacji odczytu i zapisu w czasie rzeczywistym, co czyni go odpowiednim dla aplikacji o krytycznych wymaganiach czasowych, np. telekomunikacji czy e‑commerce.
- Rozproszony dostęp do danych
- Dane są automatycznie partycjonowane i przydzielane do węzłów danych w oparciu o klucz partycjonowania.
- Elastyczność przechowywania
- Wspiera zarówno pamięć RAM (dla szybkiego dostępu), jak i dyski twarde (dla trwałości).
Porównanie z innymi silnikami
| Cecha | MySQL Cluster (NDB) | InnoDB | PostgreSQL | MongoDB |
|---|---|---|---|---|
| Model danych | Relacyjny (SQL) + klucz‑wartość | Relacyjny (SQL) | Relacyjny (SQL) | Dokument‑orientowany |
| Skalowanie horyzontalne | Tak (rozproszony klaster) | Ograniczone (sharding w wersji komercyjnej) | Tak (rozszerzenia, np. Citus) | Tak (sharding natywny) |
| Wysoka dostępność | Replikacja synchroniczna | Replikacja asynchroniczna | Replikacja asynchroniczna / fizyczna | Replikacja asynchroniczna |
| Obsługa transakcji | ACID (w granicach węzła danych) | Pełny ACID | Pełny ACID | Ograniczona (multi‑document) |
| Opóźnienia | Milisekundy w RAM, wyższe przy dysku | Średnie | Średnie | Zmienna |
Zastosowania
MySQL Cluster znajduje zastosowanie w sektoraach wymagających nieprzerwanego dostępu do danych oraz bardzo krótkich czasów reakcji:
- Systemy płatności i bankowość elektroniczna
- Platformy telekomunikacyjne i IoT
- Aplikacje mobilne o dużym natężeniu zapytań
- Systemy zarządzania treścią (CMS) w trybie wysokiej dostępności
- Rozproszone gry online (MMO)
Instalacja i konfiguracja
Podstawowy proces wdrożenia MySQL Cluster obejmuje następujące kroki:
- Przygotowanie środowiska Linux (np. CentOS, Ubuntu) oraz instalacja pakietów
ndb-management-server,ndb-mgmd,ndbdimysqld. - Utworzenie pliku konfiguracyjnego
config.inidla węzła zarządzania, w którym definiuje się liczbę węzłów danych, ich adresy IP oraz parametry partycjonowania. - Uruchomienie
ndb_mgmd(management node) i dodanie węzłów danych (ndbd) oraz węzłów SQL (mysqld) do klastra. - Sprawdzenie statusu klastra przy pomocy narzędzia
ndb_mgmoraz weryfikacja dostępności tabel NDB. - Tworzenie tabel z silnikiem
ENGINE=NDBCLUSTERw standardowej konsoli MySQL.
Przykładowa konfiguracja config.ini
[ndb_mgmd]
NodeId=1
HostName=10.0.0.1
[ndbd default]
NoOfReplicas=2
DataMemory=80M
IndexMemory=20M
[ndbd]
NodeId=2
HostName=10.0.0.2
[ndbd]
NodeId=3
HostName=10.0.0.3
[mysqld]
NodeId=4
HostName=10.0.0.4
Bezpieczeństwo
Podobnie jak w klasycznym MySQL, MySQL Cluster wspiera:
- Uwierzytelnianie użytkowników przy użyciu tabel
mysql.userorazmysql.db. - Połączenia szyfrowane TLS pomiędzy klientem a węzłem SQL.
- Kontrolę dostępu na poziomie wiersza (RLS) w ramach silnika NDB od wersji 7.5.
Rozwój i wersje
Obecnie (stan na 2026 rok) najnowszą stabilną wersją jest MySQL Cluster 8.0.35, która wprowadza m.in.:
- Ulepszoną obsługę pamięci nieulotnej (NVMe) w warstwie disk data.
- Nowe narzędzia diagnostyczne
ndb_mgmz interfejsem REST API. - Wsparcie dla Docker i Kubernetes przy użyciu obrazu
mysql/cluster.