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

Wdrażanie MySQL Galera Cluster 4.0 na Amazon AWS EC2

Galera Cluster to jedno z najpopularniejszych rozwiązań wysokiej dostępności dla MySQL. Jest to wirtualnie synchroniczny klaster, który pomaga kontrolować opóźnienie replikacji. Dzięki kontroli przepływu klaster Galera może sam się dławić i umożliwiać większej liczbie obciążonych węzłów nadrobienie zaległości w stosunku do reszty klastra. Niedawne wydanie Galery 4 przyniosło nowe funkcje i ulepszenia. Omówiliśmy je w poście na blogu dotyczącym MariaDB 10.4 Galera Cluster oraz w poście na blogu omawiającym istniejące i nadchodzące funkcje Galera 4.

Jak wygląda taryfa Galera 4 używana w Amazon EC2? Jak zapewne wiesz, Amazon oferuje usługi relacyjnej bazy danych, które mają na celu zapewnienie użytkownikom łatwego sposobu wdrażania wysoce dostępnej bazy danych MySQL. Mój kolega, Ashraf Sharif, porównał w swoim poście na blogu czasy przełączania awaryjnego dla RDS MySQL i RDS Aurora. Czasy przełączania awaryjnego dla Aurory wyglądają naprawdę świetnie, ale są pewne ale. Przede wszystkim jesteś zmuszony do korzystania z RDS. Nie możesz wdrożyć Aurory w instancjach, którymi zarządzasz. Jeśli istniejące funkcje i opcje dostępne w Aurorze nie są dla Ciebie wystarczające, nie masz innego wyjścia, jak wdrożyć coś na własną rękę. Tutaj wkracza Galera. Galera, w przeciwieństwie do Aurory, nie jest zastrzeżoną czarną skrzynką. Wręcz przeciwnie, jest to oprogramowanie typu open source, z którego można swobodnie korzystać we wszystkich obsługiwanych środowiskach. Możesz zainstalować Galera Cluster na AWS Elastic Computing Cloud (EC2) i dzięki temu zbudować wysoce dostępne środowisko, w którym przełączanie awaryjne jest niemal natychmiastowe:gdy tylko wykryjesz awarię węzła, możesz ponownie połączyć się z innym węzłem Galera. Jak wdrożyć Galerę 4 w EC2? W tym poście na blogu przyjrzymy się temu i przedstawimy Ci przewodnik krok po kroku pokazujący, jak najprostszy sposób to osiągnąć.

Wdrażanie klastra Galera 4 na EC2

Pierwszym krokiem jest stworzenie środowiska, którego użyjemy dla naszego klastra Galera. Pójdziemy z maszynami wirtualnymi Ubuntu 18.04 LTS.

Na potrzeby tego bloga wybierzemy rozmiar instancji t2.medium Poczta. Powinieneś skalować swoje instancje na podstawie oczekiwanego obciążenia.

Zamierzamy wdrożyć trzy węzły w klastrze. Dlaczego trzy? Prowadzimy blog, który wyjaśnia, w jaki sposób Galera utrzymuje wysoką dostępność.

Zamierzamy skonfigurować pamięć dla tych instancji.

Wybierzemy również odpowiednią grupę bezpieczeństwa dla węzłów. Ponownie, w naszym przypadku grupa bezpieczeństwa jest dość otwarta. Powinieneś upewnić się, że dostęp jest ograniczony tak bardzo, jak to możliwe - tylko węzły, które mają dostęp do baz danych, powinny mieć możliwość łączenia się z nimi.

Na koniec albo wybieramy istniejący klucz, albo tworzymy nowy. Po tym kroku zostaną uruchomione nasze trzy instancje.

Gdy będą gotowe, możemy połączyć się z nimi przez SSH i rozpocząć konfigurację bazy danych.

Zdecydowaliśmy się na konwencję nazewnictwa „węzeł1, węzeł2, węzeł3”, dlatego musieliśmy edytować /etc/hosts na wszystkich węzłach i umieścić je obok ich odpowiednich lokalnych adresów IP. Wprowadziliśmy również zmianę w /etc/hostname, aby używać nowej nazwy dla węzłów. Po wykonaniu tej czynności możemy rozpocząć konfigurowanie naszego klastra Galera. W chwili pisania tego tekstu jedynym dostawcą, który dostarcza wersję GA Galera 4, jest MariaDB z jej 10.4, dlatego zamierzamy używać MariaDB 10.4 dla naszego klastra. Zamierzamy kontynuować instalację, korzystając z sugestii i przewodników ze strony MariaDB.

Wdrażanie klastra MariaDB 10.4 Galera

Zaczniemy od przygotowania repozytoriów:

wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup

bash ./mariadb_repo_setup

Pobraliśmy skrypt przeznaczony do konfiguracji repozytoriów i uruchomiliśmy go, aby upewnić się, że wszystko jest poprawnie skonfigurowane. Skonfigurowano repozytoria tak, aby korzystały z najnowszej wersji MariaDB, która w chwili pisania tego tekstu to 10.4.

[email protected]:~# apt update

Hit:1 http://eu-central-1.ec2.archive.ubuntu.com/ubuntu bionic InRelease

Hit:2 http://eu-central-1.ec2.archive.ubuntu.com/ubuntu bionic-updates InRelease

Hit:3 http://eu-central-1.ec2.archive.ubuntu.com/ubuntu bionic-backports InRelease

Hit:4 http://downloads.mariadb.com/MariaDB/mariadb-10.4/repo/ubuntu bionic InRelease

Ign:5 http://downloads.mariadb.com/MaxScale/2.4/ubuntu bionic InRelease

Hit:6 http://downloads.mariadb.com/Tools/ubuntu bionic InRelease

Hit:7 http://downloads.mariadb.com/MaxScale/2.4/ubuntu bionic Release

Hit:8 http://security.ubuntu.com/ubuntu bionic-security InRelease

Reading package lists... Done

Building dependency tree

Reading state information... Done

4 packages can be upgraded. Run 'apt list --upgradable' to see them.

Jak widać, skonfigurowano repozytoria dla MariaDB 10.4 i MaxScale 2.4. Teraz możemy kontynuować i zainstalować MariaDB. Zrobimy to krok po kroku, węzeł po węźle. MariaDB zapewnia przewodnik, jak zainstalować i skonfigurować klaster.

Musimy zainstalować pakiety:

apt-get install mariadb-server mariadb-client galera-4 mariadb-backup

To polecenie instaluje wszystkie wymagane pakiety do uruchomienia MariaDB 10.4 Galera. MariaDB tworzy zestaw plików konfiguracyjnych. Dodamy nowy, który będzie zawierał wszystkie wymagane ustawienia. Domyślnie będzie on umieszczony na końcu pliku konfiguracyjnego, więc wszystkie poprzednie ustawienia dla ustawionych przez nas zmiennych zostaną nadpisane. Najlepiej byłoby później edytować istniejące pliki konfiguracyjne, aby usunąć ustawienia, które umieściliśmy w galera.cnf, aby uniknąć nieporozumień, w których skonfigurowano dane ustawienie.

[email protected]:~# cat /etc/mysql/conf.d/galera.cnf

[mysqld]

bind-address=10.0.0.103

default_storage_engine=InnoDB

binlog_format=row

innodb_autoinc_lock_mode=2



# Galera cluster configuration

wsrep_on=ON

wsrep_provider=/usr/lib/galera/libgalera_smm.so

wsrep_cluster_address="gcomm://10.0.0.103,10.0.0.130,10.0.0.62"

wsrep_cluster_name="Galera4 cluster"

wsrep_sst_method=mariabackup

wsrep_sst_auth='sstuser:pa55'



# Cluster node configuration

wsrep_node_address="10.0.0.103"

wsrep_node_name="node1"

Gdy konfiguracja jest gotowa, możemy zacząć.

[email protected]:~# galera_new_cluster

Powinno to załadować nowy klaster w pierwszym węźle. Następnie powinniśmy wykonać podobne kroki na pozostałych węzłach:zainstalować wymagane pakiety i skonfigurować je pamiętając, że lokalny adres IP się zmienia, więc musimy odpowiednio zmienić plik galera.cnf.

Gdy pliki konfiguracyjne są gotowe, musimy utworzyć użytkownika, który będzie używany do transferu stanu migawki (SST):

MariaDB [(none)]> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'pa55';

Query OK, 0 rows affected (0.022 sec)

MariaDB [(none)]> GRANT PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';

Query OK, 0 rows affected (0.022 sec)

Powinniśmy to zrobić na pierwszym węźle. Pozostałe węzły dołączą do klastra i otrzymają pełną migawkę stanu, dzięki czemu użytkownik zostanie do nich przeniesiony. Teraz jedyne, co musimy zrobić, to uruchomić pozostałe węzły:

[email protected]:~# service mysql start

[email protected]:~# service mysql start

i sprawdź, czy klaster rzeczywiście został utworzony:

MariaDB [(none)]> show global status like 'wsrep_cluster_size';

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

| Variable_name      | Value |

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

| wsrep_cluster_size | 3     |

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

1 row in set (0.001 sec)

Wszystko w porządku, klaster działa i składa się z trzech węzłów Galera. Udało nam się wdrożyć klaster MariaDB 10.4 Galera na Amazon EC2.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MariaDB CHARACTER_LENGTH() Objaśnienie

  2. Napraw błąd 1064 (42000) podczas korzystania z operatora MINUS w MariaDB

  3. Jak skonfigurować replikację MariaDB 10.3 za pomocą Ansible i Vagrant

  4. Jak działa MID() w MariaDB

  5. POKAŻ TABELE w MariaDB