MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

Jak wdrożyć klaster MariaDB 10.5 w celu zapewnienia wysokiej dostępności

 

Wdrożenie MariaDB Cluster 10.5 jest obsługiwane w ClusterControl od wersji 1.8.1.

MariaDB 10.5 jest wyposażony w:

  • Więcej szczegółowych uprawnień

  • Ulepszenia wydajności InnoDB

  • Pełna obsługa GTID dla klastra Galera

  • Więcej metadanych do replikacji i dzienników binarnych

  • Więcej instrukcji składni SQL (instrukcja RETURNING do INSERT, EXCEPT ALL i INTERSECT ALL, …)

  • Aktualizacje schematu wydajności w celu dopasowania do MySQL 5.7

  • Silnik pamięci masowej S3

Możesz sprawdzić więcej na naszym poprzednim blogu 

Aby uzyskać więcej informacji na temat tej konkretnej wersji, zobacz, co nowego w MariaDB 10.5? Niektóre z najważniejszych zmian w wersji 10.4 do 10.5 to:

  • Spójność GTID

  • Niespójność klastra/głosowanie błędów 

  • nieblokujące operacje DDL (dostępne tylko w wersji Enterprise)

  • Czarna skrzynka (dostępna tylko w wersji Enterprise) 

  • Zaktualizował swoją bibliotekę Galera wsrep, której najnowszą wersją jest 26.4.6

Początkowo w tym wydaniu oczekiwano obsługi transakcji XA (nie mylić, ponieważ transakcje XA są obsługiwane przez serwer MariaDB, ale nie przez klaster Galera). Jednak ze względu na pewne konsekwencje dla wydajności, MariaDB Galera Cluster nie obsługuje transakcji XA.

W tym blogu omówimy, jak wdrożyć MariaDB Cluster 10.5 w celu zapewnienia wysokiej dostępności.

Klaster MariaDB zapewniający wysoką dostępność

Klaster MariaDB to zasadniczo klaster Galera, który wykorzystuje implementację MariaDB jako warstwę bazy danych do interfejsu z silnikiem InnoDB lub XtraDB. MariaDB Galera Cluster to wirtualnie synchroniczny klaster z wieloma wzorcami dla MariaDB. Jest dostępny tylko w systemie Linux i obsługuje silniki pamięci masowej XtraDB/InnoDB (chociaż istnieje eksperymentalna obsługa MyISAM — zobacz zmienną systemową wsrep_replicate_myisam). W przypadku korzystania z Galera Cluster odczyty i zapisy bazy danych mogą być kierowane do dowolnego węzła. Każdy pojedynczy węzeł może zostać utracony bez przerw w działaniu i bez stosowania złożonych procedur przełączania awaryjnego.

Dzięki charakterowi Galera dostosowanemu do klastra MariaDB jest to rozwiązanie o wysokiej dostępności z replikacją synchroniczną, przełączaniem awaryjnym i ponowną synchronizacją. Przynosi korzyści w postaci braku utraty danych, opóźnień, skalowalności odczytu i zapisu oraz wysokiej dostępności w różnych centrach danych.

Wdrażanie klastra MariaDB 10.5

MariaDB zapewnia prostą i łatwą konfigurację instalacji klastra MariaDB 10.5. Proces ręczny może być żmudny, ale dzięki zautomatyzowanym skryptom udostępnianym przez MariaDB repozytoria można skonfigurować zgodnie z docelową wersją bazy danych, typem systemu operacyjnego i wersją systemu operacyjnego.

W tym ćwiczeniu mam następującą konfigurację 3-węzłowego klastra Galera z następującymi adresami IP:192.168.40.210, 192.168.40.220, 192.168.40.230.

Skonfiguruj swoje repozytorium

Jak wspomniano wcześniej, MariaDB ma skrypt o nazwie mariadb_repo_setup i jest łatwy w użyciu. Możesz określić docelową wersję bazy danych, typ systemu operacyjnego i wersję systemu operacyjnego.

Na przykład instaluję za pomocą EL 8:

curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup |  sudo bash -s -- --mariadb-server-version="mariadb-10.5" --os-type=rhel --os-version=8

lub zainstalowanie go w Ubuntu Focal Fossa,

curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup |  sudo bash -s -- --mariadb-server-version="mariadb-10.5" --os-type=ubuntu --os-version=focal

Pamiętaj, że gdy używasz skryptu mariadb_repo_setup, wymaga on pakietu apt-transport-https jako zależności. Więc najpierw zainstaluj ten pakiet, zanim będziesz mógł skorzystać ze skryptu mariadb_repo_setup.

apt update

apt install apt-transport-https

Teraz uruchom polecenie dla swoich trzech węzłów zgodnie z ich systemem operacyjnym. Oczywiście wersja MariaDB musi być 10.5.

Ustaw konfigurację MySQL

Plik konfiguracyjny zależy od zasobów serwera, typu środowiska serwera i przypisanego adresu IP. W tym blogu możesz użyć tej gotowej do produkcji konfiguracji konfiguracji MariaDB Cluster/PXC, której użyliśmy do wdrożenia w naszych bazach danych Percona XtraDB Cluster/MariaDB Cluster przy użyciu ClusterControl. Warte uwagi zmienne, których potrzebujesz lub które mogą ulec zmianie, to:

  • innodb_buffer_pool_size — Ustaw pulę buforów na 70% - 80% dostępnej pamięci RAM serwera

  • wsrep_provider — Ścieżka skompilowanej biblioteki Galera. W przypadku Enterprise Linux ścieżka powinna wyglądać tak:/usr/lib64/galera-4/libgalera_smm.so. Podczas gdy Debian/Ubuntu znajduje się w /usr/lib/galera/libgalera_smm.so.

  • wsrep_node_address — To jest adres IP węzła

  • wsrep_sst_method — Możesz to zmienić, ale zalecamy użycie mariabackup. Możliwe wartości to rsync, mysqldump, xtrabackup, xtrabackup-v2, mariabackup.

  • wsrep_cluster_name — nazwa klastra MariaDB. Musi być identyczny dla wszystkich twoich węzłów w jednym klastrze MariaDB.

  • wsrep_cluster_address — Zawiera adresy węzłów w klastrze. Musi to być prawidłowy adres IP, nazwa hosta lub FQDN.

  • wsrep_node_name — Nazwa węzła. Nazwa może być używana w wsrep_sst_donor jako preferowany dawca. Pamiętaj, że wiele węzłów w klastrze może mieć tę samą nazwę.

W przypadku wykonywania SST użytkownik i hasło w następujących sekcjach [mysqldump], [xtrabackup] i [mysqld] mogą zostać zmienione, jeśli chcesz. W tym ćwiczeniu zachowajmy prostotę i możesz po prostu pozwolić, aby wartości były takie, jakie są.

Teraz skopiuj plik konfiguracyjny i umieść go w /etc/my.cnf. Zrób to dla wszystkich swoich trzech węzłów Galera.

Instalowanie wymaganych pakietów

Zainstaluj pakiety dla wszystkich trzech węzłów Galera. Wykonaj poniższe polecenie w zależności od docelowego środowiska systemu operacyjnego.

Dla RHEL/Rocky/AlmaLinux:

sudo yum install MariaDB-server MariaDB-client galera-4 MariaDB-backup

Dla Debiana/Ubuntu:

sudo apt update

sudo apt-get install mariadb-server galera-4 mariadb-client libmariadb3 mariadb-backup mariadb-common

Po zakończeniu instalacji zatrzymaj proces MariaDB i zainicjuj klaster jako pojedynczy węzeł. To powinno załadować twój klaster Galera. Na tym etapie uruchamiam go na węźle 192.168.40.210.

$ /usr/bin/galera_new_cluster

Utwórz użytkownika SST/IST

Utwórz użytkownika kopii zapasowej, który będzie używany do SST lub IST. Poniższe instrukcje SQL należy uruchamiać tylko w pierwszym węźle, w którym zainicjowano klaster. Na tym etapie wykonałem go w węźle 192.168.40.210.

CREATE USER [email protected] IDENTIFIED BY 'backuppassword';

GRANT PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'backupuser'@'localhost';

W tym momencie jesteśmy już skonfigurowani i gotowi do podłączenia pozostałych węzłów.

Uruchom serwer MariaDB

Teraz mamy już skonfigurowany pierwszy węzeł. Jesteśmy gotowi do podłączenia pozostałych węzłów. Po prostu uruchom usługę MariaDB. Po prostu uruchom poniższe polecenie:

systemctl start mariadb

Uruchom polecenie dla pozostałych węzłów pojedynczo. W tym momencie wszystkie węzły są zsynchronizowane.

Dodawanie sterydów do klastra MariaDB 10.5 w celu zapewnienia wysokiej dostępności

Prawdopodobnie wdrożenie MariaDB Cluster 10.5 w celu zapewnienia wysokiej dostępności może nie wystarczyć w przypadku konfiguracji produkcyjnej. Dodanie większej liczby sterydów, na przykład zainstalowanie HAProxy razem z Keepalved w celu zapewnienia nadmiarowości, przyniesie większą dostępność w środowisku bazy danych.

Skonfigurowanie HAProxy i Keepalive w celu uzyskania pożądanej topologii i środowiska może być bardziej kłopotliwe. Możesz to jednak zautomatyzować za pomocą ClusterControl. Korzystając z ClusterControl, możesz wdrożyć swój klaster MariaDB 10.5 i dodać więcej rozwiązań do równoważenia obciążenia, takich jak ProxySQL, MaxScale lub garbd. Możesz dodać Keepalived do swojego klastra, aby dodać rozwiązania nadmiarowości i automatycznego przełączania awaryjnego w przypadku awarii.

Możesz pobrać bezpłatną wersję próbną ClusterControl, która umożliwi wdrożenie tych rozwiązań HA i zarządzanie całą operacją bazy danych z jednego okienka. Omówimy, jak wdrożyć klaster MariaDB 10.5 za pomocą ClusterControl.

Wdrażanie klastra MariaDB 10.5 z ClusterControl

Po zainstalowaniu ClusterControl kliknij ikonę w prawym górnym rogu, a zobaczysz kreatora wdrażania, tak jak poniżej.

Możesz to łatwo skonfigurować. Wystarczy wykonać serię kroków w oparciu o przepływ interfejsu użytkownika.

Wdróż HAProxy do zarządzania równoważeniem obciążenia

W tym momencie zakładam, że masz już skonfigurowany klaster MariaDB 10.5. Teraz zainstalujmy HAProxy:

Alternatywnie możesz przejść do Zarządzaj → Load Balancer → HAProxy.

Następnie wybierz lub wpisz adres, pod którym ma zostać zainstalowany HAProxy i wybierz węzły Galera, które będą monitorowane przez HAProxy. Zobacz przykład poniżej:

Dodaj co najmniej dwa wdrożenia HAProxy, aby zwiększyć dostępność. Za każdym razem, gdy jeden z twoich HAProxy ulegnie awarii, twoja aplikacja przekieruje się do innego węzła, który jest nadal dostępny lub online. Jest to bardzo ważne, zwłaszcza podczas obsługi aktualizacji bazy danych lub systemu, poza zdarzeniami katastroficznymi lub katastrofami.

Wdróż funkcję podtrzymania aktywności

W celu wdrożenia Keepalive użyjesz tego samego procesu, jak pokazano poniżej:

Jeśli zauważyłeś, mam dwie instancje HAProxy, dla których zainstaluję Keepalived , który powinien być obecny w każdym węźle, w którym działa HAProxy.

Finalizowanie klastra MariaDB 10.5 z wysoką dostępnością

Teraz, gdy mamy już wszystko skonfigurowane, powinieneś mieć środowisko, które wygląda tak:

Zawijanie

Ta konfiguracja klastra MariaDB 10.5 daje korzyści w postaci osiągnięcia wysokiej dostępności przy użyciu kilku dziewiątek. HAProxy zapewnia więcej możliwości równoważenia obciążenia dzięki separacji odczytu i zapisu, a Keepalived zapewnia, że ​​w przypadku śmierci jednego z twoich HAProxy przełączy się w tryb failover do następnego dostępnego węzła. Twoja aplikacja połączy się tylko z wirtualnym adresem IP (który jest zgodny z VRRP) i nie będzie wymagała dodatkowej konfiguracji ani konfiguracji.

Aby dodać jeszcze większą elastyczność i separację odczytu/zapisu, grając tylko w jednym porcie, możesz zastąpić HAProxy ProxySQL. Osiągnięcie idealnej konfiguracji zapewniającej wysoką dostępność może być trudne, a każda z nich ma swoje wady. Jednak najważniejsze jest to, że osiągnięto niski lub zerowy czas przestoju.

Aby uzyskać więcej wskazówek na temat tworzenia wysoce dostępnej konfiguracji MariaDB, zapoznaj się z tym artykułem na temat wdrażania replikacji MariaDB.

Jeśli chcesz być na bieżąco z trendami i najlepszymi praktykami dotyczącymi baz danych, zasubskrybuj nasz biuletyn i śledź nas na Twitterze i LinkedIn.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak działa IFNULL() w MariaDB

  2. Jak działa funkcja LOCATE() w MariaDB

  3. Automatyzacja baz danych za pomocą Puppet:wdrażanie klastra MySQL i MariaDB Galera

  4. Jak wykonać operację powrotu po awarii dla konfiguracji replikacji MySQL

  5. Nowe zarządzanie użytkownikami i LDAP w ClusterControl 1.8.2