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

Automatisiertes Testen des Upgrade-Prozesses für MySQL/MariaDB/Percona Server

Upgrades sind immer eine schwierige und zeitraubende Aufgabe. Zuerst sollten Sie Ihre Anwendung in einer Testumgebung testen, also müssen Sie dafür idealerweise Ihre aktuelle Produktionsumgebung klonen. Dann müssen Sie einen Plan für die Durchführung des Upgrades erstellen, das je nach Unternehmen ohne Ausfallzeiten (oder fast ohne) sein kann, oder sogar ein Wartungsfenster einplanen, um sicherzustellen, dass es so wenig Auswirkungen hat, wenn etwas schief geht wie möglich.

Wenn Sie all diese Dinge manuell erledigen möchten, besteht eine große Wahrscheinlichkeit menschlicher Fehler und der Prozess wird langsam sein. In diesem Blog werden wir sehen, wie Sie Tests zum Aktualisieren Ihrer MySQL-, MariaDB- oder Percona Server-Datenbanken mit ClusterControl automatisieren.

Art der Upgrades

Es gibt zwei Arten von Upgrades:Minor Upgrades und Major Upgrades.

Kleinere Upgrades

Das erste, Minor Upgrade, ist das gebräuchlichste und sicherste Upgrade, und in den meisten Fällen wird dies an Ort und Stelle durchgeführt. Da nichts zu 100 % sicher ist, müssen Sie immer Backups und Replikations-Slave-Knoten haben. Falls also beim Upgrade etwas schief geht und Sie aus irgendeinem Grund kein Rollback/Downgrade durchführen können, können Sie einen Slave-Knoten hochstufen, und Ihre Systeme können dies immer noch ohne Unterbrechung arbeiten.

Sie können diese Art von Upgrade mit ClusterControl durchführen. Gehen Sie dazu zu ClusterControl -> Select the Cluster -> Manage -> Upgrades.

Auf jedem ausgewählten Knoten wird das Upgrade-Verfahren:

  • Stoppknoten

  • Upgrade-Knoten

  • Startknoten

Der Master-Knoten in einer Replikationstopologie wird nicht aktualisiert. Um den Master zu aktualisieren, muss zuerst ein anderer Knoten zum neuen Master befördert werden.

Große Upgrades

Für größere Upgrades wird das In-Place-Upgrade nicht empfohlen, da das Risiko, dass etwas schief geht, für eine Produktionsumgebung zu hoch ist. Stattdessen können Sie Ihren aktuellen Datenbankcluster klonen und Ihre Anwendung dort testen, und wenn Sie fertig sind, können Sie ihn neu erstellen oder sogar einen neuen Cluster in der neuen Version erstellen und den Datenverkehr wechseln, wenn er bereit ist. Für diese Upgrades gibt es unterschiedliche Ansätze. Sie können die Knoten einzeln aktualisieren oder einen anderen Cluster erstellen, der den Datenverkehr des aktuellen Clusters repliziert, Sie können auch Load Balancer verwenden, um die Hochverfügbarkeit zu verbessern, und weitere Optionen. Der beste Ansatz hängt von der Ausfalltoleranz und dem Recovery Time Objective (RTO) ab.

Sie können größere Upgrades nicht direkt mit ClusterControl durchführen, da Sie, wie bereits erwähnt, zuerst alles testen müssen, um sicherzustellen, dass das Upgrade sicher ist, aber Sie können verschiedene ClusterControl-Funktionen verwenden, um dies vorzunehmen diese Aufgabe leichter. Sehen wir uns also einige dieser Funktionen an.

Sicherungen

Backups sind ein Muss vor jedem Upgrade. Eine gute Sicherungsrichtlinie kann große Probleme für das Unternehmen vermeiden. Sehen wir uns also an, wie ClusterControl dies automatisieren kann.

Erstellen einer Sicherung

Gehen Sie zu ClusterControl -> Cluster auswählen -> Backup -> Backup erstellen.

Sie können ein neues Backup erstellen oder ein geplantes konfigurieren.

Sie können je nach Datenbanktechnologie verschiedene Backup-Methoden auswählen und im selben Abschnitt können Sie den Server auswählen, von dem das Backup erstellt werden soll, wo Sie das Backup speichern möchten und ob Sie möchten die Sicherung im selben Job in die Cloud (AWS, Azure oder Google Cloud) hochladen.

Sie können Ihr Backup unter anderem auch komprimieren und verschlüsseln und den Aufbewahrungszeitraum angeben.

Im Backup-Bereich können Sie den Fortschritt des Backups und Informationen wie Methode, Größe, Speicherort und mehr sehen.

Bereitstellen einer Testumgebung

Dazu müssen Sie nicht alles von Grund auf neu erstellen. Stattdessen können Sie ClusterControl verwenden, um dies manuell oder automatisiert zu tun.

Sicherung auf eigenständigem Host wiederherstellen

Im Bereich Sicherung können Sie die Option „Auf eigenständigem Host wiederherstellen und überprüfen“ auswählen, um eine Sicherung in einem separaten Knoten wiederherzustellen.

Hier können Sie angeben, ob ClusterControl die Software auf dem neuen Knoten installieren soll, und die Firewall oder AppArmor/SELinux (je nach Betriebssystem) deaktivieren. Dazu benötigen Sie einen dedizierten Host (oder VM), der nicht Teil des Clusters ist.

Sie können den Knoten am Laufen halten oder ClusterControl kann den Datenbankdienst bis zum nächsten Wiederherstellungsjob herunterfahren. Wenn es fertig ist, sehen Sie das wiederhergestellte/verifizierte Backup in der Backup-Liste mit einem Häkchen markiert.

Wenn Sie diese Aufgabe nicht manuell durchführen möchten, können Sie diesen Vorgang mit der Funktion „Sicherung überprüfen“ planen, um diesen Auftrag regelmäßig in einem Sicherungsauftrag zu wiederholen. Wir werden im nächsten Abschnitt sehen, wie das geht.

Automatische ClusterControl-Backup-Verifizierung

Um diese Aufgabe zu automatisieren, gehen Sie zu ClusterControl -> Select your Cluster -> Backup -> Create Backup und wählen Sie die Option Scheduled Backup.

Die Funktion zum automatischen Überprüfen der Sicherung ist nur für geplante Sicherungen verfügbar, und der Vorgang ist derselbe, den wir in einem vorherigen Abschnitt beschrieben haben. Stellen Sie im zweiten Schritt sicher, dass Sie die Option Sicherung überprüfen aktiviert haben, und geben Sie die erforderlichen Informationen ein.

Wenn der Job abgeschlossen ist, sehen Sie das Verifizierungssymbol im ClusterControl Backup-Bereich, das gleiche wie bei der manuellen Verifizierung, mit dem Unterschied, dass Sie es nicht benötigen sich um die Wiederherstellungsaufgabe zu kümmern. ClusterControl stellt das Backup jedes Mal automatisch wieder her und Sie können Ihre Anwendung mit den neuesten Daten testen.

Automatische Wiederherstellung und Failover

Wenn die automatische Wiederherstellungsfunktion aktiviert ist, stuft ClusterControl im Falle eines Fehlers den fortschrittlichsten Slave-Knoten zum Master ein und benachrichtigt Sie über das Problem. Außerdem wird ein Failover für die restlichen Slave-Knoten durchgeführt, um vom neuen Master-Server zu replizieren.

Wenn es Load Balancer in der Topologie gibt, wird ClusterControl sie neu konfigurieren, um die Topologieänderungen anzuwenden.

Sie können ein Failover bei Bedarf auch manuell ausführen. Gehen Sie zu ClusterControl -> Select the Cluster -> Nodes -> Select the Node to be promoted -> Node Actions -> Promote Slave.

Auf diese Weise können Sie, wenn während des Upgrades etwas schief geht, ClusterControl verwenden, um es so schnell wie möglich zu beheben.

Automatisierung von Dingen mit der ClusterControl-CLI

ClusterControl CLI, auch als s9s bekannt, ist ein in ClusterControl Version 1.4.1 eingeführtes Befehlszeilentool zur Interaktion, Steuerung und Verwaltung von Datenbank-Clustern mithilfe des ClusterControl-Systems. Die ClusterControl-CLI öffnet eine Tür für die Cluster-Automatisierung, wo Sie sie einfach in vorhandene Bereitstellungsautomatisierungstools wie Ansible, Puppet, Chef usw. integrieren können. Sehen wir uns nun einige Beispiele für dieses Tool an.

Upgrade

$ s9s cluster --cluster-id=19 \
--check-pkg-upgrades \
--log
$ s9s cluster --cluster-id=19 \
--available-upgrades \
--nodes='10.10.10.146' \
--log \
--print-json
$ s9s cluster --cluster-id=19 \
--upgrade-cluster \
--nodes='10.10.10.146' \
--log

Sicherung erstellen

$ s9s backup --create \
--backup-method=mysqldump \
--cluster-id=2 \
--nodes=10.10.10.146:3306 \
--on-controller \
--backup-directory=/storage/backups
--log

Sicherung wiederherstellen

$ s9s backup --restore \
--cluster-id=19 \
--backup-id=3 \
--wait

Sicherungen überprüfen

$ s9s backup --verify \
--backup-id=3 \
--test-server=10.10.10.151 \
--cluster-id=19 \
--log

Slave-Knoten befördern

$ s9s cluster --promote-slave \
--cluster-id=19 \
--nodes='10.10.10.146' \
--log

Fazit

Upgrades sind notwendige, aber zeitraubende Aufgaben. Die Bereitstellung einer Testumgebung jedes Mal, wenn Sie ein Upgrade benötigen, könnte ein Albtraum sein, und es ist schwierig, diese ohne ein Automatisierungstool auf dem neuesten Stand zu halten.

Mit ClusterControl können Sie kleinere Upgrades durchführen oder sogar die Testumgebung bereitstellen, um die Upgrade-Aufgabe einfacher und sicherer zu machen. Sie können es auch in verschiedene Automatisierungstools wie Ansible, Puppet und mehr integrieren.