MariaDB Server i MariaDB Cluster to produkty typu open source obsługiwane przez firmę MariaDB Corporation. MariaDB Server to jedna z najpopularniejszych relacyjnych baz danych, pierwotnie została rozwinięta z serwera MySQL.
MariaDB Cluster to rozwiązanie o wysokiej dostępności zbudowane na bazie MariaDB Server, które wykorzystuje bibliotekę wsrep Galera Cluster do synchronizacji danych między węzłami. Metoda replikacji Galery jest synchroniczna (lub „wirtualnie synchroniczna”), zapewniając, że dane będą takie same na wszystkich węzłach.
Serwer MariaDB może być również wysoce dostępny poprzez standardową replikację. Replikacja może być asynchroniczna lub półsynchroniczna.
Czym więc serwer MariaDB ze standardową replikacją różni się od MariaDB Cluster z Galera Cluster? Na tym blogu porównamy te dwa. Użyjemy ClusterControl, aby zilustrować niektóre różnice.
Architektura serwera MariaDB
Architektura MariaDB Server może być pojedynczą/niezależną instancją lub replikacją typu master/slave, jak pokazano na poniższym diagramie.
Architektura pojedynczego wystąpienia serwera MariaDB Server obejmuje tylko jeden węzeł. Wadą posiadania jednej instancji jest pojedynczy punkt awarii bazy danych. Jeśli twoja baza danych ulegnie awarii i nie zostanie przywrócona, nie masz żadnego mechanizmu przełączania awaryjnego i musisz wykonać przywracanie, aby odzyskać bazę danych z ostatniej kopii zapasowej.
Architektura master/slave to konfiguracja rozproszona, w której master działa jako zapisujący, a slave(y) jako czytnik(i). Korzystając z modułu równoważenia obciążenia, takiego jak Maxscale lub ProxySQL, możesz podzielić ruch bazy danych tak, aby zapisy były wysyłane do urządzenia głównego, a odczyty do urządzenia podrzędnego. Posiadanie konfiguracji replikacji wyeliminuje pojedynczy punkt awarii bazy danych, ale musisz mieć możliwość automatycznego przełączenia awaryjnego w przypadku awarii mastera. W przeciwnym razie aplikacje nie będą mogły zapisywać danych w bazie danych, co będzie miało na nie wpływ. ClusterControl można skonfigurować tak, aby zapewniał automatyczne przełączanie awaryjne i odzyskiwanie replikacji MariaDB.
Architektura klastra MariaDB
Klaster MariaDB to rozwiązanie o wysokiej dostępności składające się z serwera MariaDB i replikacji Galera, jak pokazano na poniższym schemacie architektury:
Jest to replikacja synchroniczna („wirtualnie synchroniczna”), wszystkie węzły są zapisywalne. Replikacja synchroniczna gwarantuje, że jeśli zmiany nastąpią w jednym z węzłów Galera, będą one dostępne na wszystkich pozostałych węzłach w klastrze przed zatwierdzeniem.
Duża różnica polega na tym, że wszystkie węzły są równe z punktu widzenia aplikacji, mogą wysyłać ruch zapisu do dowolnej instancji bazy danych. Ponadto wszystkie węzły powinny mieć dokładnie te same dane, aby nie doszło do utraty danych w przypadku awarii węzła.
Wdrożenie MariaDB
Za pomocą ClusterControl można wdrożyć zarówno MariaDB Replication, jak i MariaDB Cluster. Wdrażając MariaDB Server, musisz zacząć od wybrania MySQL Replication, podczas gdy w przypadku MariaDB Cluster musisz wybrać MySQL Galera.
W przypadku MariaDB Server można wdrożyć jednowęzłową instancję MariaDB lub skonfigurować replikację master/slave i dwukierunkową. Minimalna liczba węzłów w konfiguracji replikacji to dwa, potrzebujesz jednego mastera i co najmniej jednego slave. Wystarczy wypełnić adres IP dla mastera i dodać slave'a (jeśli chcesz mieć architekturę master/slave). Możesz użyć pola Dodaj drugiego wzorca, jeśli chcesz skonfigurować replikację dwukierunkową. Konfiguracja master-master będzie obsługiwana z replikacją dwukierunkową, ale jeden z węzłów zostanie ustawiony jako tylko do odczytu. Powodem jest zminimalizowanie ryzyka dryfu danych i „błędnych transakcji”.
W przypadku klastra MariaDB potrzebne są co najmniej 3 hosty dla docelowych węzłów bazy danych być zainstalowany. Dzieje się tak, ponieważ musi być w stanie poradzić sobie z partycjonowaniem sieci lub zespołem „rozszczepionego mózgu”. Wystarczy wpisać adres IP podczas dodawania węzła podczas definiowania konfiguracji serwerów MySQL.
Nie zapomnij wybrać MariaDB jako dostawcy bazy danych, wersja bazy danych, która chcesz zainstalować i wpisz hasło roota. Możesz także zmienić inny niż domyślny katalog danych na dowolną inną ścieżkę.
Po skonfigurowaniu wszystkich rzeczy wystarczy wdrożyć klaster. Uruchomi to nowe zadanie do wdrożenia bazy danych.
Pamiętaj, że możliwe jest również posiadanie 2 węzłów Galera i jednego arbitra Galera zwanego garbd na trzecim hoście.
Monitorowanie serwerów i klastrów MariaDB
Monitorowanie bazy danych jest krytyczną częścią bazy danych, możesz poznać aktualny stan bazy danych. Różnica między monitorowaniem MariaDB Server a MariaDB Cluster to Galera Metrics do synchronizacji.
W MariaDB Server możesz sprawdzić aktualny stan bazy danych za pomocą metryk MySQL; MySQL Server — ogólne, MySQL Server — pamięci podręczne, dane MySQL InnoDB, które są również widoczne w klastrze MariaDB, jak pokazano poniżej:
Serwer MySQL - Ogólne podaje informacje o aktualnym stanie współczynnika trafień puli buforów InnoDB, połączeniu z bazą danych, zapytaniach, blokowaniu i wykorzystaniu pamięci bazy danych.
Serwer MySQL - Skrytki, w Skrytkach znajduje się wiele informacji. Głównie związane z buforowaniem w bazie danych, np.:wielkość puli buforów, instancja puli buforów. Dostępne są również informacje o wykorzystaniu pamięci podręcznej stołu, współczynniku trafień, trafieniach i chybieniach w pamięci podręcznej. Możesz także znaleźć informacje o wykorzystaniu pamięci podręcznej wątków i współczynniku trafień.
Serwer MySQL - InnoDB Metrics pokazuje metryki związane z przechowywaniem InnoDB, np.:aktywność buforów, operacje InnoDB Row, rozmiar pliku dziennika InnoDB, odczyt/zapis danych InnoDB.
Na MariaDB Server, jeśli skonfigurujesz replikację master/slave, jest jedna podkategoria metryk w ramach MySQL Replication - Master. Dostępne są informacje dotyczące głównego pliku dziennika binarnego, pozycji głównego dziennika binarnego i częstotliwości tworzenia dziennika binarnego.
MariaDB Server zawiera wiele informacji związanych z bazą danych, są one również dostępne dla MariaDB Cluster. Różnica polega na tym, że istnieją dwa pulpity nawigacyjne dla klastra MariaDB — przegląd Galera i wykresy serwera Galera.
Przegląd Galera zawiera informacje dotyczące bieżącego stanu replikacji Galera. Dostępne są informacje takie jak rozmiar klastra, wysłana kontrola przepływu, odebrana kontrola przepływu, wstrzymanie kontroli przepływu.
Wykresy serwera Galera zawierają informacje o nazwie klastra, stanie klastra, rozmiarze i globalnym rozmiarze pamięci podręcznej.
Wnioski
MariaDB Server ze standardową replikacją i MariaDB Cluster nie są tak naprawdę różnymi produktami pod względem obsługi bazy danych, ale mają różne cechy w zależności od wymagań dotyczących dostępności i skalowalności. ClusterControl obsługuje zarówno serwer MariaDB ze standardową replikacją, jak i wdrożenia klastra MariaDB, więc wypróbuj obie konfiguracje i daj nam znać, co myślisz.