Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Instalowanie klastra Percona XtraDB na CentOS 7

Witam na kolejnym blogu. Tym razem jestem tutaj, aby pokazać, jak skonfigurować klaster percona XtraDB. Ok, więc czym jest percona XtraDB? XtraDB to rozwiązanie klastrowe MySQL, które zapewnia wysoką dostępność, zapobiega przestojom i utracie danych oraz zapewnia liniową skalowalność dla rozwijającego się środowiska. Gdy wykonujesz zapytanie, jest ono wykonywane lokalnie w węźle. Wszystkie dane są dostępne lokalnie, bez konieczności zdalnego dostępu. Dobre rozwiązanie do skalowania obciążenia związanego z odczytem. Możesz umieścić zapytania odczytu do dowolnego węzła. Po zainstalowaniu percona XtraDB nie musisz instalować MySQL osobno, XtraDB pobierze go z repozytorium percona i będziesz mógł przygotować klaster po przejrzeniu tego artykułu.

warunek wstępny:

Aby skonfigurować klaster percona XtraDB na serwerach Linux potrzebujemy trzech serwerów, informacje są następujące:

serwer percona1:192.168.56.110

serwer percona2:192.168.56.113

Serwer percona3:192.168.56.114

System operacyjny:CentOS 7

możesz również skorzystać z dwóch serwerów, ale oficjalny dokument zaleca nieparzystą liczbę serwerów. np. 3,5,7 i tak dalej. po prostu nie idź na żadną parzystą liczbę węzłów, nazywają to rozszczepionym mózgiem. Rozszczepiony mózg to stan, w którym węzły tracą ze sobą kontakt, a następnie obaj próbują przejąć kontrolę nad współdzielonymi zasobami lub jednocześnie świadczyć usługę klastra

UWAGA:Potrzebujemy uprawnień administratora w węźle, w którym będziemy instalować klaster Percona XtraDB
(zalogowany jako użytkownik z uprawnieniami administratora lub możliwość uruchamiania poleceń za pomocą Sudo

Kontrole wstępne:

Dodaj poniższe wpisy w pliku /etc/hosts ——> na wszystkich serwerach (percona1,percona2,percona3)

192.168.56.110 percona1.localdomain percona1
192.168.56.113 percona2.localdomain percona2
192.168.56.114 percona3.localdomain percona3

Otwórz porty zapory:

Musimy otworzyć poniższe porty na wszystkich serwerach (percona1,percona2,percona3)
3306
4444
4567
4568

firewall-cmd --zone=public --add-service=mysql --permanent
firewall-cmd --zone=public --add-port=3306/tcp --permanentfirewall-cmd --zone=public --add-port=4567/tcp --permanentfirewall-cmd --zone=public - -add-port=4568/tcp --permanentfirewall-cmd --zone=public --add-port=4444/tcp --permanentfirewall-cmd --zone=public --add-port=4567/udp --permanentfirewall- cmd --reloadfirewall-cmd --list-all
[[email protected] ~]# firewall-cmd --list-allpublic (aktywny) cel:defaulticmp-block-inversion:nointerfaces:enp0s3 enp0s8sources:services:ssh dhcpv6-client mysqlports:3306/tcp 4567/tcp 4568/tcp 4444/tcp 4567/udpprotocols:masquerade:noforward-ports:source-ports:icmp-blocks:bogate reguły

Wyłącz SELinux:——->na wszystkich serwerach(percona1,percona2,percona3)

[przykł[email protected] ~]# setenforce 0

Spowoduje to przejście SELinux w tryb zezwalający na bieżącą sesję, ale musimy go wyłączyć na stałe.
edytuj plik /etc/sysconfig/selinux ustaw zmienną selinux jako wyłączoną na wszystkich serwerach (percona1,percona2,percona3):
vi /etc/sysconfig/selinux
SELINUX=wyłączone

Wszystkie serwery powinny być dostępne dla siebie. Aby sprawdzić dostępność, pinguj każdy serwer.

Instalacja poniżej wymaganego RPM:——->na wszystkich serwerach(percona1,percona2,percona3)

epel-release
libev
socat

[przykł[email protected] ~]# mniam -y zainstaluj epel-release Zainstalowane:epel-release.noarch 0:7-11[przykł[email protected] mniam.repos.d]# mniam -y zainstaluj libev Zainstalowane :libev.x86_64 0:4.15-7.el7[przykł[email protected] Pulpit]# mniam -y zainstaluj socat Zainstalowano:socat.x86_64 0:1.7.3.2-2.el7

Dodaj repozytorium Percona:——->na wszystkich serwerach(percona1,percona2,percona3)

Teraz dodamy repozytorium percona na wszystkich trzech serwerach (percona1,percona2,percona3):

[[email protected] ~]# sudo mniam -y zainstaluj https://repo.percona.com/yum/percona-release-latest.noarch.rpmInstalled:percona-release.noarch 0:1.0-13 Zakończono !

Zainstaluj Percona-XtraDB-Cluster:——->na wszystkich serwerach (percona1,percona2,percona3)

[[email protected] ~]# yum install -y Percona-XtraDB-Cluster-57Załadowane wtyczki:najszybszemirror, langpacksŁadowanie prędkości lustrzanych z buforowanego pliku hosta...Zainstalowane:Percona-XtraDB-Cluster-57.x86_64 0:5.7 .27-31.39.1.el7 Percona-XtraDB-Cluster-shared-57.x86_64 0:5.7.27-31.39.1.el7 Percona-XtraDB-Cluster-shared-compat-57.x86_64 0:5.7.27-31.39 .1.el7 Zainstalowana zależność:Percona-XtraDB-Cluster-client-57.x86_64 0:5.7.27-31.39.1.el7 Percona-XtraDB-Cluster-server-57.x86_64 0:5.7.27-31.39.1.el7 percona-xtrabackup-24.x86_64 0:2.4.17-1.el7 perl-DBD-MySQL.x86_64 0:4.023-6.el7 perl-Digest.noarch 0:1.17-245.el7 perl-Digest-MD5.x86_64 0 :2.52-3.el7 qpress.x86_64 0:11-1.el7Zastąpione:mariadb-libs.x86_64 1:5.5.60-1.el7_5Zakończono!

Sprawdź, czy Percona XtraDB jest zainstalowany, czy nie.

[[email protected] ~]# mniam wyszukiwanie Percona-XtraDBUWAGA: Do tego momentu wszystkie powyższe kroki powinny być wykonywane na wszystkich serwerach (percona1,percona2,percona3)
Konfigurowanie węzłów do replikacji zestawu zapisu
WŁ. Percona1:

Uruchom serwer MySQL i zmień hasło roota tylko na serwerze percona1

[przykł[email protected] ~]# systemctl start mysql[przykł[email protected] ~]# hasło grep /var/log/mysqld.log2019-12-11T10:35:12.135133Z 1 [Uwaga] Hasło tymczasowe jest generowany na przykł[email protected]:hJ(l8ySe>f>EUwaga:skopiuj hasło "hJ(l8ySe>f>E" będziemy zmieniać to hasło :[[email protected] ~]# mysql_secure_installation --- ---->na wszystkich serwerach (percona1,percona2,percona3) Zabezpieczanie wdrożenia serwera MySQL.Wprowadź hasło użytkownika root:Dotychczasowe hasło konta użytkownika root wygasło. Ustaw nowe hasło.Nowe hasło:Wprowadź ponownie nowe hasło:WTYCZKA WERYFIKACJI HASŁA może być używana do testowania haseł i poprawy bezpieczeństwa. Sprawdza siłę hasła i pozwala użytkownikom ustawić tylko te hasła, które są wystarczająco bezpieczne. inny klucz dla Nie:Używanie istniejącego hasła dla roota.Zmienić hasło dla roota? ation ma anonimowego użytkownika, dzięki czemu każdy może zalogować się do MySQL bez konieczności tworzenia dla niego konta użytkownika. Ma to na celu jedynie testowanie i sprawienie, by instalacja przebiegała nieco płynniej. Należy je usunąć przed przejściem do środowiska produkcyjnego. Usunąć anonimowych użytkowników? (Naciśnij y|Y dla Yes, dowolny inny klawisz dla No) :yesSuccess.Normalnie root powinien mieć możliwość łączenia się tylko z'localhost'. Gwarantuje to, że ktoś nie może odgadnąć hasła roota z sieci. Nie zezwalać na zdalne logowanie roota? (Naciśnij y|Y dla Tak, dowolny inny klawisz dla Nie) :yesSuccess.Domyślnie MySQL jest dostarczany z bazą danych o nazwie „test”, do której każdy może uzyskać dostęp. Jest to również przeznaczone tylko do testowania i powinno zostać usunięte przed przeniesieniem do środowiska produkcyjnego. Usunąć testową bazę danych i uzyskać do niej dostęp? (Naciśnij y|Y dla Tak, dowolny inny klawisz dla Nie) :... pomijanie.Ponowne ładowanie tabel uprawnień zapewni, że wszystkie wprowadzone do tej pory zmiany zaczną obowiązywać natychmiast.Ponownie załadować tabele uprawnień teraz? (Naciśnij y|Y dla Tak, dowolny inny klawisz dla Nie) :yesSuccess.Wszystko gotowe!

Teraz zatrzymaj serwer MySQL na percona1.

[[email protected] ~]# systemctl stop mysql

Teraz skonfigurujemy naszą replikację, dodamy informacje o replikacji w pliku my.cnf.

Skonfiguruj ustawienia replikacji na percona1:
cat>>/etc/my.cnf<
 

Teraz zainicjuj klaster, uruchamiając pierwszy węzeł. To musi być węzeł z Twoją główną bazą danych, która będzie używana jako źródło danych dla klastra, w naszym przypadku jest to serwer percona1

[[email protected] ~]# systemctl start [email protected] konfiguracją replikacji musimy utworzyć osobnego użytkownika do replikacji, który będzie używany do procesu replikacji. dlaczego potrzebujemy użytkownika replikacji? kiedy dodasz nowy węzeł do klastra, zrzuca on bieżącą konfigurację węzła i przenosi ją do drugiego węzła, z tego powodu potrzebujemy osobnego użytkownika.

UWAGA: Upewnij się, że użytkownik powinien być tym samym wymienionym w zmiennej „wsrep_sst_auth” w konfiguracji replikacji używanej w pliku my.cnf.

[[email protected] ~]#mysql -u root -p mysql>utwórz użytkownika [email protected]'%' identyfikowany przez „perconapasswd';mysql>grant all on *.* do [email protected] '%';mysql>uprawnienia opróżniania;
WŁ. Percona2:

Skonfiguruj ustawienia replikacji na percona2:

cat>>/etc/my.cnf<
 Teraz uruchom mysql, a to doda ten węzeł do klastra.

[[email protected] ~]# systemctl start mysql
WŁ. Percona3:

Skonfiguruj ustawienia replikacji na percona3:

cat>>/etc/my.cnf<
 Teraz uruchom mysql, a to doda ten węzeł do klastra.

[[email protected] ~]# systemctl start mysql

będziesz obserwował takie wiadomości w logu mysql (var/log/mysqld.log)

(percona2):Przeniesienie stanu z 0.0 (percona1) zakończone

1.0 (percona3):Przeniesienie stanu z 0.0 (percona1) zakończone

Aby upewnić się, że klaster został zainicjowany, uruchom następujące polecenie:

mysql> pokaż status jak 'wsrep%';+--------------------------------------+- -------------------------------------------------- ----------+| Nazwa zmiennej | Wartość |+-----------------------------------+------------ --------------------------------------------------+ | wsrep_local_state_uuid | 6d95cd36-1c1a-11ea-999a-83631204f6e3 || wsrep_protocol_version | 9 || wsrep_last_applied | 6 |...| wsrep_flow_control_recv | 0 || wsrep_flow_control_interval | [ 173, 173 ] || wsrep_flow_control_interval_low | 173 || wsrep_flow_control_interval_high | 173 || wsrep_flow_control_status | WYŁĄCZ |..| wsrep_local_state | 4 || wsrep_local_state_comment | Zsynchronizowane || wsrep_cert_index_size | 1 || wsrep_cert_bucket_count | 22 || wsrep_gcache_pool_size | 2384 |..| wsrep_incoming_addresses | 192.168.56.110:3306,192.168.56.114:3306,192.168.56.113:3306 || wsrep_cluster_weight | 3 || wsrep_desync_count | 0 || wsrep_evs_delayed | || wsrep_evs_evict_list | || wsrep_evs_repl_latency | 0/0/0/0/0 || wsrep_evs_state | OPERACYJNE || wsrep_gcomm_uuid | 1d16f574-1c1b-11ea-b5dd-574c9a653584 || wsrep_cluster_conf_id | 3 || wsrep_cluster_size  | 3 || wsrep_cluster_state_uuid | 6d95cd36-1c1a-11ea-999a-83631204f6e3 || wsrep_cluster_status | Podstawowy || wsrep_connected | WŁ || wsrep_local_bf_aborts | 0 || wsrep_local_index | 0 || wsrep_nazwa_dostawcy | Galeria || wsrep_provider_vendor | Codership Oy  || wsrep_provider_version | 3,39(rb3295e6) || wsrep_ready | WŁĄCZONA |+-----------------------------------+------------ --------------------------------------------------+ 71 rzędów w zestawie (0,00 s)

Jak widać, rozmiar klastra to 3 „wsrep_cluster_size | 3” możesz też zobaczyć adresy IP naszych trzech węzłów
wsrep_incoming_addresses | 192.168.56.110:3306,192.168.56.114:3306,192.168.56.113:3306

Przetestuj nasz klaster:

Tworzę bazę danych na perconie 1, a następnie sprawdzimy na percoan 3, czy została zreplikowana.

mysql> pokaż bazy danych;+--------------------+| Baza danych |+---------------------+| information_schema || mysql || performance_schema || sys |+--------------------+4 wiersze w zestawie (0,03 sek)mysql> CREATE DATABASE perconatest;Zapytanie OK, wpływ na 1 wiersz (0,03 sek)

Teraz sprawdźmy w percona3, zobaczymy, że zostanie utworzona baza danych „perconatest”

[[email protected] ~]# mysql -uroot -p -e "pokaż bazy danych"Wprowadź hasło:+--------------------+| Baza danych |+---------------------+| information_schema || mysql || perkonatest || performance_schema || sys |+--------------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dołącz do tabel z problemem SUM w MYSQL

  2. Jak usunąć bazę danych w MySQL/MariaDB?

  3. Czy mogę ponownie użyć pola obliczeniowego w zapytaniu SELECT?

  4. Jak przechowywać datę i godzinę Java Date na Mysql za pomocą JPA?

  5. MySQL:wybierz wszystkie daty w zakresie, nawet jeśli nie ma żadnych rekordów