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

Jak wdrożyć klaster Percona XtraDB 8 w celu zapewnienia wysokiej dostępności

Percona XtraDB Cluster 8.0 jest oparty na Percona Server for MySQL 8.0 z wbudowanym interfejsem API replikacji zbioru zapisu Galera i biblioteką replikacji Galera, aby utworzyć wysoce dostępną replikację multi-master dla serwera bazy danych opartego na MySQL. Percona XtraDB Cluster jest wyposażony w silnik pamięci masowej XtraDB (zastępuje InnoDB) i bardzo dokładnie śledzi wcześniejsze wydania Oracle MySQL (w tym wszystkie poprawki błędów w nim), z kilkoma dodatkowymi zmiennymi i statusem specyficznymi dla tej kompilacji.

W tym poście na blogu przyjrzymy się, jak wdrożyć klaster Percona XtraDB Cluster 8.0 w celu zapewnienia wysokiej dostępności w sposób ręczny i zautomatyzowany.

Ważne funkcje

Zanim przejdziemy dalej z krokami wdrażania, warto wspomnieć o godnych uwagi funkcjach i znaczących ulepszeniach tej głównej wersji, która jest oparta na Percona Server for MySQL 8.0 (bez wtyczki Group Replication) i Galera 4:

  • Replikacja strumieniowa — umożliwia replikacji zestawu zapisów przetwarzanie dużych transakcji na danych w mniejszych, łatwiejszych do zarządzania fragmentach, minimalizując konflikty danych.
  • Synchronizacja funkcji MySQL do koordynacji działań (wsrep_last_seen_gtid, wsrep_last_written_gtid, wsrep_sync_wait_upto_gtid).
  • Nowe tabele systemowe Galera, które pomogą monitorować stan klastra w schemacie „mysql” - wsrep_cluster, wsrep_cluster_members i wsrep_streaming_log.
  • Szyfrowanie Gcache.
  • Infrastruktura wsrep Galera 4 jest bardziej niezawodna niż Galera 3. Oferuje szybsze wykonywanie kodu z lepszą obsługą stanu, lepszą przewidywalnością i obsługą błędów.

Pełną listę zmian znajdziesz w informacjach o wersji.

Ręczne wdrażanie klastra Percona XtraDB 8.0

Kroki instalacji

W przypadku klastra Percona XtraDB potrzebujemy co najmniej trzech węzłów:

  • db1 (192.168.20.61)
  • db2 (192.168.20.62)
  • db3 (192.168.20.63)

Kroki opisane w tej sekcji należy wykonać na wszystkich węzłach bazy danych (db1, db2 i db3) działających na CentOS 8. Najpierw wyłącz SELinux (w przeciwnym razie proces IST nie powiedzie się):

$ setenforce 0
$ sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/sysconfig/selinux

Zainstaluj pakiet repozytorium Percona:

$ yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm

Najnowszą stabilną wersją w tym momencie jest Percona XtraDB Cluster 8.0, ale domyślnie pakiet repozytorium jest skonfigurowany do wersji 5.7. Pakiet percona-release zawiera skrypt, który może włączyć dodatkowe repozytoria dla nowszych produktów. Uruchommy ten skrypt i włączmy repozytorium pxc80:

$ percona-release setup pxc80
* Disabling all Percona Repositories

On RedHat 8 systems it is needed to disable dnf mysql module to install Percona-Server
Do you want to disable it? [y/N]

Wybierz "y", aby wyłączyć moduł mysql DNF. Jest to konieczne, aby nadać priorytet repozytorium Percona dla pakietów związanych z MySQL.

Następnie zainstaluj najnowszy klaster Percona XtraDB i Percona Xtrabackup:

$ dnf -y install percona-xtradb-cluster percona-xtrabackup-80

W tej chwili powinieneś mieć zainstalowany klaster Percona XtraDB 8.0.0-11.3. Wszystkie pakiety zależności zostaną zainstalowane, podobnie jak pakiety shared-compat, shared i client. Następnie możemy uruchomić usługę MySQL do wstępnej konfiguracji:

$ systemctl start mysql

Nowe hasło roota zostanie wygenerowane podczas pierwszego uruchomienia. Najpierw musimy pobrać informacje o haśle roota z dziennika błędów MySQL (domyślnie /var/log/mysqld.log w systemach opartych na RHEL):

$ cat /var/log/mysqld.log | grep 'temporary password'
2020-11-27T06:53:05.929661Z 6 [Note] [MY-010454] [Server] A temporary password is generated for [email protected]: <eqo+jXNw2lk

Jak widać wygenerowane hasło to „

$ mysql_secure_installation

Securing the MySQL server deployment.

Enter password for user root:

The existing password for the user account root has expired. Please set a new password.

New password:

Re-enter new password:

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: y

There are three levels of password validation policy:
LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2

Using existing password for root.
Estimated strength of the password: 100

Change the password for root ? ((Press y|Y for Yes, any other key for No) : y

New password:

Re-enter new password:

Estimated strength of the password: 100

Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y

By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y

Success.

All done!

Wygenerowane hasło roota wygaśnie natychmiast po pierwszym zalogowaniu roota. Powyższy skrypt pomocniczy pomaga nam skonfigurować nowe hasło roota MySQL, ustawić zasady sprawdzania poprawności hasła, wyłączyć zdalne logowanie dla roota, usunąć testową bazę danych i anonimowych użytkowników, a także ponownie załadować tabele uprawnień.

Domyślny plik konfiguracyjny (/etc/my.cnf) jest skonfigurowany z pustym ciągiem połączenia gcomm:// w zmiennej wsrep_cluster_address, jak pokazano poniżej:

wsrep_cluster_address=gcomm://

Powyższy wiersz musi zawierać listę adresów IP wszystkich uczestniczących węzłów w klastrze. Jeśli pominiesz ten krok, nowy klaster Galera zostanie utworzony na każdym węźle (3 oddzielne klastry 1-węzłowe) po uruchomieniu usługi na każdym węźle. Dlatego w sekcji [mysqld] należy odpowiednio zmodyfikować następujące wiersze:

wsrep_cluster_address=gcomm://192.168.20.51,192.168.20.52,192.168.20.53
wsrep_node_address=192.168.20.51 # IP address of this DB host
wsrep_node_name=db1 # any name to identify this DB host
pxc-encrypt-cluster-traffic=OFF

Oczekuj, że wsrep_cluster_address będzie identyczny na wszystkich hostach bazy danych, podczas gdy wsrep_node_address i wsrep_node_name muszą być różne na każdym hoście bazy danych. Ostatnia linia pxc-encrypt-cluster-traffic=OFF oznacza, że ​​chcemy wyłączyć szyfrowanie dla ruchu klastra. Należy pamiętać, że jest to celowe uproszczenie naszych kroków wdrażania, w przeciwnym razie musielibyśmy wykonać kroki zarządzania kluczami/certyfikatami. Jeśli chcesz włączyć szyfrowanie, zapoznaj się z tym artykułem.

Powtórz powyższe kroki dla pozostałych węzłów bazy danych przed przystąpieniem do ładowania klastra.

Inicjowanie klastra

Galera wymaga uruchomienia węzła w klastrze jako punktu odniesienia, zanim pozostałe węzły będą mogły dołączyć i utworzyć klaster. Ten proces jest znany jako bootstrap klastra. Bootstrapping to wstępny krok do wprowadzenia węzła bazy danych jako podstawowego komponentu, zanim inni zobaczą go jako punkt odniesienia do synchronizacji danych.

W tym przykładzie użyjemy db1 jako węzła referencyjnego i uruchomimy go za pomocą polecenia bootstrap (możesz również wybrać inne węzły, ponieważ jest to nowy klaster bez danych):

$ systemctl stop mysql
$ systemctl start [email protected]
$ systemctl status [email protected]

Po uruchomieniu możemy uruchomić inne węzły (db2 i db3) za pomocą standardowej komendy start (jeden węzeł na raz):

$ systemctl stop mysql
$ systemctl start mysql

Weryfikację można przeprowadzić za pomocą następującego wiersza w /var/log/mysqld.log:

2020-11-27T08:09:01.964152Z 2 [Note] [MY-000000] [WSREP] Synchronized with group, ready for connections

W tym momencie nasza usługa klastra Percona XtraDB została uruchomiona, a ręczne wdrażanie zostało zakończone. Aby uzyskać więcej informacji na temat procesu ładowania początkowego klastra Percona XtraDB, zapoznaj się z tym wpisem na blogu How to Bootstrap MySQL lub MariaDB Galera Cluster.

Automatyczne wdrażanie z ClusterControl

Istnieją dwa sposoby wdrożenia Percona XtraDB Cluster 8.0 przy użyciu ClusterControl. Możesz użyć ClusterControl UI (internetowy GUI) lub ClusterControl CLI o nazwie s9s. W tej sekcji pokażemy Ci oba sposoby. ClusterControl musi znajdować się na oddzielnym hoście, z dala od klastra bazy danych. Dlatego naszą architekturę można zilustrować w następujący sposób:

Instalowanie ClusterControl

SSH do serwera ClusterControl i zainstaluj ClusterControl za pomocą następujących poleceń:

$ wget http://severalnines.com/downloads/cmon/install-cc
$ chmod 744 install-cc
$ ./install-cc

Postępuj zgodnie z instrukcjami kreatora instalacji, aż instalacja się zakończy. Po zakończeniu instalacji otwórz przeglądarkę internetową i przejdź do http://192.168.20.19/clustercontrol . Utwórz administratora, a licencja zostanie zainstalowana automatycznie. Wszystkie nowe instalacje są dostarczane z licencją próbną na wersję Enterprise na 30 dni. Gdy ta licencja próbna wygaśnie, domyślnie powróci do wersji społecznościowej, która jest bezpłatna na zawsze.

SSH bez hasła

ClusterControl wymaga skonfigurowania bezhasłowego protokołu SSH z serwera ClusterControl do wszystkich zarządzanych węzłów. Aby to osiągnąć, musimy najpierw wygenerować klucz SSH na serwerze ClusterControl. Użytkownik SSH musi mieć uprawnienia superużytkownika (sudo lub root). W tym przypadku użyjemy użytkownika root:

$ whoami
root

Teraz wygeneruj klucz SSH dla użytkownika root:

$ ssh-keygen -t rsa # press Enter on all prompts

Następnie skopiuj klucz publiczny do wszystkich węzłów bazy danych, które zamierzamy wdrożyć i którymi będziemy zarządzać. W tym przypadku wszystkie 3 węzły Galera:

$ ssh-copy-id [email protected]
$ ssh-copy-id [email protected]
$ ssh-copy-id [email protected]

Po wyświetleniu monitu wprowadź hasło roota odpowiednich hostów.

Przetestuj to za pomocą następującego polecenia i upewnij się, że otrzymasz poprawną odpowiedź:

$ ssh [email protected] "ls /root"

Teraz jesteśmy gotowi do wdrożenia naszego klastra za pomocą ClusterControl UI lub CLI, jak pokazano w następnych sekcjach.

Wdrażanie PXC przy użyciu interfejsu użytkownika ClusterControl

Wdrożenie klastra Percona XtraDB z ClusterControl jest praktycznie łatwe, a ClusterControl domyślnie skonfiguruje klaster z włączonym szyfrowaniem Galera. Po skonfigurowaniu bezhasłowego SSH przejdź do ClusterControl -> Deploy -> MySQL Galera i określ wymagane szczegóły jak poniżej:

Następnie kliknij „Kontynuuj”, aby przejść do następnego kroku, w którym konfigurujemy specyfikacja MySQL:

Wybierz „Percona” dla dostawcy i 8.0 jako wersję. Resztę zachowaj jako domyślną i wprowadź hasło roota MySQL. Określ adres IP lub nazwę hosta hostów bazy danych jeden po drugim i upewnij się, że po każdym wstawieniu pojawią się zielone ikony zaznaczenia. Wskazuje to, że ClusterControl jest w stanie połączyć się z odpowiednimi hostami przez SSH bez hasła z podanym użytkownikiem SSH i kluczem, jak zdefiniowano w kroku 1. Kliknij przycisk „Wdróż”, aby rozpocząć wdrażanie.

ClusterControl następnie wyzwala zadanie wdrażania, w którym można monitorować postęp wdrażania, przechodząc do ClusterControl -> Aktywność -> Zadania -> Utwórz klaster -> Pełne szczegóły zadania, jak pokazano na poniższym zrzucie ekranu:

Po zakończeniu procesu klaster powinien zostać wyświetlony na pulpicie nawigacyjnym :

To wszystko. Wdrażanie zostało zakończone.

Wdrażanie PXC przy użyciu ClusterControl CLI

Jeśli wolisz wdrożyć klaster za pomocą wiersza polecenia, możemy po prostu użyć narzędzia klienta wiersza polecenia ClusterControl o nazwie „s9s”. To narzędzie wyśle ​​zadanie wdrożenia do kontrolera ClusterControl i wykona wszystkie niezbędne kroki w celu wdrożenia klastra.

Uruchom następujące polecenie na serwerze ClusterControl:

$ s9s cluster --create \
--cluster-type=galera \
--nodes="192.168.20.51;192.168.20.52;192.168.20.53" \
--vendor=percona \
--provider-version=8.0 \
--db-admin-passwd='P4ssw0rdSecr3t' \
--os-user=root \
--os-key-file=/root/.ssh/id_rsa \
--cluster-name='My Percona XtraDB Cluster 8.0' \
--log

Zobaczysz komunikaty o zadaniach, które pojawią się i będziesz mógł monitorować postęp wdrożenia, a także możesz monitorować postęp zadania z ClusterControl UI -> Aktywność -> Zadania . Poczekaj 15-20 minut (w zależności od połączenia internetowego), aż zobaczysz powiadomienie o zakończeniu zadania. Nasz Percona XtraDB Cluster 8.0 jest już wdrożony i możesz go zobaczyć na liście w interfejsie ClusterControl.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Usuń klucz podstawowy w MySQL

  2. jQuery Sprawdź poprawność użycia metody zdalnej, aby sprawdzić, czy nazwa użytkownika już istnieje

  3. Zaawansowane zapytanie MySql:Aktualizuj tabelę informacjami z innej tabeli

  4. Samouczek MySQL — zarządzanie dziennikami serwera MySQL:obracanie, kompresowanie, przechowywanie i usuwanie

  5. Jak przekonwertować IPv6 z binarnego do przechowywania w MySQL?