Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Installieren des Percona XtraDB-Clusters auf CentOS 7

Willkommen zu einem weiteren Blog. Dieses Mal bin ich hier, um euch zu zeigen, wie man percona XtraDB-Cluster einrichtet. Ok, was ist percona XtraDB? XtraDB ist eine MySQL-Clustering-Lösung. Sie gewährleistet Hochverfügbarkeit, verhindert Ausfallzeiten und Datenverlust und bietet lineare Skalierbarkeit für eine wachsende Umgebung. Wenn Sie eine Abfrage ausführen, wird sie lokal auf dem Knoten ausgeführt. Alle Daten sind lokal verfügbar, kein Fernzugriff erforderlich. Eine gute Lösung zum Skalieren einer Lesearbeitslast. Sie können Leseabfragen an jeden der Knoten stellen. Sobald Sie percona XtraDB installiert haben, müssen Sie MySQL nicht separat installieren, XtraDB holt es aus dem percona-Repository und Sie können den Cluster nach dem Lesen dieses Artikels vorbereiten.

Voraussetzung:

Um einen percona XtraDB-Cluster auf Linux-Servern zu konfigurieren, benötigen wir drei Server, Informationen sind wie folgt:

Serverpercona1:192.168.56.110

Serverpercona2:192.168.56.113

Server percona3:192.168.56.114

Betriebssystem:CentOS 7

Sie können auch mit zwei Servern arbeiten, aber das offizielle Dokument empfiehlt eine ungerade Anzahl von Servern. zB 3,5,7 und so weiter. Entscheiden Sie sich einfach nicht für eine gerade Anzahl von Knoten, sie nennen es Split-Brain. Ein Split-Brain ist ein Zustand, in dem die Knoten den Kontakt zueinander verlieren und dann beide versuchen, die Kontrolle über gemeinsam genutzte Ressourcen zu übernehmen oder gleichzeitig den Clusterdienst bereitzustellen

HINWEIS:Wir benötigen Root-Zugriff auf dem Knoten, auf dem wir Percona XtraDB Cluster installieren werden
(entweder als Benutzer mit Root-Rechten angemeldet oder in der Lage, Befehle mit Sudo auszuführen

Vorabprüfungen:

Fügen Sie die folgenden Einträge in Ihrer /etc/hosts-Datei hinzu ——> auf allen Servern (percona1, percona2, percona3)

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

Firewall-Ports öffnen:

Wir müssen die folgenden Ports auf allen Servern öffnen (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 (active)target:defaulticmp-block-inversion:nointerfaces:enp0s3 enp0s8sources:services:ssh dhcpv6-client mysqlports:3306/tcp 4567/tcp 4568/tcp 4444/tcp 4567/udpprotocols:maskerade:noforward-ports:source-ports:icmp-blocks:rich rules

SELinux deaktivieren:——->auf allen Servern (percona1,percona2,percona3)

[[email protected] ~]# setenforce 0

Dadurch wird SELinux für die aktuelle Sitzung in den zulässigen Modus versetzt, aber wir müssen es dauerhaft deaktivieren.
Bearbeiten Sie die Datei /etc/sysconfig/selinux und setzen Sie die Selinux-Variable auf allen Servern als deaktiviert (percona1,percona2,percona3):
vi /etc/sysconfig/selinux
SELINUX=disabled

Alle Server sollten füreinander erreichbar sein. Um die Erreichbarkeit zu überprüfen, pingen Sie jeden Server an.

Installieren Sie unter Prereq RPM:——->auf allen Servern (percona1, percona2, percona3)

epel-release
libev
socat

[[email protected] ~]# yum -y install epel-release installiert:epel-release.noarch 0:7-11[[email protected] yum.repos.d]# yum -y install libev installiert :libev.x86_64 0:4.15-7.el7[[email protected] Desktop]# yum -y install socat Installiert:socat.x86_64 0:1.7.3.2-2.el7

Percona-Repository hinzufügen:——->auf allen Servern (percona1,percona2,percona3)

Jetzt werden wir das Percona-Repository auf allen drei Servern hinzufügen (percona1, percona2, percona3):

[[email protected] ~]# sudo yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpmInstalled:percona-release.noarch 0:1.0-13 Abgeschlossen !

Percona-XtraDB-Cluster installieren:——->auf allen Servern (percona1,percona2,percona3)

[[email protected] ~]# yum install -y Percona-XtraDB-Cluster-57Geladene Plugins:fastestmirror, langpacksLoading mirror speeds from cached hostfile...Installed: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 Installierte Abhängigkeit: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.el7Ersetzt:mariadb-libs.x86_64 1:5.5.60-1.el7_5Vollständig!

Prüfen Sie, ob Percona XtraDB installiert ist oder nicht.

[[email protected] ~]# yum search Percona-XtraDBHINWEIS: Bis hierhin sollten alle oben genannten Schritte auf allen Servern (percona1,percona2,percona3) durchgeführt werden
Konfigurieren von Knoten für die Write-Set-Replikation
ON Percona1:

Lassen Sie den MySQL-Server starten und ändern Sie das Root-Passwort nur auf dem percona1-Server

[[email protected] ~]# systemctl start mysql[[email protected] ~]# grep password /var/log/mysqld.log2019-12-11T10:35:12.135133Z 1 [Hinweis] Ein temporäres Passwort wird für [email protected] generiert:hJ(l8ySe>f>ENote :copy the password "hJ(l8ySe>f>E" wir werden dieses Passwort ändern :[[email protected] ~]# mysql_secure_installation --- ---->auf allen Servern (percona1,percona2,percona3)Sicherung der MySQL-Server-Bereitstellung.Passwort für Benutzer root eingeben:Das vorhandene Passwort für das Benutzerkonto root ist abgelaufen. Bitte legen Sie ein neues Passwort fest.Neues Passwort:Erneut eingeben Neues Passwort:Das VALIDATE PASSWORD PLUGIN kann verwendet werden, um Passwörter zu testen und die Sicherheit zu verbessern. Es überprüft die Stärke des Passworts und erlaubt den Benutzern, nur die Passwörter festzulegen, die sicher genug sind. Möchten Sie das VALIDATE PASSWORD-Plugin einrichten? Drücken Sie y|Y für Yes, any andere Taste für Nein:Vorhandenes Passwort für root verwenden. Passwort für root ändern? ((Drücken Sie y|Y für Ja, jede andere Taste für Nein) :... überspringen. Standardmäßig eine MySQL-Installation ation hat einen anonymen Benutzer, sodass sich jeder bei MySQL anmelden kann, ohne dass ein Benutzerkonto für ihn erstellt werden muss. Dies dient nur zu Testzwecken und soll die Installation etwas reibungsloser gestalten. Sie sollten sie entfernen, bevor Sie in eine Produktionsumgebung wechseln. Anonyme Benutzer entfernen? (Drücken Sie y|Y für Yes, jede andere Taste für No) :yesSuccess.Normalerweise sollte root nur erlaubt sein, eine Verbindung von „localhost“ herzustellen. Dadurch wird sichergestellt, dass niemand das Root-Passwort aus dem Netzwerk erraten kann. Root-Anmeldung aus der Ferne verbieten? (Drücken Sie y|Y für Ja, jede andere Taste für Nein):jaErfolg. MySQL wird standardmäßig mit einer Datenbank namens »test« geliefert, auf die jeder zugreifen kann. Dies ist ebenfalls nur zum Testen gedacht und sollte entfernt werden, bevor es in eine Produktionsumgebung verschoben wird. Testdatenbank und Zugriff darauf entfernen? (Drücken Sie y|Y für Ja, jede andere Taste für Nein) :... Überspringen. Das Neuladen der Berechtigungstabellen stellt sicher, dass alle bisher vorgenommenen Änderungen sofort wirksam werden. Berechtigungstabellen jetzt neu laden? (Drücken Sie y|Y für Ja, jede andere Taste für Nein) :yesSuccess.All done!

Stoppen Sie nun den MySQL-Server auf percona1.

[[email protected] ~]# systemctl stop mysql

Jetzt konfigurieren wir unsere Replikation und fügen Replikationsinformationen in die my.cnf-Datei ein.

Konfigurieren Sie die Replikationseinstellungen auf percona1:
cat>>/etc/my.cnf< 

Initialisieren Sie nun den Cluster, indem Sie den ersten Knoten booten. Dies muss der Knoten mit Ihrer Hauptdatenbank sein, die als Datenquelle für den Cluster verwendet wird, in unserem Fall ist es der percona1-Server

[[email protected] ~]# systemctl start [email protected] wir die Replikation konfigurieren, müssen wir einen separaten Benutzer für die Replikation erstellen, der für den Replikationsprozess verwendet wird. Warum brauchen wir Replikationsbenutzer? Wenn Sie dem Cluster einen neuen Knoten hinzufügen, wird die aktuelle Knotenkonfiguration ausgegeben und auf den zweiten Knoten übertragen. Aus diesem Grund benötigen wir einen separaten Benutzer.

HINWEIS: Stellen Sie sicher, dass der Benutzer derselbe sein sollte, der für die Variable "wsrep_sst_auth" erwähnt wird in der Replikationskonfiguration, die in der Datei my.cnf verwendet wird.

[[email protected] ~]#mysql -u root -p mysql>Benutzer [email protected]'%' erstellen, identifiziert durch 'perconapasswd';mysql>all on *.* an [email protected] gewähren '%';mysql>Löschberechtigungen;
ON Percona2:

Replikationseinstellungen auf percona2 konfigurieren:

cat>>/etc/my.cnf< 

Starten Sie nun mysql und dies fügt diesen Knoten dem Cluster hinzu.

[[email protected] ~]# systemctl mysql starten
ON Percona3:

Replikationseinstellungen auf percona3 konfigurieren:

cat>>/etc/my.cnf< 

Starten Sie nun mysql und dies fügt diesen Knoten dem Cluster hinzu.

[[email protected] ~]# systemctl mysql starten

Sie werden solche Meldungen im MySQL-Protokoll (var/log/mysqld.log) beobachten

(percona2):Zustandsübertragung von 0.0 (percona1) abgeschlossen

1.0 (percona3):Zustandsübertragung von 0.0 (percona1) abgeschlossen

Führen Sie Folgendes aus, um sicherzustellen, dass der Cluster initialisiert wurde:

mysql> Status anzeigen wie 'wsrep%';+-----------------------------------------------+- -------------------------------------------------- ----------+| Variablenname | Wert |+------------------------------------------+------------ -------------------------------------------------+ | 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 | AUS |..| wsrep_local_state | 4 || wsrep_local_state_comment | Synchronisiert || 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 | BETRIEBSBEREIT || 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 | Primär || wsrep_connected | EIN || wsrep_local_bf_aborts | 0 || wsrep_local_index | 0 || wsrep_provider_name | Galerie || wsrep_provider_vendor | Codership Oy  || wsrep_provider_version | 3.39(rb3295e6) || wsrep_bereit | EIN |+------------------------------------------+------------ -------------------------------------------------+ 71 Zeilen im Satz (0,00 Sek.)

Wie Sie sehen, beträgt die Clustergröße 3 „wsrep_cluster_size | 3” und Sie können auch die IP unserer drei Knoten sehen
wsrep_incoming_addresses | 192.168.56.110:3306,192.168.56.114:3306,192.168.56.113:3306

Testen Sie unseren Cluster:

Ich erstelle eine Datenbank auf Percona 1 und dann prüfen wir auf Percoan 3, ob sie repliziert wurde.

mysql> Datenbanken anzeigen;+--------------------+| Datenbank |+--------------------+| Informationsschema || MySQL || Leistungsschema || sys |+--------------------+4 Zeilen im Satz (0,03 Sek.)mysql> CREATE DATABASE perconatest;Abfrage OK, 1 Zeile betroffen (0,03 Sek.) 

Lassen Sie uns nun percona3 überprüfen, wir werden sehen, dass die „perconatest“ DB erstellt wird

[[email protected] ~]# mysql -uroot -p -e "show databases"Passwort eingeben:+--------------------+| Datenbank |+--------------------+| Informationsschema || MySQL || perconatest || Leistungsschema || sys |+--------------------+