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

Jak automatycznie zarządzać przełączaniem awaryjnym bazy danych MySQL dla Moodle

W naszych poprzednich blogach uzasadniliśmy potrzebę przełączania awaryjnego bazy danych i wyjaśniliśmy, jak działa mechanizm przełączania awaryjnego. Dzielę się tym na wypadek, gdybyś miał pytania, dlaczego powinieneś skonfigurować mechanizm przełączania awaryjnego dla swojej bazy danych MySQL. Jeśli tak, przeczytaj nasze poprzednie posty na blogu.

Jak skonfigurować automatyczne przełączanie awaryjne

Zaletą korzystania z MySQL lub MariaDB do automatycznego zarządzania przełączaniem awaryjnym jest to, że istnieją dostępne narzędzia, które można wykorzystać i wdrożyć w swoim środowisku. Od rozwiązań open source po rozwiązania klasy korporacyjnej. Większość narzędzi umożliwia nie tylko przełączanie awaryjne, ale są też inne funkcje, takie jak przełączanie, monitorowanie i zaawansowane funkcje, które oferują więcej możliwości zarządzania klastrem baz danych MySQL. Poniżej omówimy najpopularniejsze z nich, których możesz użyć.

Korzystanie z MHA (Master High Availability)

Zajęliśmy się tym tematem za pomocą MHA z jego najczęstszymi problemami i sposobami ich naprawy. Porównaliśmy również MHA z MRM lub MaxScale.

Konfiguracja za pomocą MHA w celu zapewnienia wysokiej dostępności może nie być łatwa, ale jest wydajna w użyciu i elastyczna, ponieważ istnieją parametry, które można zdefiniować, aby dostosować przełączanie awaryjne. MHA został przetestowany i używany. Jednak wraz z postępem technologicznym MHA pozostaje w tyle, ponieważ nie obsługuje GTID dla MariaDB i nie wprowadza żadnych aktualizacji przez ostatnie 2 lub 3 lata.

Uruchamiając skrypt masterha_manager, 

masterha_manager --conf=/etc/app1.cnf

Gdzie przykładowy /etc/app1.cnf powinien wyglądać następująco,

[server default]

user=cmon

password=pass

ssh_user=root

# working directory on the manager

manager_workdir=/var/log/masterha/app1

# working directory on MySQL servers

remote_workdir=/var/log/masterha/app1

[server1]

hostname=node1

candidate_master=1

[server2]

hostname=node2

candidate_master=1

[server3]

hostname=node3

no_master=1

Parametry takie jak no_master i Candida_master powinny być kluczowe, gdy ustawiasz białą listę żądanych węzłów jako docelowego mastera i węzłów, których nie chcesz być masterem.

Po ustawieniu jesteś gotowy do przełączenia awaryjnego bazy danych MySQL na wypadek awarii bazy podstawowej lub głównej. Skrypt masterha_manager zarządza przełączaniem awaryjnym (automatycznym lub ręcznym), podejmuje decyzje o tym, kiedy i gdzie przełączać awaryjnie, a także zarządza odzyskiwaniem urządzeń podrzędnych podczas promocji kandydującego wzorca głównego w celu zastosowania dzienników przekaźników różnicowych. W przypadku śmierci głównej bazy danych, Menedżer MHA będzie koordynował współpracę z agentem MHA Node, ponieważ stosuje dzienniki przekaźników różnicowych do urządzeń podrzędnych, które nie mają najnowszych zdarzeń dziennika binarnego z urządzenia głównego.

Sprawdź, co robi agent MHA Node i jakie skrypty są zaangażowane. Zasadniczo jest to skrypt, który Menedżer MHA wywoła, gdy nastąpi przełączenie awaryjne. Będzie czekał na swój mandat od MHA Manager, szukając najnowszego urządzenia podrzędnego, które zawiera zdarzenia binlogu, kopiuje brakujące zdarzenia z urządzenia podrzędnego za pomocą scp i stosuje je do siebie. Jak wspomniano, stosuje logi przekaźnika, czyści logi przekaźnika lub zapisuje logi binarne.

Jeśli chcesz dowiedzieć się więcej o dostrajalnych parametrach i jak dostosować zarządzanie przełączaniem awaryjnym, odwiedź stronę wiki Parametry dla MHA.

Korzystanie z programu Orchestrator

Orchestrator to narzędzie do zarządzania wysoką dostępnością i replikacją MySQL i MariaDB. Został wydany przez Shlomi Noach na warunkach licencji Apache w wersji 2.0. Jest to oprogramowanie typu open source, które obsługuje automatyczne przełączanie awaryjne, ale istnieje mnóstwo rzeczy, które można dostosować lub zrobić, aby zarządzać bazą danych MySQL/MariaDB oprócz odzyskiwania lub automatycznego przełączania awaryjnego.

Instalacja programu Orchestrator może być łatwa lub prosta. Po pobraniu określonych pakietów wymaganych dla środowiska docelowego można przystąpić do zarejestrowania klastra i węzłów w celu monitorowania przez program Orchestrator. Zapewnia interfejs użytkownika, który jest bardzo łatwy w zarządzaniu, ale ma wiele konfigurowalnych parametrów lub zestaw poleceń, których można użyć do zarządzania przełączaniem awaryjnym.

Załóżmy, że w końcu skonfigurowałeś i rejestrację klastra poprzez dodanie naszego węzła podstawowego lub głównego można wykonać za pomocą poniższego polecenia,

$ orchestrator -c discover -i pupnode21:3306

2021-01-07 12:32:31 DEBUG Hostname unresolved yet: pupnode21

2021-01-07 12:32:31 DEBUG Cache hostname resolve pupnode21 as pupnode21

2021-01-07 12:32:31 DEBUG Connected to orchestrator backend: orchestrator:[email protected](127.0.0.1:3306)/orchestrator?timeout=1s

2021-01-07 12:32:31 DEBUG Orchestrator pool SetMaxOpenConns: 128

2021-01-07 12:32:31 DEBUG Initializing orchestrator

2021-01-07 12:32:31 INFO Connecting to backend 127.0.0.1:3306: maxConnections: 128, maxIdleConns: 32

2021-01-07 12:32:31 DEBUG Hostname unresolved yet: 192.168.40.222

2021-01-07 12:32:31 DEBUG Cache hostname resolve 192.168.40.222 as 192.168.40.222

2021-01-07 12:32:31 DEBUG Hostname unresolved yet: 192.168.40.223

2021-01-07 12:32:31 DEBUG Cache hostname resolve 192.168.40.223 as 192.168.40.223

pupnode21:3306

Teraz dodaliśmy nasz klaster.

W przypadku awarii węzła podstawowego (awaria sprzętu lub awaria), program Orchestrator wykryj i znajdź najbardziej zaawansowany węzeł, który ma być promowany jako węzeł główny lub główny.

Teraz w klastrze pozostały dwa węzły, podczas gdy główny jest wyłączony .

$ orchestrator-client -c topology -i pupnode21:3306

pupnode21:3306 [unknown,invalid,10.3.27-MariaDB-log,rw,ROW,>>,downtimed]

$ orchestrator-client -c topology -i pupnode22:3306

pupnode22:3306   [0s,ok,10.3.27-MariaDB-log,rw,ROW,>>]

+ pupnode23:3306 [0s,ok,10.3.27-MariaDB-log,ro,ROW,>>,GTID]

Korzystanie z MaxScale

MariaDB MaxScale jest obsługiwany jako system równoważenia obciążenia bazy danych. Z biegiem lat MaxScale rozrósł się i dojrzał, wzbogacony o kilka bogatych funkcji, w tym automatyczne przełączanie awaryjne. Od czasu wydania MariaDB MaxScale 2.2 wprowadzono kilka nowych funkcji, w tym zarządzanie trybem failover klastra replikacji. Możesz przeczytać nasz poprzedni blog dotyczący mechanizmu przełączania awaryjnego MaxScale.

Korzystanie z MaxScale jest objęte BSL, chociaż oprogramowanie jest dostępne bezpłatnie, ale wymaga przynajmniej wykupienia usługi w MariaDB. Może to nie być odpowiednie, ale w przypadku nabycia usług korporacyjnych MariaDB może to być wielką zaletą, jeśli potrzebujesz zarządzania awaryjnego i innych jego funkcji.

Instalacja MaxScale jest łatwa, ale ustawienie wymaganej konfiguracji i zdefiniowanie jej parametrów nie jest i wymaga zrozumienia oprogramowania. Możesz zapoznać się z ich przewodnikiem konfiguracji.

W celu szybkiego i szybkiego wdrożenia możesz użyć ClusterControl, aby zainstalować MaxScale w istniejącym środowisku MySQL/MariaDB.

Po zainstalowaniu można skonfigurować bazę danych Moodle, wskazując hostowi adres IP lub nazwę hosta MaxScale oraz port do odczytu i zapisu. Na przykład

Dla którego portu 4008 jest twój odczyt i zapis dla programu nasłuchującego usługi. Na przykład, oto następująca konfiguracja usługi i odbiornika dla mojej MaxScale.

$ cat maxscale.cnf.d/rw-listener.cnf

[rw-listener]

type=listener

protocol=mariadbclient

service=rw-service

address=0.0.0.0

port=4008

authenticator=MySQLAuth



$ cat maxscale.cnf.d/rw-service.cnf

[rw-service]

type=service

servers=DB_123,DB_122,DB_124

router=readwritesplit

user=maxscale_adm

password=42BBD2A4DC1BF9BE05C41A71DEEBDB70

max_slave_connections=100%

max_sescmd_history=15000000

causal_reads=true

causal_reads_timeout=10

transaction_replay=true

transaction_replay_max_size=32Mi

delayed_retry=true

master_reconnection=true

max_connections=0

connection_timeout=0

use_sql_variables_in=master

master_accept_reads=true

disable_sescmd_history=false

Podczas konfiguracji monitora nie możesz zapomnieć o włączeniu automatycznego przełączania awaryjnego lub włączeniu automatycznego ponownego dołączania, jeśli chcesz, aby poprzedni system główny nie dołączył automatycznie po powrocie do trybu online. To wygląda tak,

$ egrep -r 'auto|^\['  maxscale.cnf.d/replication_monitor.cnf

[replication_monitor]

auto_failover=true

auto_rejoin=1

Pamiętaj, że podane przeze mnie zmienne nie są przeznaczone do użytku produkcyjnego, ale tylko do tego wpisu na blogu i do celów testowych. Dobrą rzeczą w MaxScale jest to, że gdy główny lub mistrz przestanie działać, MaxScale jest wystarczająco sprytny, aby promować idealnego lub najlepszego kandydata do objęcia roli mistrza. W związku z tym nie ma potrzeby zmiany adresu IP i portu, ponieważ użyliśmy hosta/IP naszego węzła MaxScale i jego portu jako naszego punktu końcowego po awarii urządzenia głównego. Na przykład

[192.168.40.223:6603] MaxScale> list servers



┌────────┬────────────────┬──────┬─────────────┬─────────────────┬──────────────────────────┐

│ Server │ Address        │ Port │ Connections │ State           │ GTID                     │

├────────┼────────────────┼──────┼─────────────┼─────────────────┼──────────────────────────┤

│ DB_124 │ 192.168.40.223 │ 3306 │ 0           │ Slave, Running  │ 3-2003-876,5-2001-219541 │

├────────┼────────────────┼──────┼─────────────┼─────────────────┼──────────────────────────┤

│ DB_123 │ 192.168.40.221 │ 3306 │ 0           │ Master, Running │ 3-2003-876,5-2001-219541 │

├────────┼────────────────┼──────┼─────────────┼─────────────────┼──────────────────────────┤

│ DB_122 │ 192.168.40.222 │ 3306 │ 0           │ Slave, Running  │ 3-2003-876,5-2001-219541 │

└────────┴────────────────┴──────┴─────────────┴─────────────────┴──────────────────────────┘

Węzeł DB_123 wskazujący na 192.168.40.221 jest bieżącym masterem. Zakończenie węzła DB_123 spowoduje, że MaxScale wykona przełączenie awaryjne i będzie to wyglądać tak,

[192.168.40.223:6603] MaxScale> list servers



┌────────┬────────────────┬──────┬─────────────┬─────────────────┬──────────────────────────┐

│ Server │ Address        │ Port │ Connections │ State           │ GTID                     │

├────────┼────────────────┼──────┼─────────────┼─────────────────┼──────────────────────────┤

│ DB_124 │ 192.168.40.223 │ 3306 │ 0           │ Slave, Running  │ 3-2003-876,5-2001-219541 │

├────────┼────────────────┼──────┼─────────────┼─────────────────┼──────────────────────────┤

│ DB_123 │ 192.168.40.221 │ 3306 │ 0           │ Down            │ 3-2003-876,5-2001-219541 │

├────────┼────────────────┼──────┼─────────────┼─────────────────┼──────────────────────────┤

│ DB_122 │ 192.168.40.222 │ 3306 │ 0           │ Master, Running │ 3-2003-876,5-2001-219541 │

└────────┴────────────────┴──────┴─────────────┴─────────────────┴──────────────────────────┘

Chociaż nasza baza danych Moodle wciąż działa, ponieważ nasz MaxScale wskazuje na najnowszy master, który był promowany.

$ mysql -hmaxscale.local.domain -umoodleuser -pmoodlepassword -P4008

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 9

Server version: 10.3.27-MariaDB-log MariaDB Server



Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.



Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.



MariaDB [(none)]> select @@hostname;

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

| @@hostname |

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

| 192.168.40.222  |

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

1 row in set (0.001 sec)

Korzystanie z ClusterControl

ClusterControl można pobrać bezpłatnie i oferuje licencje dla Community, Advance i Enterprise. Automatyczne przełączanie awaryjne jest dostępne tylko w Advance i Enterprise. Automatyczne przełączanie awaryjne jest objęte naszą funkcją automatycznego odzyskiwania, która próbuje odzyskać uszkodzony klaster lub uszkodzony węzeł. Jeśli chcesz uzyskać więcej informacji na temat tego, jak to zrobić, zapoznaj się z naszym poprzednim postem W jaki sposób ClusterControl wykonuje automatyczne odzyskiwanie bazy danych i przełączanie awaryjne. Oferuje regulowane parametry, które są bardzo wygodne i łatwe w użyciu. Przeczytaj nasz poprzedni post również na temat Jak zautomatyzować przełączanie awaryjne bazy danych za pomocą ClusterControl.

Zarządzanie automatycznym przełączaniem awaryjnym bazy danych Moodle musi przynajmniej wymagać wirtualnego adresu IP (VIP) jako punktu końcowego dla klienta aplikacji Moodle łączącego się z zapleczem bazy danych. Aby to zrobić, możesz wdrożyć Keepalived z HAProxy (lub ProxySQL — w zależności od wybranego modułu równoważenia obciążenia). W takim przypadku punkt końcowy bazy danych Moodle powinien wskazywać na wirtualny adres IP, który jest w zasadzie przypisywany przez Keepalived po jego wdrożeniu, tak jak pokazaliśmy wcześniej podczas konfigurowania MaxScale. Możesz również sprawdzić na tym blogu, jak to zrobić.

Jak wspomniano powyżej, dostępne są dostrajalne parametry, które można ustawić za pomocą pliku /etc/cmon.d/cmon_.cnf znajdującego się na hoście ClusterControl, gdzie CLUSTER_ID jest identyfikatorem klastra. Są to parametry, które pomogą Ci wydajniej zarządzać automatycznym przełączaniem,

  • replication_check_binlog_filtration_bf_failover
  • replication_check_external_bf_failover
  • replication_failed_reslave_failover_script
  • replication_failover_blacklist
  • replication_failover_events
  • replication_failover_wait_to_apply_timeout
  • replication_failover_whitelist
  • replication_onfail_failover_script
  • Replication_post_failover_script
  • replication_post_unsuccessful_failover_script
  • replication_pre_failover_script
  • replication_skip_apply_missing_txs
  • replication_stop_on_error

ClusterControl jest bardzo elastyczny podczas zarządzania przełączaniem awaryjnym, dzięki czemu można wykonać pewne zadania przed lub po awarii.

Wnioski

Istnieją inne świetne możliwości podczas konfigurowania i automatycznego zarządzania przełączaniem awaryjnym bazy danych MySQL dla Moodle. To zależy od Twojego budżetu i tego, na co prawdopodobnie będziesz musiał wydawać pieniądze. Korzystanie z rozwiązań typu open source wymaga wiedzy specjalistycznej i wielu testów w celu zapoznania się, ponieważ nie ma wsparcia, które można uruchomić, gdy potrzebujesz pomocy innej niż społeczność. W przypadku rozwiązań dla przedsiębiorstw jest to cena, ale zapewnia wsparcie i łatwość, ponieważ czasochłonna praca może zostać zmniejszona. Należy pamiętać, że jeśli przełączanie awaryjne jest używane błędnie, może to spowodować uszkodzenie bazy danych, jeśli nie zostanie odpowiednio obsłużone i zarządzane. Skoncentruj się na tym, co jest ważniejsze i na tym, jak jesteś w stanie wykorzystać rozwiązania, z których korzystasz do zarządzania przełączaniem awaryjnym bazy danych Moodle.


  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 TO_SECONDS() działa w MariaDB?

  2. MariaDB JSON_CONTAINS() Objaśnienie

  3. Szyfrowanie kopii zapasowej bazy danych — najlepsze praktyki

  4. Jak działa POSITION() w MariaDB

  5. MariaDB w Tokio