VorwortEs gibt viele selbst erstellte MySQL-Clusterlösungen, z. B. Keepalived, MHA, PXC, MySQL Master-Slave usw. Je nach unserer eigenen Situation und unseren Bedingungen verwenden wir jedoch PXC für den Aufbau. Der größte Vorteil besteht darin, dass es über mehrere Master und mehrere Backups verfügt, d. h. Master-Slave-Integration, keine Probleme mit Synchronisierungsverzögerungen und eine bequeme und einfache Verwendung. Ich habe sowohl die direkte Installation von pxc als auch die Installation von Docker-Containern verwendet. Ich persönlich bin der Meinung, dass die Installation unter Docker bequemer und einfacher zu warten ist, daher empfehle ich Ihnen, diese Methode zu verwenden. Erstellen der Umgebung
Vorbereitende VorbereitungUnter Linux muss die Firewall ausgeschaltet oder bestimmte erforderliche Ports geöffnet werden. pxc wird mit MySQL geliefert und die Versionen sind konsistent, sodass MySQL auf dem Computer nicht benötigt wird. Am besten schalten Sie SELINUX aus, die Sicherheitsverbesserung, die mit Linux geliefert wird. Beachten Sie diese Konfigurationen, die auf allen drei Maschinen durchgeführt werden müssen. 1. Öffnen Sie die von pxc benötigten Ports
|
Hafen | Funktion |
---|---|
2377 | Für die Clusterkommunikation |
4789 | Container-Overlay-Netzwerk |
7946 | Container-Netzwerkerkennung |
Ich verwende 172.16.9.40 als Masterknoten
docker swarm init Initialisiert den Masterknoten docker swarm join --token xxxx xxxx Verbinde andere Knoten
40Nachdem der Masterknoten initialisiert wurde, zeigt die Konsole docker swarm join --token xxxx xxxx
Anschließend rufen die Maschinen 41 und 42 die entsprechenden Befehle auf, um dem Schwarmcluster beizutreten.
Docker-Knoten ls
Die aktuellen Knoteninformationen können Sie wie folgt einsehen
root@srig-Konfiguration]# Docker-Knoten ls ID HOSTNAME STATUS VERFÜGBARKEIT MANAGER STATUS ENGINE VERSION vk3kzrob1b8jvjq9bxia8lwa7 * srig.dcmp.database.m1 Bereit Aktiver Leiter 20.10.3 4s0pj57d43hm71wipnnbckfkt srig.dcmp.database.m2 Bereit Aktiv 20.10.3 ub1fe2qms2rlhmj9zlap20bsq srig.dcmp.database.s1 Bereit Aktiv
docker node rm -f xxx Erzwungenes Löschen von Knoten docker swarm leave -f Der Masterknoten wird gezwungen den Swarm-Cluster zu verlassen docker swarm leave Der Slaveknoten verlässt den Swarm-Cluster
4. Erstellen Sie ein virtuelles Netzwerk
Docker-Netzwerk erstellen -d Overlay --attachable xxxxx
Andere verwandte Befehle
docker network inspect xxxx Netzwerkinformationen anzeigen docker network ls Alle Netzwerkinformationen anzeigen docker network rm xxxx Ein Netzwerk löschen
Der Netzwerkname hier ist swarm_mysql
. Nachdem das Netzwerk erstellt wurde, docker network inspect swarm_mysql
um es anzuzeigen (in meinem Fall können Sie nach dem Einrichten der Knoten sehen, dass es drei Maschinen gibt).
5. Verzeichnis und Zertifikat erstellen
Wenn Sie 8.0+ verwenden und nicht dasselbe Zertifikat verwenden, erhalten Sie auf jeden Fall einen SSL-bezogenen Fehler
„Fehler:0407008A:rsa-Routinen:RSA_padding_check_PKCS1_type_1:ungültige Polsterung“
Dies liegt daran, dass nach 8.0 SSL für die Verbindung verwendet wird und die drei Maschinen die Konsistenz des Schlüssels aufrechterhalten müssen, um kommunizieren zu können.
Dies ist die offizielle Lösung zum Generieren von Zertifikaten und jeder verwendet denselben Satz.
Generell ist es am besten, die Partitionierung der Systemfestplatte zu überprüfen und die MySQL-Daten dann auf einer großen Festplatte zu speichern.
df -h
Meine Daten befinden sich alle in /home
/home
daher ist es das größte Dateisystem.
! Beachten Sie, dass das Verzeichnis hier auf allen drei Maschinen auf die gleiche Weise erstellt werden muss.
CD /Home mkdir -m 777 pxc_cert Zertifikat mkdir -m 777 pxc_config Benutzerdefinierte MySQL-Konfigurationsdatei mkdir -m 777 pxc_data Daten
Hinweis: Hier müssen Sie Berechtigungen erteilen, sonst werden an vielen Stellen Fehler gemeldet
cd /home/pxc_config vi benutzerdefiniert.cnf
Geben Sie hier den Inhalt ein
[mysqld] Kleinbuchstabentabellennamen = 1 sql_mode=STRICT_TRANS_TABLES,KEINE_NULL_IM_DATUM,KEINE_NULL_DATUM,FEHLER_FÜR_DIVISION_DURCH_NULL,KEINE_ENGINE_SUBSTITUTION ssl-ca = /cert/ca.pem ssl-cert = /cert/server-cert.pem ssl-Schlüssel = /cert/server-key.pem [Kunde] ssl-ca = /cert/ca.pem ssl-cert = /cert/client-cert.pem ssl-Schlüssel = /cert/client-key.pem [sst] verschlüsseln = 4 ssl-ca = /cert/ca.pem ssl-cert = /cert/server-cert.pem ssl-Schlüssel = /cert/server-key.pem
Ich muss die Datenbank so einrichten, dass die Groß-/Kleinschreibung nicht mehr beachtet wird und „group by“ nach 8.0 verwendet werden kann.
docker run --name pxc-cert --rm -v /home/pxc_cert:/cert \ percona/percona-xtradb-cluster:8.0 mysql_ssl_rsa_setup -d /cert
Sie können eine Zertifikatsdatei im Verzeichnis /home/pxc_cert
erstellen
! Beachten Sie, dass das Zertifikat nach der Erstellung in die entsprechenden Verzeichnisse auf den anderen beiden Computern kopiert werden muss.
scp -r [email protected]:/home/pxc_cert /Benutzer/jafir/downloads/pxc_cert
Herunterladen auf lokal
scp -r /Benutzer/jafir/Downloads/pxc_cert [email protected]:/home/ scp -r /Benutzer/jafir/Downloads/pxc_cert [email protected]:/home/
Hochladen auf 41 42 andere zwei Maschinen
! Hinweis: Alle drei Maschinen müssen Ihnen Berechtigungen für Zertifikatsdateien erteilen
cd /home/pxc_cert chmod 777 *
1. Installieren Sie das Image
Docker-Pull Percona/Percona-XtraDB-Cluster
Der Name ist etwas lang, Sie können ihn mit Tag umbenennen
Docker-Tag Percona/Percona-XtraDB-Cluster pxc
Löschen des Originals
Docker RMI Percona/Percona-XtraDB-Cluster
2. Container auf mehreren Rechnern erstellen
Ich habe hier 40 Masterknoten und die anderen sind Clusterknoten, also werden zuerst 40 erstellt.
172.9.16.40 Masterknoten
docker run -d -p 3306:3306 --net=swarm_mysql \ -e MYSQL_ROOT_PASSWORD=asdw@123 \ -e CLUSTER_NAME=pxc_cluster \ -e XTRABACKUP_PASSWORD=asdw@123 \ -v /home/pxc_data:/var/lib/mysql \ -v /home/pxc_cert:/Zertifikat \ -v /home/pxc_config/:/etc/percona-xtradb-cluster.conf.d \ --privileged --name=pxc1 pxc
Befehlsinterpretation:
Docker ausführen -d -p 3306:3306 3306 Portzuordnung --net=swarm_mysql Name des virtuellen Netzwerks -e MYSQL_ROOT_PASSWORD=asdw@123 Anfangskennwort der Datenbank -e CLUSTER_NAME=pxc_cluster Clustername -e XTRABACKUP_PASSWORD=asdw@123 Sicherungskennwort -v /home/pxc_cert:/cert Zertifikatspfadzuordnung -v /home/pxc:/var/lib/mysql pxc-Pfadzuordnung -v /home/pxc/config/:/etc/percona-xtradb-cluster.conf.d MySQL-Konfigurationsdateipfadzuordnung --privileged Berechtigungen erteilen --name=pxc1 pxc
Sie können docker logs pxc1
ausführen, um zu sehen, ob das Protokoll Fehler meldet.
Bei Erfolg können Sie mit Navicat eine Verbindung herstellen, um zu prüfen, ob MySQL erfolgreich gestartet wurde, und anschließend den Slave-Knoten installieren, nachdem er gestartet wurde.
172.9.16.41-Knoten
docker run -d -p 3306:3306 --net=swarm_mysql \ -e MYSQL_ROOT_PASSWORD=asdw@123 \ -e CLUSTER_NAME=pxc_cluster \ -e XTRABACKUP_PASSWORD=asdw@123 \ -v /home/pxc_data:/var/lib/mysql \ -v /home/pxc_cert:/Zertifikat \ -v /home/pxc_config/:/etc/percona-xtradb-cluster.conf.d \ -e CLUSTER_JOIN=pxc1 \ --privileged --name=pxc2 pxc
Im Vergleich zum Obigen gibt es hier einen weiteren Satz -e CLUSTER_JOIN=pxc1
, was bedeutet, dass pxc1 verbunden wird. Woher kann die zweite Maschine pxc1 kennen? Durch die Bildung des Schwarmclusters können sie miteinander kommunizieren.
172.9.16.42-Knoten
docker run -d -p 3306:3306 --net=swarm_mysql \ -e MYSQL_ROOT_PASSWORD=asdw@123 \ -e CLUSTER_NAME=pxc_cluster \ -e XTRABACKUP_PASSWORD=asdw@123 \ -v /home/pxc_data:/var/lib/mysql \ -v /home/pxc_cert:/Zertifikat \ -v /home/pxc_config/:/etc/percona-xtradb-cluster.conf.d \ -e CLUSTER_JOIN=pxc1 \ --privileged --name=pxc3 pxc
Hinweis: Wenn Sie 8.0+ verwenden, wird auf jeden Fall ein SSL-bezogener Fehler auftreten.
„Fehler:0407008A:rsa-Routinen:RSA_padding_check_PKCS1_type_1:ungültige Polsterung“
Dies liegt daran, dass nach 8.0 SSL für die Verbindung verwendet wird und die drei Maschinen die Konsistenz des Schlüssels aufrechterhalten müssen, um kommunizieren zu können.
Dies ist die offizielle Lösung zum Generieren von Zertifikaten und jeder verwendet denselben Satz. Ich halte es einfach. Ich extrahiere einfach die Datei vom Host-Computer und übertrage sie auf die anderen beiden Computer. Nach dem Überschreiben starte ich sie neu.
Serverschlüssel.pem, Serverzertifikat.pem, Clientschlüssel.pem, Clientzertifikat.pem, ca.pem
scp -r [email protected]:/home/pxc /Benutzer/jafir/Downloads/pxc
Kopieren Sie die Daten von Knoten 40 und löschen Sie alle Dateien außer den 5 Dateien.
scp -r /Benutzer/jafir/Downloads/pxc [email protected]:/home
Laden Sie es zum Überschreiben auf 41 und 42 hoch und starten Sie dann neu.
Wenn alle drei erfolgreich sind, bestätigen Sie erneut.
Der Masterknoten betritt den Container und betritt dann MySQL zur Ansicht
docker exec -it pxc1 sh
mysql -uroot -p
Status wie „wsrep%“ anzeigen;
Wie erwartet beträgt die Clustergröße hier 3
Docker-Netzwerkinspektion xxx
Es gibt auch 3 Netzwerke
Sie können mit Navicat auf einer der Maschinen eine Datenbank, eine Tabelle usw. erstellen und sehen, dass alle drei Maschinen synchronisiert sind!
Ich habe nginx auf 172.16.9.48 installiert.
Wenn keine nginx.conf-Konfigurationsdatei vorhanden ist, können Sie zunächst eine erstellen und dann die Konfiguration testen
Selbst erstellt /nginx/log /nginx/etc/nginx.conf usw.
docker run -d -name nginx nginx docker cp nginx:/etc/nginx/nginx.conf kopiere es docker rm -f nginx
Fügen Sie es in der letzten Zeile hinzu, die sich auf derselben Ebene wie http befindet.
Strom { Upstream-PXC { Server 172.16.9.40:3306; Server 172.16.9.41:3306; Server 172.16.9.42:3306; } Server { hören Sie 3306; Proxy_Passwort pxc; } }
docker run --net=host --name nginx -v /nginx/log/:/var/log/nginx -v /nginx/etc/nginx.conf:/etc/nginx/nginx.conf -d nginx
Anschließend kann Navicat eine Verbindung zur Datenbank herstellen, indem es eine Verbindung zu http://172.16.9.48:3306 herstellt.
Dies ist das Ende dieses Artikels über die Installation eines PXC-Clusters in Docker. Weitere Informationen zur Installation eines PXC-Clusters in Docker finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!
<<: Implementierung zum Hinzufügen von Bemerkungsinformationen zu MySQL
>>: Vue-Vorlagenkonfiguration und Webstorm-Codeformatspezifikationseinstellungen
Inhaltsverzeichnis Vorwort 1. DDL 1.1 Datenbankop...
【Frage】 Wenn die äußere und die innere Tabelle ve...
Wenn Server B (172.17.166.11) eingeschaltet oder ...
Wenn wir in der MySQL-Datenbank Fuzzy-Abfragen be...
In diesem Artikelbeispiel wird der spezifische Co...
Vorwort Die am häufigsten verwendete Datenbank in...
Schritt: 1. Erstellen Sie eine neue Datei docker-...
Dieser Artikel veranschaulicht anhand von Beispie...
MySQL Master-Slave-Konfiguration 1. Vorbereitung ...
Ich werde nicht viel Unsinn erzählen, schauen wir...
Die Kapselung und Verwendung der Vue-Komponente z...
Inhaltsverzeichnis 1. Was ist JSONP 2. JSONP-Cros...
Basierend auf dem Vue-Bildvergrößerungskomponente...
Idea importiert ein bestehendes Webprojekt und ve...
Ja, gespeicherte MySQL-Prozeduren scheinen sehr s...