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

Upgrades ohne Ausfallzeiten leicht gemacht mit ClusterControl

„Aktualisieren Sie Ihre Datenbank stets auf die neueste Version – das dient Ihrer Sicherheit“ ist etwas, das Sie häufig als guten Ratschlag und bewährte Vorgehensweise in Bezug auf die Datenbankverwaltung hören. Andererseits kann das Aktualisieren Ihrer Datenbank eine zeitaufwändige Aufgabe sein. Selbst ein Upgrade einer Nebenversion erfordert, dass Sie das Upgrade gründlich in einer Staging-Umgebung testen, bevor Sie Ihr Produktions-Setup aktualisieren. Also, was ist die große Sache? Wenn Sie nur hinter einer Nebenversion zurückbleiben, sollte das keine Rolle spielen, oder? Nun, vielleicht nicht ... bis es so ist. Und bist du wirklich bereit, ein solches Risiko einzugehen?

Anfang dieses Jahres wurde im Galera-Cluster (CVE-2021-27928) eine neue potenziell gefährliche Schwachstelle identifiziert. Auf den ersten Blick sehen wir, dass der Schweregrad als hoch markiert wurde, und wenn wir uns weiter mit dem Thema befassen, sieht es tatsächlich schwerwiegend aus. Es scheint, dass ein SUPER-Benutzer jeden beliebigen Code ausführen kann, indem er die Variablen wsrep_provider und wsrep_notify_cmd zur Laufzeit ändert. Es ermöglicht dem Benutzer, die .so-Bibliothek zu laden und auf ein Skript zu verweisen, das der Server ausführt. Wie Sie sich vorstellen können, ist dies keine gute Situation. Sicher, Sie müssen Zugriff auf den SUPER-Benutzer haben, und Sie müssten etwas zur Verfügung haben, um es auf dem Datenbankknoten auszuführen, aber die Tatsache, dass Galera so konfiguriert werden kann, dass es beliebigen Code als „mysql“-Benutzer ausführt, ist schon schlimm genug besitzen.

Wie üblich wurden in solchen Fällen die Korrekturen erstellt und neue Versionen der Software, die von der Schwachstelle nicht betroffen sind, wurden veröffentlicht. Dieses spezielle Problem wurde in MariaDB 10.5.9, 10.4.18, 10.3.28 und 10.2.37 sowie in Percona XtraDB Cluster 5.6.51-28.46, Percona XtraDB Cluster 5.7.33-31.49 und Percona XtraDB Cluster behoben 8.0.22-13.1. Alles scheint wieder normal zu sein. Richtig?

Falsch. Es laufen unzählige Systeme in der Produktion, die noch nicht auf die neue, nicht betroffene Version aktualisiert wurden. Das Support-Team von Multiplenines steht in Kontakt mit vielen Datenbankumgebungen in freier Wildbahn, und wir arbeiten ständig mit Interessenten zusammen, um ihnen bei der Migration zu einer von ClusterControl verwalteten Umgebung zu helfen. Wir sehen alle Arten von MySQL (und nicht nur MySQL), die in veralteten Versionen laufen, manchmal sogar Versionen, die ihr Lebensende erreicht haben und keine Sicherheitsupdates mehr erhalten. Das sollte nicht der Fall sein, insbesondere wenn Sie ein ClusterControl-Benutzer sind.

ClusterControl enthält eine Reihe von Funktionen, die Ihnen dabei helfen, mit allen Sicherheitsfixes auf dem Laufenden zu bleiben. Werfen wir einen Blick darauf:

Zunächst kommt ClusterControl mit Betriebsberichten, einer davon ist der Paket-Upgrade-Bericht:

Wie alle Betriebsberichte von ClusterControl kann auch der Paket-Upgrade-Bericht geplant werden regelmäßig ausgeführt und dann per E-Mail zugestellt werden. Es enthält Informationen über die auf den Knoten installierten Paketversionen und ob irgendwelche Upgrades durchgeführt werden sollten:

Der Paketaktualisierungsbericht enthält eine Liste von Paketen, die für alle aktualisiert werden sollten Datenbanken, Loadbalancer, Sicherheitsfixes und alle anderen Pakete, die auf dem Knoten installiert sind. Für alle Systempakete besteht die Lösung darin, sie mit Standardmethoden (apt, yum) zu aktualisieren. In Bezug auf die Datenbanken und Loadbalancer verfügt ClusterControl über Funktionen, mit denen Sie das Upgrade der Nebenversion direkt über die Benutzeroberfläche durchführen können.

Bevor wir uns dorthin begeben, nehmen wir an, dass die Datenbank aktualisiert werden muss. Sie möchten nicht einfach fortfahren und das Upgrade blind ausführen – es könnte möglicherweise Probleme für Ihre Anwendung verursachen. Es sollte nicht – Nebenversionen beeinträchtigen die Abwärtskompatibilität nicht (außer wenn Sie MySQL 8.0 verwenden – dann ja, Sie können alles erwarten, wenn Sie von 8.0.x auf 8.0.x+1 wechseln); Es besteht jedoch immer ein gewisses Risiko. Zunächst sollten Sie das Upgrade in einer separaten Umgebung testen.

Wir haben einen einfachen MariaDB Galera-Cluster mit ProxySQL und Keepalived:

Wir möchten einen Testcluster erstellen, damit wir das Upgrade testen können Prozess. Mit ClusterControl ist es so einfach wie die Verwendung des Jobs „Create Replica Cluster“:

Wir können die neuen Daten aus dem vorhandenen Cluster abrufen oder die Daten aus einer Sicherung verwenden.

Wir müssen auch einen Quellknoten im Produktionscluster auswählen:

Dann müssen wir einen regulären Bereitstellungsassistenten durchlaufen, die Version auswählen und Hersteller der Datenbank, Definieren des Root-Passworts und so weiter. Abschließend übergeben wir die Knoten, auf denen der Cluster installiert wird.

Als Ergebnis sehen Sie einen neuen Cluster in der Liste mit einem deutliches Zeichen dafür, dass es vom Produktionscluster repliziert wird. Erwähnenswert ist, dass ClusterControl in der Standardeinstellung die neuesten Versionen der Pakete verwendet, um den Replikat-Cluster zu erstellen. Wenn Sie nur die Abfragen überprüfen möchten, reicht dies aus. Wenn Sie den gesamten Upgrade-Prozess durchlaufen möchten, müssten Sie ältere Versionen der MySQL-Pakete fixieren, um eine alte Version zu installieren (und sie dann loslösen und das Upgrade testen).

Auf die eine oder andere Weise werden Sie nach erfolgreichen Tests irgendwann das Upgrade durchführen wollen. ClusterControl kann Ihnen dabei helfen:

Unter Verwalten -> Upgrades finden Sie eine Benutzeroberfläche zum Durchführen des Upgrades .

Sie können „Nach neuen Paketen suchen“ verwenden, um die Datenbank verfügbarer Pakete zu aktualisieren Pakete. Wir können auch auswählen, welche Knoten wir aktualisieren möchten und welche Dienste: 

Einfach bestätigen und fertig - ClusterControl führt das Upgrade durch und besorgt es Ihnen neueste Version der Pakete.

Wie Sie sehen können, hält ClusterControl Ihre Datenbanken einfach und unkompliziert auf dem neuesten Stand. Der einzige Schritt, den Sie manuell durchführen müssen, ist das richtige Testen. Ansonsten - alles andere kann ClusterControl für Sie erledigen. Möchten Sie mehr darüber erfahren, wie ClusterControl Ihnen helfen kann, Ihre Datenbank effektiv zu verwalten? Probieren Sie es 30 Tage lang kostenlos aus.