Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So führen Sie fortlaufende Upgrades für MySQL durch

Es gibt verschiedene Gründe für ein Upgrade Ihrer Datenbanken. Es kann sein, Sicherheitskorrekturen anzuwenden, neue Funktionen zu verwenden, Kompatibilitätsprobleme zu lösen oder einfach nur Ihr System auf dem neuesten Stand zu halten. Dieses Upgrade kann ein großes oder ein kleineres Upgrade sein, und je nach Technologie gibt es verschiedene Ansätze, um diese Aufgabe zu erledigen, aber wenn Sie möchten, dass Ihre Systeme die ganze Zeit ohne Ausfallzeiten laufen, könnte die Durchführung eines fortlaufenden Upgrades die beste Option sein .

In diesem Blog werden wir einige Überlegungen sehen, die vor dem Upgrade zu berücksichtigen sind, und wie man ein rollierendes Upgrade auf MySQL durchführt.

Kleine vs. große Upgrades

Im Allgemeinen sind kleinere Upgrades insofern sicher, als Sie sie leicht herunterstufen oder rückgängig machen können, und sollten mit den vorherigen Paketen und Funktionen kompatibel sein.

Das Upgrade einer Hauptversion birgt einige Risiken wie das Entfernen von Datenbankpaketen, Konfigurations- und Konnektorkompatibilität, veraltete Funktionen und mehr.

Auch wenn das Testen für beide Szenarien wichtig ist, ist es im Falle größerer Upgrades ein Muss, wenn Sie ernsthafte Probleme für Ihr Unternehmen vermeiden wollen.

Vor dem Upgrade

Sehen wir uns nun einige Überlegungen vor dem Upgrade an, um zukünftige Probleme zu vermeiden.

Sicherungen

Backups sind immer wichtig, und noch wichtiger, wenn Sie Ihre Datenbank aktualisieren möchten. Wenn etwas schief geht und andere Notfallwiederherstellungsoptionen fehlschlagen, benötigen Sie eine Sicherung, um Ihre Datenbank wiederherzustellen. Bevor Sie also mit der Aufgabe beginnen, erstellen Sie eine vollständige Sicherung (physisch oder/und logisch) Ihrer aktuellen Datenbank und bewahren Sie sie sicher auf, bis sichergestellt ist, dass für ein paar Tage/Wochen alles ordnungsgemäß funktioniert.

Überprüfen Sie veraltete Funktionen

Wenn Sie eine Funktion verwenden, die in der neuen Version veraltet ist, könnte Ihre Anwendung fehlschlagen, und Sie müssen ein Rollback durchführen, um Ihre Systeme wiederherzustellen, was zu Ausfallzeiten führt (abhängig vom Ansatz) und a Zeitverlust. Überprüfen Sie die veraltete Funktion und vergleichen Sie sie mit den von Ihnen verwendeten, um diesen fehlgeschlagenen Upgrade-Versuch zu vermeiden.

Testen

Dies ist nicht nur für Upgrades wichtig, sondern auch für jede Änderung in Ihrer Datenbank oder Anwendung. Mit einer Testumgebung, die die Produktionsumgebung repliziert, können Sie Zeit sparen und unerwartete Probleme während eines Upgrades oder einer Datenbankänderung vermeiden.

Zurücksetzen

Bei jedem Upgrade ist es wichtig, ein Rollback bereit zu haben, das bei Bedarf verwendet werden kann, damit Ihre Datenbank so schnell wie möglich einsatzbereit ist. Andernfalls könnte sich dies auf Ihre RTO (Recovery Time Objective) auswirken, falls Sie den Cluster aus einem Backup oder einer anderen Wiederherstellungsplanoption neu erstellen müssen.

Denken Sie daran, dass Downgrades manchmal nicht möglich sind, Sie sollten also einen sekundären Plan haben, falls Sie Ihre Änderungen rückgängig machen müssen.

Lieferantenprüfungen

Je nach Anbieter und Version können Sie den mysqlcheck-Befehl verwenden, um die Vorabprüfung Ihrer aktuellen Installation durchzuführen und zu bestätigen, dass Sie bereit sind.

$ mysqlcheck -u root -p --all-databases --check-upgrade

Enter password:

mysql.columns_priv                                 OK

mysql.db                                           OK

mysql.engine_cost                                  OK

mysql.event                                        OK

mysql.func                                         OK

mysql.general_log                                  OK

mysql.gtid_executed                                OK

mysql.help_category                                OK

mysql.help_keyword                                 OK

mysql.help_relation                                OK

mysql.help_topic                                   OK

mysql.innodb_index_stats                           OK

mysql.innodb_table_stats                           OK

mysql.ndb_binlog_index                             OK

mysql.plugin                                       OK

mysql.proc                                         OK

mysql.procs_priv                                   OK

mysql.proxies_priv                                 OK

mysql.server_cost                                  OK

mysql.servers                                      OK

mysql.slave_master_info                            OK

mysql.slave_relay_log_info                         OK

mysql.slave_worker_info                            OK

mysql.slow_log                                     OK

mysql.tables_priv                                  OK

mysql.time_zone                                    OK

mysql.time_zone_leap_second                        OK

mysql.time_zone_name                               OK

mysql.time_zone_transition                         OK

mysql.time_zone_transition_type                    OK

mysql.user                                         OK

sys.sys_config                                     OK

Dies ist eine erste Überprüfung, die vor dem Upgrade durchgeführt werden muss, und es wird überprüft, ob Folgendes nicht vorhanden ist:

  • Tabellen mit veralteten Datentypen oder Funktionen
  • Verwaiste FRM-Dateien
  • Trigger mit fehlendem oder leerem Definierer oder einem ungültigen Erstellungskontext

Es gibt noch ein paar Dinge, die Sie überprüfen müssen, aber um einen ausführlichen Blogbeitrag zu vermeiden, können Sie sich dazu auf die offizielle MySQL-Dokumentation beziehen.

Manuelle fortlaufende Upgrades für MySQL

Es gibt verschiedene Ansätze, um ein rollierendes Upgrade durchzuführen. Es könnte vorhanden sein, Replikation verwenden oder sogar eine Mischung aus beidem. Wenn Sie Ausfallzeiten vermeiden möchten, sollten Sie in jedem Fall während des Upgrades keine Änderungen an Ihrer Anwendung vornehmen. Dazu können Sie Ihren Datenbanken einen Load Balancer vorschalten. Ihre Anwendung stellt eine Verbindung zu Ihrem Load Balancer her und leitet den Datenverkehr an die verfügbaren Knoten weiter.

Nehmen wir an, Sie haben eine MySQL-Replikation mit 1 Master- und 2 Slave-Knoten und 1 HAProxy-Knoten davor:

Ein vereinfachter Weg zur Durchführung eines manuellen fortlaufenden Upgrades in dieser Umgebung könnte sein:

  • Deaktivieren Sie einen Slave-Knoten von Ihrem HAProxy
  • Stellen Sie sicher, dass Sie keinen Datenverkehr auf diesem Slave-Knoten haben
  • Aktualisieren Sie den Slave-Knoten manuell
  • Überprüfen Sie den Replikationsstatus, um sicherzustellen, dass er aktuell ist
  • Deaktivieren Sie den Master-Knoten in Ihrem HAProxy
  • Stellen Sie sicher, dass Sie keinen Datenverkehr auf Ihrem Master-Knoten haben
  • Bewerben Sie den aktualisierten Slave-Knoten
  • Aktivieren Sie es in Ihrem HAProxy
  • Bestätigen Sie, dass der neue Master Datenverkehr empfängt
  • Konfigurieren Sie Ihren zweiten Slave neu, um vom neuen Master zu replizieren
  • Deaktiviere den zweiten Slave von deinem HAProxy
  • Stellen Sie sicher, dass Sie keinen Datenverkehr auf diesem Slave-Knoten haben
  • Aktualisieren Sie den Slave-Knoten manuell
  • Überprüfen Sie den Replikationsstatus, um sicherzustellen, dass er aktuell ist
  • Aktivieren Sie es in Ihrem HAProxy
  • Bestätigen Sie, dass der Slave-Knoten Datenverkehr empfängt (falls erforderlich)
  • Konfigurieren Sie Ihren alten Master neu, um vom neuen Master zu replizieren
  • Aktualisieren Sie den alten Master-Knoten manuell
  • Überprüfen Sie den Replikationsstatus, um sicherzustellen, dass er aktuell ist
  • Aktivieren Sie es in Ihrem HAProxy
  • Bestätigen Sie, dass der alte Master (jetzt Slave) Datenverkehr empfängt (falls erforderlich)

Wie Sie sehen können, erfordert diese Aufgabe selbst in vereinfachter Form viele Schritte und bedeutet mehr Möglichkeiten, dass etwas schief geht.

Rollende ClusterControl-Upgrades für MySQL

Der beste Weg, die Wahrscheinlichkeit eines Fehlers zu verringern, besteht darin, alle (oder fast alle) dieser Schritte zu automatisieren. Mit ClusterControl können Sie mit nur wenigen Klicks ein kleineres fortlaufendes Upgrade Ihres MySQL-Clusters durchführen.

Um dies zu tun, gehen Sie zu ClusterControl -> Cluster auswählen -> Verwalten -> Upgrades, wo Sie die Upgrade-Option sehen.

Upgrades sind online und werden jeweils auf einem Knoten durchgeführt. Der Knoten wird gestoppt, die Software wird aktualisiert und dann wird der Knoten erneut gestartet. Wenn ein Knoten nicht aktualisiert werden kann, wird der Vorgang abgebrochen.

Wenn Sie die Upgrade-Option wählen, sehen Sie eine Bestätigung über die zu aktualisierende Version:

Und Sie müssen nur auf Upgrade klicken, um diesen Job zu bestätigen. Danach können Sie den Upgrade-Prozess im ClusterControl-Aktivitätsabschnitt überwachen:

Gleichzeitig konfiguriert ClusterControl Ihre Load Balancer neu, um den Datenverkehr zu senden zu den verfügbaren Knoten.

ClusterControl unterstützt nur geringfügige Upgrades, da, wie bereits erwähnt, ein größeres Upgrade eine riskante Aufgabe ist, die Tests und Recherchen erfordert, um sicherzustellen, dass Ihre Anwendung mit der neuen Hauptversion einwandfrei funktioniert.

ClusterControl unterstützt nur kleinere Upgrades.

P>

Fazit

Upgrade ist eine wichtige Aufgabe in allen Unternehmen und kann riskant sein, wenn Sie nicht bestimmte Vorsichtsmaßnahmen treffen und nicht alle Upgrade-Schritte korrekt befolgen.

In diesem Blog haben wir einige Überlegungen erwähnt, die Sie berücksichtigen sollten, bevor Sie Ihre Datenbank aktualisieren, und wir haben den Unterschied zwischen der manuellen Durchführung dieser Aufgabe und der Verwendung von ClusterControl aufgezeigt, wodurch Sie die Möglichkeit eines Fehlers minimieren können.