So installierst du einen Load Balancing MySQL Server mit ProxySQL unter Debian 11

ProxySQL ist ein hochleistungsfähiger MySQL-Proxy mit geringem Platzbedarf, der in verschiedenen Umgebungen wie VM, K8s, Bare-Metal und Docker-Containern installiert werden kann. ProxySQL ist eine Open-Source-Lösung, die Hochverfügbarkeit für deinen MySQL-Cluster bietet, indem sie Verbindungsmultiplexing unterstützt, Abfrageregeln bereitstellt, um Schreibvorgänge an die Primaries weiterzuleiten, und Lesevorgänge auf die Replikate verteilt.

ProxySQL unterstützt sowohl AMD64 (x86_64) als auch ARM64. Es bietet einen Proxy auf Anwendungsebene für deine Anwendung und stellt außerdem erweiterte Abfragen mit Failover-Erkennung bereit.

In dieser Anleitung wirst du die Lastverteilung von MySQL Cluster über ProxySQL auf einem Debian 11 Server installieren und einrichten. Du installierst ProxySQL v2 mit dem Percona XtraDB Client, fügst den Percona XtraDB Cluster zu ProxySQL hinzu, richtest den ProxySQL-Überwachungsbenutzer ein und fügst dann die Datenbank und den Benutzer hinzu, die für deine Anwendungen verwendet werden sollen.

Voraussetzungen

Um mit diesem Leitfaden zu beginnen, brauchst du die folgenden Voraussetzungen:

  • Einen Linux-Server mit dem System Debian 11 – In diesem Beispiel wird ein Debian-Server mit dem Hostnamen‚proxysql-deb‚ verwendet.
  • Ein Nicht-Root-Benutzer mit sudo/root-Administrator-Rechten.
  • Ein vollständig konfigurierter MySQL Cluster oder Percona XtraDB Cluster.

Das war’s schon. Wenn alle Voraussetzungen erfüllt sind, kannst du die Installation von ProxySQL starten.

Repositories einrichten

Der erste Schritt, den du für diese Anleitung tun musst, ist das Hinzufügen der Repositories von ProxySQL und Percona XtraDB zu deinem Server. Das Percona XtraDB-Repository wird für die Installation des Pakets„percona-xtradb-cluster-client“ verwendet, das ProxySQL benötigt.

Um zu beginnen, installiere einige grundlegende Abhängigkeiten, indem du den folgenden apt-Befehl eingibst. Gib y ein, wenn du dazu aufgefordert wirst, und drücke ENTER, um fortzufahren.

sudo apt install wget gnupg2 lsb-release curl apt-transport-https ca-certificates

Basisdepots installieren

Als Nächstes lädst du die Repository-Datei für Percona XtraDB herunter und installierst sie mit dem unten stehenden Befehl„dpkg„.

wget -q https://repo.percona.com/apt/percona-release_latest.generic_all.deb
sudo dpkg -i percona-release_latest.generic_all.deb

percona repo installieren

Aktualisiere nun deinen Debian-Paketindex mit dem folgenden apt-Befehl. Du solltest sehen, dass das neue Percona XdtraDB Repository hinzugefügt wurde.

sudo apt update

Gib dann den Befehl„percona-release“ ein, um das Percona XtraDB Cluster 8.0 Repository zu aktivieren.

sudo percona-release setup pxc80

Percona Repo aktivieren

Nachdem das Percona XtraDB Repository hinzugefügt wurde, führe nun den folgenden Befehl aus, um den GPG-Schlüssel und das Repository für ProxySQL hinzuzufügen.

wget -q -nv -O /etc/apt/trusted.gpg.d/proxysql-2.4.x-keyring.gpg 'https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/repo_pub_key.gpg'
echo deb https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/$(lsb_release -sc)/ ./ | tee /etc/apt/sources.list.d/proxysql.list

Aktualisiere deinen Debian-Paketindex, um das neue Repository zu übernehmen.

sudo apt update

Proxysql Repo hinzufügen

Wenn du die beiden Repositories für Percona XtraDB und ProxySQL hinzugefügt hast, kannst du die Client-Pakete für ProxySQL und Percona XtraDB installieren.

Installation von ProxySQL und Percona XtraDB Cluster Client

In diesem Abschnitt installierst du das ProxySQL v2 Paket zusammen mit dem Percona XtraDB Client Paket. Gib den folgenden apt-Befehl ein, um die beiden Pakete ProxySQL und Percona XtraDB Client zu installieren.

sudo apt install proxysql2 percona-xtradb-cluster-client

Wenn du dazu aufgefordert wirst, gib zur Bestätigung y ein und drücke ENTER, um fortzufahren.

proxysql installieren

Sobald ProxySQL installiert ist, wird es automatisch ausgeführt und beim Systemstart automatisch gestartet. Gib den folgenden systemctl-Befehl ein, um den Status des ProxySQL-Dienstes zu überprüfen.

sudo systemctl is-enabled proxysql
sudo systemctl start proxysql

Die Ausgabe„enabled“ bestätigt, dass ProxySQL beim Systemstart automatisch gestartet wird. Und die Ausgabe„active (running)“ bestätigt, dass ProxySQL läuft.

Proxysql-Status

Als Nächstes gibst du den folgenden mysql-Befehl ein, um dich mit dem Standardbenutzer und dem Passwort„admin“ am ProxySQL-Server anzumelden.

mysql -u admin -padmin -h 127.0.0.1 -P 6032 --prompt='proxysql-deb> '

Sobald die Anmeldung erfolgreich war, solltest du die ProxySQL-Shell wie folgt sehen. Du hast dich über den Percona XtraDB-Client mit dem ProxySQL-Adminmodul verbunden.

Anmeldung percona xtradb

Gib nun die folgende Abfrage ein, um die Liste der Datenbanken auf dem ProxySQL-Server zu erhalten. Du solltest sehen, dass mehrere Datenbanken auf dem ProxySQL-Server verfügbar sind.

SHOW DATABASES;

Datenbanken auflisten

Wenn du den ProxySQL-Server und den Percona XtraDB Cluster-Client installiert hast, kannst du MySQL oder Percona XtraDB Cluster zum ProxySQL-Server hinzufügen und den Lastausgleich einrichten.

Hinzufügen von MySQL Cluster/Percona XtraDB Cluster zu ProxySQL

Der erste Schritt, den du nach der Installation des ProxySQL-Servers machen musst, ist das Hinzufügen deines MySQL- oder Percona XtraDB-Clusters zum ProxySQL-Server. Das kannst du über die ProxySQL-Shell machen. In diesem Beispiel wird Percona XtraDB Cluster mit den folgenden Details verwendet:

Hostname    IP Address      Port
---------------------------------
pxc01       192.168.5.15    3306
pxc02       192.168.5.16    3306
pxc03       192.168.5.17    3306

Bevor du beginnst, vergewissere dich, dass du dich in der ProxySQL-Shell angemeldet hast. Dann gibst du die folgenden Abfragen ein, um deine MySQL-Server zu ProxySQL hinzuzufügen. Achte darauf, dass du die Details der IP-Adressen und Ports mit den Details deines MySQL-Clusters abgleichst.

INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (0,'192.168.5.15',3306);
INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (0,'192.168.5.16',3306);
INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (0,'192.168.5.17',3306);

Die Ausgabe„Abfrage OK, 1 Zeile betroffen“ bestätigt, dass der MySQL-Server zum ProxySQL-Server hinzugefügt wurde.

mysql-Server zu proxysqlk hinzufügen

Gib die folgende Abfrage ein, um die Liste der MySQL-Server zu überprüfen, die auf ProxySQL verfügbar sind. Du solltest drei MySQL-Server sehen, die dem ProxySQL-Server hinzugefügt wurden.

SELECT * FROM mysql_servers;

Listenserver

Nachdem der MySQL- oder Percona XtraDB-Cluster zu ProxySQL hinzugefügt wurde, musst du als Nächstes die Überwachung des Percona XtraDB-Clusters auf ProxySQL einrichten.

Einrichten des ProxySQL-Überwachungsbenutzers

Um sicherzustellen, dass der MySQL- oder Percona XtraDB-Cluster in Ordnung ist, überwacht ProxySQL kontinuierlich alle verfügbaren MySQL-Server im Backend. Um dies zu erreichen, musst du einen neuen Benutzer auf deinem Percona XtraDB Cluster anlegen und dann den Überwachungsbenutzer auf dem ProxySQL-Server definieren.

Melde dich bei deinem Percona XtraDB Cluster Server an, greife über den Befehl „mysql“ auf die MySQL-Shell zu und führe dann die folgenden MySQL-Abfragen aus, um einen neuen Benutzer „monitor“ mit dem Passwort „monitor“ zu erstellen.

CREATE USER 'monitor'@'%' IDENTIFIED WITH mysql_native_password by 'monitor';
GRANT USAGE ON *.* TO 'monitor'@'%';
FLUSH PRIVILEGES;
SELECT USER,host FROM mysql.user;
SHOW GRANTS FOR 'monitor'@'%';

Setup Monitor Benutzer

Als Nächstes gehst du zum ProxySQL-Server und führst die folgende Abfrage aus, um den Benutzer zu definieren, der für die Überwachung von Percona XtraDB Cluster verwendet werden soll. Dadurch wird die Standardvariable„mysql-monitor_username“ durch den Benutzer „monitor“ und die Variable„mysql-monitor_password“ durch das Passwort„monitor“ ersetzt.

UPDATE global_variables SET variable_value='monitor' WHERE variable_name='mysql-monitor_username';
UPDATE global_variables SET variable_value='monitor' WHERE variable_name='mysql-monitor_password';

Gib die folgende Abfrage ein, um einige zusätzliche Parameter für die Überwachung des Percona XtraDB-Clusters auf dem ProxySQL-Server zu aktualisieren.

UPDATE global_variables SET variable_value='2000' WHERE variable_name IN ('mysql-monitor_connect_interval','mysql-monitor_ping_interval','mysql-monitor_read_only_interval');

Speichere die Änderungen, die du an‚global_variables‚ auf dem ProxySQL-Server vorgenommen hast, indem du die folgenden Abfragen ausführst.

LOAD MYSQL VARIABLES TO RUNTIME;
SAVE MYSQL VARIABLES TO DISK;

Du solltest eine Ausgabe wie diese erhalten.

Monitor Benutzer definieren

Führe nun die folgende Abfrage aus, um die Liste der„global_variables“ für„mysql-monitor_“ auf dem ProxySQL-Server zu überprüfen.

SELECT * FROM global_variables WHERE variable_name LIKE 'mysql-monitor_%';

Du solltest eine Ausgabe wie im folgenden Screenshot erhalten – Die Variable ‚mysql-monitor_username‘ muss den Wert des Benutzers ‚monitor‘ haben und die Variable ‚mysql-monitor_password‘ für das Passwort ‚monitor‘. Außerdem kannst du sehen, dass der Wert der Variablen „mysql-monitor_connect_interval“, „mysql-monitor_ping_interval“ und „mysql-monitor_read_only_interval“auf„2000“ geändert wurde.

Überwachung von Proxysql verifizieren

Zum Schluss gibst du die folgenden Abfragen ein, um den Überwachungsstatus des Percona XtraDB-Clusters auf dem ProxySQL-Server zu überprüfen. Dies zeigt dir die Protokolle des letzten Log-Status und des letzten Pings vom ProxySQL-Server zu allen verfügbaren Percona XtraDB Cluster-Servern.

SELECT * FROM monitor.mysql_server_connect_log ORDER BY time_start_us DESC LIMIT 6;
SELECT * FROM monitor.mysql_server_ping_log ORDER BY time_start_us DESC LIMIT 6;

Bei Erfolg solltest du eine Ausgabe wie diese erhalten.

Die letzten Verbindungsprotokolle des ProxySQL-Servers zu Percona XtraDB Cluster.

letzte Verbindung

Die letzten Ping-Protokolle des ProxySQL-Servers zum Percona XtraDB Cluster.

Proxysql anpingen

Da der MySQL- oder Percona XtraDB-Cluster vom ProxySQL-Server überwacht wird, kannst du jetzt einen neuen Benutzer einrichten, den deine Anwendungen verwenden werden.

Datenbankbenutzer für Anwendungen einrichten

Wenn der ProxySQL-Server installiert und konfiguriert ist und der MySQL- oder Percona XtraDB-Cluster als Datenbank-Backend hinzugefügt wurde, kannst du nun einen neuen Benutzer einrichten, den deine Anwendungen verwenden sollen. Anstatt sich direkt mit dem MySQL-Server zu verbinden, sollten sich deine Anwendungen mit dem ProxySQL-Server verbinden, der standardmäßig auf Port„6033“ läuft.

Um einen neuen Benutzer für deine Anwendungen einzurichten, musst du die folgenden Schritte ausführen:

  • Erstelle einen neuen Benutzer auf dem MySQL-Cluster oder Percona XtraDB-Cluster und richte die Berechtigungen ein.
  • Füge deinen Percona XtraDB Cluster-Benutzer auf dem ProxySQL-Server hinzu – füge ihn in die Tabelle‚mysql_users‚ ein.

Gehe zurück zu deinem Percona XtraDB Cluster Server und melde dich mit dem Benutzer root in der MySQL-Shell an. Dann erstellst du einen neuen MySQL-Benutzer und erteilst ihm durch Eingabe der folgenden Abfragen Zugriffsrechte auf alle Datenbanken. In diesem Beispiel erstellst du einen neuen Benutzer„sbuser“ mit dem Passwort„sbpass„. Außerdem musst du die IP-Adresse„192.168.5.85“ durch die IP-Adresse des ProxySQL-Servers ersetzen.

CREATE USER 'sbuser'@'192.168.5.85' IDENTIFIED WITH mysql_native_password by 'sbpass';
GRANT ALL PRIVILEGES ON *.* TO 'sbuser'@'192.168.5.85';
FLUSH PRIVILEGES;

Benutzer mysql erstellen

Gehe dann zurück zum ProxySQL-Server und führe die folgende Abfrage aus, um deinen neuen MySQL-Benutzer zum ProxySQL-Server hinzuzufügen. Deine MySQL-Benutzer sollten zur Tabelle„mysql_users“ auf dem ProxySQL-Server hinzugefügt werden. Außerdem unterstützt der ProxySQL-Server zum Zeitpunkt der Erstellung dieses Artikels noch keine verschlüsselten Passwörter.

INSERT INTO mysql_users (username,password) VALUES ('sbuser','sbpass');

Gib nun die folgenden Abfragen ein, um die Änderungen auf deinem ProxySQL-Server zu bestätigen und zu speichern. Damit ist dein neuer Benutzer fertig und du kannst diesen MySQL-Benutzer für deine Anwendungen verwenden.

LOAD MYSQL USERS TO RUNTIME;
SAVE MYSQL USERS TO DISK;

Benutzer proxysql anlegen

Jetzt sollte sich deine Anwendung mit dem Benutzer„sbuser“ und dem Passwort„sbpass“ über den Port 6033 mit dem ProxySQL-Server verbinden.

Datenbank und Benutzer verifizieren

In diesem Abschnitt überprüfst du die ProxySQL-Installation, indem du dich mit dem Benutzer und dem Passwort, die du erstellt hast, mit dem ProxySQL-Server verbindest.

Gib den folgenden „mysql“-Befehl ein, um dich mit dem neuen Benutzer „sbuser“ und dem Passwort „sbpass“ am ProxySQL-Server anzumelden. Wenn du erfolgreich warst, solltest du die Shell des ProxySQL-Servers sehen.

mysql -u sbuser -psbpass -h 127.0.0.1 -P 6033 --prompt='proxysql-deb> '

Verbindung zu proxysqlk mit neuem Benutzer

Gib die folgende Abfrage ein, um die Liste der Datenbanken auf dem Percona XtraDB Cluster zu überprüfen. In diesem Beispiel gibt es eine Datenbank„percona“ auf dem Percona XtraDB Cluster.

show databases;

Wechsle über die unten stehende„USE„-Abfrage zur Datenbank„percona„.

use percona

Liste der Datenbanken anzeigen

Gib dann die folgenden Abfragen ein, um die Listentabellen in der Datenbank„percona“ zu überprüfen. Dann rufst du die verfügbaren Daten in der aktuellen Datenbank ab, in der du arbeitest.

show tables;
select * from example;

Du solltest eine Ausgabe wie diese erhalten – Datenbanken, die im Percona XtraDB Cluster gespeichert sind, sind über den ProxySQL-Server zugänglich. Das bedeutet, dass deine Installation von ProxySQL als Load Balancer für den Percona XtraDB Cluster erfolgreich war.

Tabellen und Daten anzeigen

Als Nächstes gibst du die folgenden Abfragen ein, um neue Daten in die Datenbank„percona“ und die Tabelle„example“ einzufügen.

INSERT INTO percona.example VALUES (4, 'pxc04');
INSERT INTO percona.example VALUES (5, 'pxc05');

Überprüfe dann die neu aktualisierten Daten mit der folgenden Abfrage. Wenn die Abfrage erfolgreich war, solltest du die neuen Daten in der Tabelle„Beispiel“ erhalten. Dies bestätigt, dass dein Benutzer auf Datenbanken im Percona XtraDB Cluster lesen und schreiben kann.

select * from example;

neue Daten einfügen

Um sicherzustellen, dass deine neuen Daten auf dem Percona XtraDB Cluster aktualisiert werden, musst du sie direkt vom Percona XtraDB Cluster Server aus überprüfen.

Melde dich bei deinem Percona XtraDB Cluster Server an, greife über den Root-Benutzer auf die MySQL-Shell zu und führe dann die folgende Abfrage aus, um die Daten aus der Datenbank„percona“ Tabelle„example“ abzurufen.

select * from percona.example;

Bei Erfolg solltest du die neuen Daten erhalten, die du über den ProxySQL-Server hinzugefügt hast.

überprüfe aktualisierte Daten

Damit ist deine Installation des ProxySQL-Servers als Load Balancer für MySQL Cluster oder Percona XtraDB Cluster erfolgreich.

Fazit

In dieser Anleitung hast du ein Load Balancing von MySQL Cluster oder Percona XtraDB Cluster über ProxySQL auf einem Debian 11 Server konfiguriert. Du hast ProxySQLv2 installiert, den Percona XtraDB Cluster zu ProxySQL hinzugefügt und die Überwachung von Percona XtraDB Cluster auf ProxySQL konfiguriert.

Außerdem hast du MySQL- oder Percona XtraDB Cluster-Benutzer erstellt und konfiguriert, die für deine Anwendungen verwendet werden können. Du hast auch den Lastausgleich von MySQL Cluster oder Percona XtraDB Cluster über ProxySQL überprüft, der eine hohe Verfügbarkeit und Fehlertoleranz deines Datenbankservers und deiner Anwendungen ermöglicht.

Damit kannst du nun weitere Percona XtraDB Cluster-Knoten zu deinem lastverteilenden Datenbankserver hinzufügen. Außerdem kannst du eine Lese-/Schreibaufteilung über ProxySQL einrichten, ProxySQL-Sharding einrichten und eine SSL-Verbindung von proxySQL zum Percona XtraDB Cluster einrichten. Um mehr über ProxySQL zu erfahren, besuche die offizielle Dokumentation von ProxySQL.

Das könnte dich auch interessieren …