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

Jak zainstalować i skonfigurować MaxScale dla MariaDB

Istnieją różne powody, dla których warto dodać system równoważenia obciążenia między Twoją aplikacją a bazą danych. Jeśli masz duży ruch (i chcesz zrównoważyć ruch między różnymi węzłami bazy danych) lub chcesz użyć load balancera jako pojedynczego punktu końcowego (więc w przypadku awarii, ten load balancer poradzi sobie z tym problemem wysyłając ruch do dostępny/zdrowy węzeł.) Może się również zdarzyć, że chcesz używać różnych portów do zapisywania i odczytywania danych z bazy danych.

We wszystkich tych przypadkach system równoważenia obciążenia będzie przydatny, a jeśli masz klaster MariaDB, jedną z opcji jest użycie MaxScale, który jest serwerem proxy dla baz danych MariaDB.

W tym blogu pokażemy, jak zainstalować i skonfigurować go ręcznie oraz jak ClusterControl może pomóc w tym zadaniu. W tym przykładzie użyjemy klastra replikacji MariaDB z 1 węzłem głównym i 1 węzłem podrzędnym oraz CentOS8 jako systemem operacyjnym.

Jak zainstalować MaxScale

Założymy, że masz uruchomioną i uruchomioną bazę danych MariaDB, a także maszynę (wirtualną lub fizyczną) do zainstalowania MaxScale. Zalecamy użycie innego hosta, więc w przypadku awarii mastera, MaxScale może przełączyć się awaryjnie na węzeł podrzędny, w przeciwnym razie MaxScale nie może podjąć żadnych działań, jeśli serwer, na którym działa, przestanie działać.

Istnieją różne sposoby instalacji MaxScale, w tym przypadku użyjemy repozytoriów MariaDB. Aby dodać go do serwera MaxScale, musisz uruchomić:

$ curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash

[info] Repository file successfully written to /etc/yum.repos.d/mariadb.repo

[info] Adding trusted package signing keys...

[info] Successfully added trusted package signing keys

Teraz zainstaluj pakiet MaxScale:

$ yum install maxscale

Teraz masz już zainstalowany węzeł MaxScale, przed rozpoczęciem musisz go skonfigurować.

Jak skonfigurować MaxScale

Ponieważ MaxScale wykonuje zadania, takie jak uwierzytelnianie, monitorowanie i inne, musisz utworzyć użytkownika bazy danych z określonymi uprawnieniami:

MariaDB [(none)]> CREATE USER 'maxscaleuser'@'%' IDENTIFIED BY 'maxscalepassword';

MariaDB [(none)]> GRANT SELECT ON mysql.user TO 'maxscaleuser'@'%';

MariaDB [(none)]> GRANT SELECT ON mysql.db TO 'maxscaleuser'@'%';

MariaDB [(none)]> GRANT SELECT ON mysql.tables_priv TO 'maxscaleuser'@'%';

MariaDB [(none)]> GRANT SELECT ON mysql.roles_mapping TO 'maxscaleuser'@'%';

MariaDB [(none)]> GRANT SHOW DATABASES ON *.* TO 'maxscaleuser'@'%';

MariaDB [(none)]> GRANT REPLICATION CLIENT on *.* to 'maxscaleuser'@'%';

Pamiętaj, że MariaDB w wersjach od 10.2.2 do 10.2.10 wymaga również:

MariaDB [(none)]> GRANT SELECT ON mysql.* TO 'maxscaleuser'@'%';

Teraz masz już gotowego użytkownika bazy danych, zobaczmy pliki konfiguracyjne. Podczas instalacji MaxScale plik maxscale.cnf zostanie utworzony w katalogu /etc/. Istnieje kilka zmiennych i różne sposoby konfiguracji, więc zobaczmy przykład:

$ cat  /etc/maxscale.cnf 

# Global parameters

[maxscale]

threads = auto

log_augmentation = 1

ms_timestamp = 1

syslog = 1



# Server definitions

[server1]

type=server

address=192.168.100.126

port=3306

protocol=MariaDBBackend

[server2]

type=server

address=192.168.100.127

port=3306

protocol=MariaDBBackend



# Monitor for the servers

[MariaDB-Monitor]

type=monitor

module=mariadbmon

servers=server1,server2

user=maxscaleuser

password=maxscalepassword

monitor_interval=2000



# Service definitions

[Read-Only-Service]

type=service

router=readconnroute

servers=server2

user=maxscaleuser

password=maxscalepassword

router_options=slave

[Read-Write-Service]

type=service

router=readwritesplit

servers=server1

user=maxscaleuser

password=maxscalepassword



# Listener definitions for the services

[Read-Only-Listener]

type=listener

service=Read-Only-Service

protocol=MariaDBClient

port=4008

[Read-Write-Listener]

type=listener

service=Read-Write-Service

protocol=MariaDBClient

port=4006

W tej konfiguracji mamy 2 węzły bazy danych, 192.168.100.126 (Master) i 192.168.100.127 (Slave), jak widać w sekcji Servers Definition.

Mamy również 2 różne usługi, jedną tylko do odczytu, gdzie znajduje się węzeł podrzędny, a drugą do odczytu i zapisu, gdzie znajduje się węzeł główny.

Nareszcie mamy 2 słuchaczy, po jednym dla każdej usługi. Odbiornik tylko do odczytu, nasłuchujący na porcie 4008 i odczyt-zapis, nasłuchujący na porcie 4006.

To jest podstawowy plik konfiguracyjny. Jeśli potrzebujesz czegoś bardziej szczegółowego, możesz zapoznać się z oficjalną dokumentacją MariaDB.

Teraz możesz go uruchomić, więc po prostu uruchom:

$ systemctl start maxscale.service

I sprawdź to:

$ maxctrl list services
ff
$ maxctrl list servers

Listę poleceń maxctrl można znaleźć tutaj lub nawet użyć maxadmin aby nim zarządzać.

Teraz przetestujmy połączenie. W tym celu możesz spróbować uzyskać dostęp do bazy danych za pomocą adresu IP MaxScale i portu, który chcesz przetestować. W naszym przypadku ruch na porcie 4006 powinien być przesłany do serwera 1, a ruch na porcie 4008 do serwera2.

$ mysql -h 192.168.100.128 -umaxscaleuser -pmaxscalepassword -P4006 -e 'SELECT @@hostname;'

+------------+

| @@hostname |

+------------+

| server1   |

+------------+

$ mysql -h 192.168.100.128 -umaxscaleuser -pmaxscalepassword -P4008 -e 'SELECT @@hostname;'

+------------+

| @@hostname |

+------------+

| server2   |

+------------+

To działa!

Jak wdrożyć MaxScale z ClusterControl

Zobaczmy teraz, jak można użyć ClusterControl, aby uprościć to zadanie. W tym celu założymy, że masz klaster MariaDB dodany do ClusterControl.

Przejdź do ClusterControl -> Wybierz klaster MariaDB -> Akcje klastra -> Dodaj Load Balancer -> MaxScale.

Tutaj możesz wdrożyć nowy węzeł MaxScale lub zaimportować istniejący jeden. Jeśli go wdrażasz, musisz dodać adres IP lub nazwę hosta, poświadczenia administratora i użytkownika MaxScale, liczbę wątków i porty (tylko do zapisu i odczytu). Możesz również określić, który węzeł bazy danych chcesz dodać do konfiguracji MaxScale.

Możesz monitorować zadanie w sekcji ClusterControl Activity. Po zakończeniu będziesz mieć nowy węzeł MaxScale w swoim klastrze MariaDB.

I uruchamianie poleceń MaxScale z interfejsu ClusterControl bez konieczności uzyskiwania dostępu do serwer przez SSH.

Wygląda na prostsze niż ręczne wdrażanie, prawda?

Wnioski

Posiadanie Load Balancer jest dobrym rozwiązaniem, jeśli chcesz zrównoważyć lub podzielić ruch, a nawet wykonać akcje awaryjne, a MaxScale, jako produkt MariaDB, jest dobrą opcją dla baz danych MariaDB.

Instalacja jest łatwa, ale konfiguracja i użytkowanie mogą być trudne, jeśli jest to dla Ciebie coś nowego. W takim przypadku możesz użyć ClusterControl, aby wdrożyć, skonfigurować i zarządzać nim w łatwiejszy sposób.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konwertuj wyniki zapytania na listę rozdzielaną przecinkami w MariaDB

  2. Jak działa POKAŻ ZESTAW ZNAKÓW w MariaDB

  3. Jak zidentyfikować problemy z wydajnością MySQL za pomocą powolnych zapytań

  4. Kopie zapasowe baz danych — porównanie MariaDB Mariabackup i Percona Xtrabackup

  5. Uruchamianie zapytań analizy Big Data przy użyciu SQL i Presto