MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

So stellen Sie MariaDB Cluster 10.5 für Hochverfügbarkeit bereit

 

Die Bereitstellung von MariaDB Cluster 10.5 wird in ClusterControl seit Version 1.8.1 unterstützt.

MariaDB 10.5 ist ausgestattet mit:

  • Mehr granulare Privilegien

  • InnoDB-Leistungsverbesserungen

  • Volle GTID-Unterstützung für Galera-Cluster

  • Weitere Metadaten für Replikation und Binärprotokolle

  • Weitere SQL-Syntaxanweisungen (RETURNING-Anweisung zu INSERT, EXCEPT ALL und INTERSECT ALL, …)

  • Aktualisierungen des Leistungsschemas zur Anpassung an MySQL 5.7

  • Die S3-Speicher-Engine

Weitere Informationen finden Sie in unserem vorherigen Blog 

Weitere Einzelheiten zu dieser bestimmten Version finden Sie unter Was ist neu in MariaDB 10.5? Zu den wichtigsten Änderungen von Version 10.4 zu 10.5 gehören:

  • GTID-Konsistenz 

  • Cluster-Inkonsistenz/Fehlerabstimmung 

  • nicht blockierende DDL-Vorgänge (nur in der Enterprise-Version verfügbar)

  • Blackbox (nur in der Enterprise-Version verfügbar) 

  • Aktualisierte seine Galera wsrep-Bibliothek, für die 26.4.6 die neueste Version ist

Ursprünglich wurde XA-Transaktionsunterstützung für diese Version erwartet (lassen Sie sich nicht verwirren, da XA-Transaktionen vom MariaDB-Server, aber nicht vom Galera-Cluster unterstützt werden). Aufgrund einiger Leistungseinbußen unterstützt MariaDB Galera Cluster jedoch keine XA-Transaktionen.

In diesem Blog werden wir diskutieren, wie MariaDB Cluster 10.5 für Hochverfügbarkeit bereitgestellt wird.

MariaDB-Cluster für Hochverfügbarkeit

Der MariaDB-Cluster ist im Wesentlichen ein Galera-Cluster, der die MariaDB-Implementierung als Datenbankschicht für die Schnittstelle mit der InnoDB- oder XtraDB-Engine verwendet. MariaDB Galera Cluster ist ein virtuell synchroner Multi-Master-Cluster für MariaDB. Es ist nur unter Linux verfügbar und unterstützt die XtraDB/InnoDB-Speicher-Engines (obwohl es experimentelle Unterstützung für MyISAM gibt – siehe die Systemvariable wsrep_replicate_myisam). Wenn Galera Cluster verwendet wird, können Datenbank-Lese- und -Schreibvorgänge an jeden beliebigen Knoten geleitet werden. Jeder einzelne Knoten kann ohne Betriebsunterbrechung und ohne aufwändige Failover-Verfahren ausfallen.

Mit der Art von Galera, die innerhalb des MariaDB-Clusters angepasst wurde, ist es eine Hochverfügbarkeitslösung mit synchroner Replikation, Failover und Neusynchronisierung. Es bietet die Vorteile:kein Datenverlust, keine Slave-Verzögerung, Lese- und Schreibskalierbarkeit und hohe Verfügbarkeit in verschiedenen Rechenzentren.

MariaDB-Cluster 10.5 bereitstellen

MariaDB bietet eine direkte und einfache Einrichtung für die Installation Ihres MariaDB-Clusters 10.5. Der manuelle Prozess kann mühsam sein, aber mit automatisierten Skripten, die von MariaDB bereitgestellt werden, können Repositories in Übereinstimmung mit Ihrer Zieldatenbankversion, Ihrem Betriebssystemtyp und Ihrer Betriebssystemversion eingerichtet werden.

Für diese Übung habe ich das folgende 3-Knoten-Galera-Cluster-Setup mit den folgenden IP-Adressen:192.168.40.210, 192.168.40.220, 192.168.40.230.

Richten Sie Ihr Repository ein

Wie bereits erwähnt, hat MariaDB ein Skript namens mariadb_repo_setup und es ist einfach zu verwenden. Sie können die Zielversion Ihrer Datenbank, den Betriebssystemtyp und Ihre Betriebssystemversion angeben.

Zum Beispiel installiere ich mit EL 8:

curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup |  sudo bash -s -- --mariadb-server-version="mariadb-10.5" --os-type=rhel --os-version=8

oder Installation in Ubuntu Focal Fossa,

curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup |  sudo bash -s -- --mariadb-server-version="mariadb-10.5" --os-type=ubuntu --os-version=focal

Beachten Sie, dass bei Verwendung des Skripts mariadb_repo_setup das Paket apt-transport-https als Abhängigkeit erforderlich ist. Installieren Sie also zuerst dieses Paket, bevor Sie das Skript mariadb_repo_setup nutzen können.

apt update

apt install apt-transport-https

Führen Sie nun den Befehl für Ihre drei Knoten gemäß ihrem Betriebssystem aus. Natürlich muss die MariaDB-Version 10.5 sein.

MySQL-Konfiguration einrichten

Die Konfigurationsdatei hängt von Ihren Serverressourcen, der Art der Serverumgebung und der zugewiesenen IP-Adresse ab. Für diesen Blog können Sie dieses produktionsbereite MariaDB-Cluster/PXC-Konfigurations-Setup verwenden, das wir zur Bereitstellung in unseren Percona XtraDB-Cluster-/MariaDB-Cluster-Datenbanken mit ClusterControl verwendet haben. Bemerkenswerte Variablen, die Sie benötigen oder ändern können, sind die folgenden:

  • innodb_buffer_pool_size — Legt den Pufferpool von 70 % bis 80 % verfügbarem RAM Ihres Servers fest

  • wsrep_provider — Pfad der von Galera kompilierten Bibliothek. Für Enterprise Linux lautet der Pfad /usr/lib64/galera-4/libgalera_smm.so. Wohingegen Debian/Ubuntu in /usr/lib/galera/libgalera_smm.so.

    ist
  • wsrep_node_address – Dies ist die IP-Adresse des Knotens

  • wsrep_sst_method – Entweder Sie können es ändern, aber wir empfehlen Ihnen, mariabackup zu verwenden. Mögliche Werte, die Sie wählen können, sind rsync, mysqldump, xtrabackup, xtrabackup-v2, mariabackup.

  • wsrep_cluster_name – Der Name Ihres MariaDB-Clusters. Es muss mit allen Ihren Knoten in einem einzelnen MariaDB-Cluster identisch sein.

  • wsrep_cluster_address – Enthält die Adressen Ihrer Knoten innerhalb des Clusters. Es muss eine gültige IP, ein gültiger Hostname oder ein gültiger FQDN sein.

  • wsrep_node_name – Der Name Ihres Knotens. Der Name kann in wsrep_sst_donor als bevorzugter Spender verwendet werden. Beachten Sie, dass mehrere Knoten in einem Cluster denselben Namen haben können.

Um SST auszuführen, können der Benutzer und das Passwort für die folgenden Abschnitte [mysqldump], [xtrabackup] und [mysqld] geändert werden, wenn Sie dies wünschen. Halten wir es für diese Übung einfach und lassen Sie die Werte einfach so, wie sie sind.

Kopieren Sie nun die Konfigurationsdatei und legen Sie sie in /etc/my.cnf ab. Tun Sie dies mit allen Ihren drei Galera-Knoten.

Erforderliche Pakete installieren

Installieren Sie die Pakete für alle drei Galera-Knoten. Befolgen Sie den folgenden Befehl basierend auf Ihrer Zielbetriebssystemumgebung.

Für RHEL/Rocky/AlmaLinux:

sudo yum install MariaDB-server MariaDB-client galera-4 MariaDB-backup

Für Debian/Ubuntu:

sudo apt update

sudo apt-get install mariadb-server galera-4 mariadb-client libmariadb3 mariadb-backup mariadb-common

Halten Sie nach Abschluss der Installation den MariaDB-Prozess an und initialisieren Sie den Cluster als einzelnen Knoten. Dies soll Ihren Galera-Cluster booten. In diesem Stadium führe ich es auf dem Knoten 192.168.40.210 aus.

$ /usr/bin/galera_new_cluster

SST/IST-Benutzer erstellen

Erstellen Sie den Backup-Benutzer, der für SST oder IST verwendet werden soll. Führen Sie die folgenden SQL-Anweisungen unten nur auf dem ersten Knoten aus, auf dem Sie den Cluster initiiert haben. In diesem Stadium habe ich es in Knoten 192.168.40.210 ausgeführt.

CREATE USER [email protected] IDENTIFIED BY 'backuppassword';

GRANT PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'backupuser'@'localhost';

Zu diesem Zeitpunkt sind wir bereits eingerichtet und bereit, die verbleibenden Knoten zu verbinden.

Starten Sie den MariaDB-Server

Nun haben wir bereits den ersten Knoten eingerichtet. Wir sind bereit, die verbleibenden Knoten zu verbinden. Starten Sie einfach den MariaDB-Dienst. Führen Sie einfach den folgenden Befehl aus:

systemctl start mariadb

Führen Sie den Befehl nacheinander für die verbleibenden Knoten aus. An diesem Punkt sind alle Knoten synchron.

Hinzufügen von Steroiden für Ihren MariaDB-Cluster 10.5 für Hochverfügbarkeit

Wahrscheinlich genügt die Bereitstellung des MariaDB-Clusters 10.5 für Hochverfügbarkeit Ihren Anforderungen in einer Produktionsumgebung nicht. Das Hinzufügen weiterer Steroide, wie z. B. die Installation von HAProxy zusammen mit Keepalived für Ihre Redundanz, bringt mehr Hochverfügbarkeit für Ihre Datenbankumgebung.

Das Einrichten von HAProxy und Keepalived, um die gewünschte Topologie und Umgebung zu erhalten, kann zu mehr Aufwand führen. Sie können dies jedoch mit ClusterControl automatisieren. Mit ClusterControl können Sie Ihren MariaDB-Cluster 10.5 bereitstellen und weitere Lösungen für den Lastausgleich hinzufügen, z. B. ProxySQL, MaxScale oder garbd. Sie können Keepalived zu Ihrem Cluster hinzufügen, um Redundanz und automatische Failover-Lösungen im Notfall hinzuzufügen.

Sie können eine kostenlose Testversion von ClusterControl herunterladen, mit der Sie diese HA-Lösungen bereitstellen und Ihren gesamten Datenbankbetrieb von einem einzigen Fenster aus verwalten können. Wir zeigen Ihnen, wie Sie Ihren MariaDB 10.5-Cluster mit ClusterControl bereitstellen.

MariaDB 10.5-Cluster mit ClusterControl bereitstellen

Sobald Sie ClusterControl installiert haben, klicken Sie auf das Symbol in der oberen rechten Ecke und Sie sehen den Bereitstellungsassistenten, genau wie unten.

Sie können es einfach einrichten. Folgen Sie einfach der Reihe von Schritten, die auf dem Ablauf der Benutzeroberfläche basieren.

Bereitstellen von HAProxy für das Load-Balancing-Management

An dieser Stelle würde ich davon ausgehen, dass Sie Ihren MariaDB-Cluster 10.5 vollständig eingerichtet haben. Lassen Sie uns nun den HAProxy bereitstellen:

Alternativ können Sie zu Manage → Load Balancer → HAProxy gehen.

Wählen oder geben Sie dann die Adresse ein, an der der HAProxy installiert werden soll, und wählen Sie Ihre Galera-Knoten aus, die vom HAProxy überwacht werden sollen. Siehe das Beispiel unten:

Fügen Sie mindestens zwei Bereitstellungen von HAProxy hinzu, um mehr Verfügbarkeit hinzuzufügen. Immer wenn einer Ihrer HAProxys ausfällt, wird Ihre Anwendung an den anderen Knoten weitergeleitet, der noch verfügbar oder online ist. Dies ist sehr wichtig, insbesondere bei Datenbank- oder System-Upgrades, abgesehen von katastrophalen oder Katastrophenereignissen.

Keepalive bereitstellen

Sie verwenden denselben Prozess oben, um Keepalived bereitzustellen, wie unten gezeigt:

Wenn Sie bemerkt haben, ich habe zwei HAProxy-Instanzen, für die ich Keepalived installieren werde , die in jedem Knoten vorhanden sein soll, auf dem der HAProxy läuft.

Fertigstellung Ihres MariaDB-Clusters 10.5 mit Hochverfügbarkeit

Nun, da wir alles eingerichtet haben, sollten Sie eine Umgebung haben, die so aussieht:

Abschluss

Dieses Setup für Ihren MariaDB 10.5-Cluster bietet Ihnen die Vorteile einer hohen Verfügbarkeit mit mehreren Neunen. HAProxy bietet Ihnen mit seiner Lese- und Schreibtrennung mehr Lastausgleichsfunktionen, und Keepalived stellt sicher, dass im Falle eines Ausfalls eines Ihrer HAProxys ein Failover auf den nächsten verfügbaren Knoten erfolgt. Ihre Anwendung verbindet sich nur mit der virtuellen IP-Adresse (die auf die VRRP folgt) und erfordert keine zusätzliche Konfiguration oder Einrichtung.

Um noch mehr Flexibilität und Lese-/Schreibtrennung hinzuzufügen, indem Sie nur in einem Port spielen, könnten Sie HAProxy durch ProxySQL ersetzen. Es kann schwierig sein, ein perfektes Setup für Hochverfügbarkeit zu erreichen, und jedes hat seine Nachteile. Am wichtigsten ist jedoch, dass nur geringe bis keine Ausfallzeiten erreicht werden.

Weitere Tipps zum Aufbau eines hochverfügbaren MariaDB-Setups finden Sie in diesem Artikel zur Bereitstellung der MariaDB-Replikation.

Wenn Sie über Datenbanktrends und Best Practices auf dem Laufenden bleiben möchten, abonnieren Sie unseren Newsletter und folgen Sie uns auf Twitter und LinkedIn.