Aktualisieren der MySQL DB-Engine - Amazon Relational Database Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Aktualisieren der MySQL DB-Engine

Sofern Amazon RDS eine neue Version der Datenbank-Engine unterstützt, können Sie Ihre DB-Instances auf die neue Version aktualisieren. Es gibt zwei Arten von Upgrades für MySQL-Datenbanken: Upgrades von Hauptversionen und Upgrades von Nebenversionen.

Hauptversions-Upgrades

Hauptversions-Upgrades können Datenbankänderungen enthalten, die nicht mit vorhandenen Anwendungen rückwärts kompatibel sind. Daher müssen Sie Hauptversions-Upgrades Ihrer DB-Instances manuell durchführen. Sie können ein Hauptversions-Upgrade starten, indem Sie Ihre DB-Instance ändern. Bevor Sie ein Hauptversions-Upgrade durchführen, empfehlen wir Ihnen, die Anweisungen unter zu befolgenUpgrades von Hauptversionen für MySQL.

Für Hauptversions-Upgrades von Multi-AZ-DB-Instance-Bereitstellungen aktualisiert Amazon RDS gleichzeitig sowohl die Primär- als auch die Standby-Replikate. Ihre DB-Instance ist erst verfügbar, wenn das Upgrade abgeschlossen ist. Derzeit unterstützt Amazon RDS keine Hauptversions-Upgrades für Multi-AZ-DB-Cluster-Bereitstellungen.

Tipp

Sie können die für ein Hauptversions-Upgrade erforderlichen Ausfallzeiten minimieren, indem Sie eine Blau/Grün-Bereitstellung verwenden. Weitere Informationen finden Sie unter Verwendung von Blau/Grün-Bereitstellungen von Amazon RDS für Datenbankaktualisierungen.

Unterversion-Upgrades

Nebenversions-Upgrades enthalten nur Änderungen, die mit vorhandenen Anwendungen abwärtskompatibel sind. Sie können ein Nebenversions-Upgrade manuell starten, indem Sie Ihre DB-Instance ändern. Sie können auch die Option Automatisches Unterversion-Upgrade aktivieren, wenn Sie eine DB-Instance erstellen oder ändern. Dies bedeutet, dass Amazon RDS Ihre DB-Instance automatisch aktualisiert, nachdem die neue Version getestet und genehmigt wurde. Weitere Informationen zum Ausführen eines Upgrades finden Sie unter Upgrade der Engine-Version für eine DB-Instance.

Wenn Sie ein Nebenversions-Upgrade eines Multi-AZ-DB-Clusters durchführen, aktualisiert Amazon RDS die Reader-DB-Instances nacheinander. Dann wechselt eine der Reader-DB-Instances zur neuen Writer-DB-Instance. Amazon RDS aktualisiert dann die alte Writer-Instance (die jetzt eine Reader-Instance ist).

Anmerkung

Die Ausfallzeit für ein Nebenversions-Upgrade einer Multi-AZ-DB-Instance-Bereitstellung kann mehrere Minuten dauern. Multi-AZ-DB-Cluster reduzieren in der Regel die Ausfallzeit von Nebenversions-Upgrades auf etwa 35 Sekunden. Bei Verwendung mit RDS Proxy können Sie die Ausfallzeit weiter auf eine Sekunde oder weniger reduzieren. Weitere Informationen finden Sie unter Verwenden von Amazon RDS Proxy. Alternativ können Sie einen Open-Source-Datenbank-Proxy wie ProxySQL PgBounceroder den AWS JDBC-Treiber für MySQL verwenden.

Wenn Ihre MySQL-DB-Instance Lesereplikate verwendet, müssen Sie alle Lesereplikate aktualisieren, bevor Sie die Quell-Instance aktualisieren.

Übersicht über das Aktualisieren

Wenn Sie die verwenden, AWS Management Console um eine DB-Instance zu aktualisieren, werden die gültigen Upgrade-Ziele für die DB-Instance angezeigt. Sie können auch den folgenden AWS CLI Befehl verwenden, um die gültigen Upgrade-Ziele für eine DB-Instance zu identifizieren:

Für Linux, macOSoder Unix:

aws rds describe-db-engine-versions \ --engine mysql \ --engine-version version-number \ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text

Windows:

aws rds describe-db-engine-versions ^ --engine mysql ^ --engine-version version-number ^ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text

Um beispielsweise die gültigen Upgrade-Ziele für eine DB-Instance der MySQL-Version 8.0.28 zu identifizieren, führen Sie den folgenden AWS CLI Befehl aus:

Für Linux, macOSoder Unix:

aws rds describe-db-engine-versions \ --engine mysql \ --engine-version 8.0.28 \ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text

Windows:

aws rds describe-db-engine-versions ^ --engine mysql ^ --engine-version 8.0.28 ^ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text

Amazon RDS erstellt zwei oder mehr DB-Snapshots während des Upgrades. Amazon RDS erstellt bis zu zwei Snapshots der DB-Instance, bevor Upgrade-Änderungen vorgenommen werden. Wenn das Upgrade bei Ihren Datenbanken nicht funktioniert, können Sie einen dieser Snapshots wiederherstellen, um eine DB-Instance zu erstellen, auf der die alte Version ausgeführt wird. Amazon RDS erstellt einen weiteren Snapshot der DB-Instance, wenn das Upgrade abgeschlossen ist. Amazon RDS erstellt diese Snapshots unabhängig davon, ob die Backups für die DB-Instance AWS Backup verwaltet.

Anmerkung

Amazon RDS nimmt nur DB-Snapshots auf, wenn Sie den Sicherungsaufbewahrungszeitraum für Ihre DB-Instance auf eine Zahl größer als 0 festgelegt haben. Informationen über das Ändern Ihres Aufbewahrungszeitraums für Backups finden Sie unter Ändern einer Amazon RDS-DB-Instance.

Nachdem das Upgrade abgeschlossen ist, können Sie nicht zur vorherigen Version der Datenbank-Engine zurückkehren. Wenn Sie zur vorherigen Version zurückkehren möchten, stellen Sie den ersten DB-Snapshot wieder her, um eine neue DB-Instance zu erstellen.

Sie steuern, wann Ihre DB-Instance auf eine neue Version aktualisiert werden soll, die von Amazon RDS unterstützt wird. Diese Kontrollebene hilft Ihnen, die Kompatibilität mit bestimmten Datenbankversionen aufrechtzuerhalten und neue Versionen mit Ihrer Anwendung zu testen, bevor sie produktiv bereitgestellt werden. Wenn Sie bereit sind, können Sie Versions-Upgrades zu den Zeiten durchführen, die am besten zu Ihrem Zeitplan passen.

Wenn Ihre DB-Instance die Lesereplikation verwendet, müssen Sie alle Lesereplikate aktualisieren, bevor Sie die Quell-Instance aktualisieren.

MySQL-Versionsnummern

Die Reihenfolge der Versionsnummerierung für die Datenbank-Engine von RDS für MySQL liegt entweder in Form von major.minor.patch.YYYYMMDD oder major.minor.patch vor, z. B. 8.0.33.R2.20231201 oder 5.7.44. Das verwendete Format hängt von der MySQL-Engine-Version ab. Informationen zur Versionsnummerierung von RDS Extended Support finden Sie unter Versionsbenennung für Amazon RDS Extended Support.

Haupt

Die Hauptversionsnummer ist sowohl die Ganzzahl als auch der erste Bruchteil der Versionsnummer, z. B. 8.0. Ein Upgrade der Hauptversion erhöht den Hauptteil der Versionsnummer. Beispielsweise ist ein Upgrade von 5.7.44 auf 8.0.33 ein Hauptversions-Upgrade, wobei 5.7 und 8.0 die Hauptversionsnummern sind.

Neben

Die Nebenversionsnummer ist der dritte Teil der Versionsnummer, z. B. die 33 in 8.0.33.

Patch

Der Patch ist der vierte Teil der Versionsnummer, z. B. R2 in 8.0.33.R2. Eine RDS-Patch-Version enthält wichtige Korrekturen, die einer Nebenversion nach ihrer Veröffentlichung hinzugefügt werden.

JJJJMMTT

Das Datum ist der fünfte Teil der Versionsnummer, z. B. 20231201 in 8.0.33.R2.20231201. Eine RDS-Datumsversion ist ein Sicherheitspatch, der wichtige Sicherheitskorrekturen enthält, die einer Nebenversion nach ihrer Veröffentlichung hinzugefügt wurden. Es enthält keine Korrekturen, die das Verhalten einer Engine ändern könnten.

Hauptversion Unterversion Benennungsschema
8.0 ≥ 33 Neue DB-Instances verwenden major.minor.patch.YYMMDD, z. B. 8.0.33.R2.20231201.

Bestehende DB-Instances verwenden möglicherweise major.minor.patch, z. B. 8.0.33.R2, bis zu Ihrem nächsten Haupt- oder Nebenversions-Upgrade.

< 33 Bestehende DB-Instances verwenden major.minor.patch, z. B. 8.0.32.R2.
5,7 ≥ 42 Neue DB-Instances verwenden major.minor.patch.YYMMDD, z. B. 5.7.42.R2.20231201.

Vorhandene DB-Instances verwenden möglicherweise major.minor.patch, z. B. 5.7.42.R2, bis zu Ihrem nächsten Upgrade der Haupt- oder Nebenversion.

RDS-Versionsnummer

RDS-Versionsnummern verwenden entweder das major.minor.patch.YYYYMMDD Benennungsschema major.minor.patch oder . Eine RDS-Patch-Version enthält wichtige Korrekturen, die einer Nebenversion nach ihrer Veröffentlichung hinzugefügt werden. Eine RDS-Datumsversion (YYMMDD) ist ein Sicherheitspatch. Ein Sicherheitspatch enthält keine Korrekturen, die das Verhalten der Engine ändern könnten. Informationen zur Versionsnummerierung von RDS Extended Support finden Sie unter Versionsbenennung für Amazon RDS Extended Support.

Wenn Sie die Amazon-RDS-Versionsnummer Ihrer Datenbank ermitteln möchten, müssen Sie zunächst die rds_tools-Erweiterung mit folgendem Befehl erstellen:

CREATE EXTENSION rds_tools;

Sie können die RDS-Versionsnummer Ihrer Datenbank von RDS für MySQL mit der folgenden SQL-Abfrage ermitteln:

mysql> select mysql.rds_version();

Wenn Sie beispielsweise eine Datenbank von RDS für MySQL 8.0.34 abfragen, wird die folgende Ausgabe zurückgegeben:

+---------------------+ | mysql.rds_version() | +---------------------+ | 8.0.34.R2.20231201 | +---------------------+ 1 row in set (0.01 sec)

Upgrades von Hauptversionen für MySQL

Amazon RDS unterstützt die folgenden direkten Upgrades für Hauptversionen des MySQL-Datenbank-Engine:

  • MySQL 5.6 auf MySQL 5.7

  • MySQL 5.7 auf MySQL 8.0

Anmerkung

Sie können DB-Instances mit MySQL-Version 5.7 und 8.0 nur mit DB-Instances der neuesten und der aktuellen Generation erstellen (zusätzlich zur DB-Instance-Klasse db.m3 der vorherigen Generation).

Es ist möglich, dass Sie eine MySQL 5.6-DB-Instance, die auf einer DB-Instance-Klasse einer früheren Generation ausgeführt wird (nicht db.m3), auf eine MySQL 5.7-DB-Instance upgraden müssen. In einem solchen Fall ändern Sie zunächst die DB-Instance so, dass diese eine DB-Instance-Klasse der neuesten oder aktuellen Generation verwendet. Anschließend können Sie die DB-Instance so modifizieren, dass sie die Datenbank-Engine von MySQL Version 5.7 nutzt. Weiterführende Informationen zu Amazon RDS-DB-Instance-Klassen finden Sie unter DB-Instance-Klassen.

Übersicht über Upgrades von MySQL-Hauptversionen

Hauptversions-Upgrades können Datenbankänderungen enthalten, die nicht mit vorhandenen Anwendungen rückwärts kompatibel sind. Folglich werden Hauptversion-Upgrades in Amazon RDS nicht automatisch ausgeführt, sondern Sie müssen Ihre DB-Instance manuell ändern. Sie sollten jedes Upgrade gründlich testen, bevor Sie es auf Ihre Produktions-Instances anwenden.

Um ein Hauptversionsupgrade für eine DB-Instance der MySQL Version 5.6 Amazon RDS auf MySQL Version 5.7 oder höher durchzuführen, führen Sie zunächst alle verfügbaren Betriebssystemupdates durch. Aktualisieren Sie nach Abschluss der Betriebssystemaktualisierungen auf jede Hauptversion: 5.6 auf 5.7 und dann 5.7 auf 8.0. Vor dem 24. April 2014 erstellte MySQL-DB-Instances zeigen verfügbare Updates für das Betriebssystem an, bis es angewendet wurde. Weitere Informationen zu Betriebssystem-Updates finden Sie unter Anwenden von Updates für eine DB-Instance.

Während des Upgrades einer Hauptversion von MySQL führt Amazon RDS die MySQL-Binärdatei mysql_upgrade aus, um die Tabellen zu aktualisieren, falls erforderlich. Außerdem leert Amazon RDS während des Upgrades einer Hauptversion die Tabellen slow_log und general_log. Speichern Sie die Protokollinhalte vor dem Upgrade einer Hauptversion, um die Protokollinformationen zu erhalten.

MySQL-Hauptversions-Upgrades sind normalerweise in etwa 10 Minuten abgeschlossen. Einige Aktualisierungen können aufgrund der Klassengröße der DB-Instance länger dauern, oder weil die Instance bestimmten Richtlinien in nicht entsprich Bewährte Methoden für Amazon RDS. Wenn Sie eine DB-Instance von der Amazon RDS-Konsole aktualisieren, zeigt der Status der DB-Instance an, wann das Upgrade abgeschlossen ist. Wenn Sie ein Upgrade mit der AWS Command Line Interface (AWS CLI) durchführen, verwenden Sie den describe-db-instances Befehl und überprüfen Sie den Status Wert.

Upgrades auf MySQL-Version 5.7 sind möglicherweise langsam

MySQL-Version 5.6.4 hat ein neues Datums- und Uhrzeitformat für die datetime-, time-, und timestamp-Spalten eingeführt, die Dezimalstellen in Datums- und Zeitwerten zulassen. Beim Aktualisieren einer DB-Instance auf MySQL Version 5.7 erzwingt MySQL die Konvertierung aller Datums- und Uhrzeitspalten in das neue Format.

Da bei dieser Konvertierung Ihre Tabellen neu erstellt werden, kann die Aktualisierung der DB-Instance beträchtlich dauern. Die erzwungene Konvertierung erfolgt für alle DB-Instances, die eine frühere Version als MySQL 5.6.4 ausführen. Sie erfolgt auch für alle DB-Instances, für die ein Upgrade von einer MySQL-Version niedriger als 5.6.4 auf eine andere Version als 5.7 durchgeführt wurde.

Wenn Ihre DB-Instance eine Version niedriger als MySQL Version 5.6.4 ausführt oder von einer Version vor 5.6.4 upgegradet wurde, sollten Sie einen zusätzlichen Schritt durchführen. Sie sollten in einem solchen Fall die Spalten datetime, time und timestamp Ihrer Datenbank konvertieren, ehe Sie ein Upgrade der DB-Instance auf MySQL Version 5.7 durchführen. Diese Konvertierung kann den Zeitaufwand für das Upgrade der DB-Instance auf MySQL-Version 5.7 erheblich reduzieren. Zur Aktualisierung Ihrer Datums- und Uhrzeitspalten auf das neue Format erteilen Sie den Befehl ALTER TABLE <table_name> FORCE; für jede Tabelle, die Datums- oder Uhrzeitspalten enthält. Da das Ändern einer Tabelle die Tabelle als schreibgeschützt sperrt, wird empfohlen, diese Aktualisierung während eines Wartungsfensters auszuführen.

Verwenden Sie die folgende Abfrage, um alle Tabellen in Ihrer Datenbank zu finden, die über die Spalten datetime, time oder timestamp verfügen und um einen ALTER TABLE <table_name> FORCE;-Befehl für die einzelnen Tabellen zu erstellen.

SET show_old_temporals = ON; SELECT table_schema, table_name,column_name, column_type FROM information_schema.columns WHERE column_type LIKE '%/* 5.5 binary format */'; SET show_old_temporals = OFF;

Vorabprüfung bei Upgrades von MySQL 5.7 auf 8.0

MySQL 8.0 ist in vielen Punkten nicht mit MySQL 5.7 kompatibel. Diese Inkompatibilitäten können bei einem Upgrade von MySQL 5.7 auf MySQL 8.0 Probleme verursachen. Damit das Upgrade erfolgreich durchgeführt werden kann, sind einige Vorbereitungsmaßnahmen auf Ihrer Datenbank durchzuführen. Im Folgenden finden Sie eine allgemeine Liste dieser Inkompatibilitäten:

  • Es darf keine Tabellen geben, die veraltete Datentypen oder Funktionen verwenden.

  • Es darf keine verwaisten FRM-Dateien geben.

  • Es darf keine Auslöser mit fehlenden oder leeren Definern oder ungültigen Erstellungskontexten geben.

  • Es darf keine partitionierte Tabelle mit einer Speicher-Engine geben, für die es keine native Partitionierungsunterstützung gibt.

  • Es darf keine Verletzungen von Schlüsselwörtern oder reservierten Wörtern geben. Einige Schlüsselwörter sind in MySQL 8.0 möglicherweise reserviert, die zuvor nicht reserviert waren.

    Weitere Informationen finden Sie unter Schlüsselwörter und reservierte Wörter in der MySQL-Dokumentation.

  • Es darf keine Tabellen in der MySQL 5.7 mysql-Systemdatenbank geben, die denselben Namen wie eine Tabelle haben, die vom MySQL 8.0-Daten-Dictionary verwendet wird.

  • Es dürfen keine veralteten SQL-Modi in Ihrer sql_mode-Systemvariableneinstellung definiert sein.

  • Es darf keine Tabellen oder gespeicherte Prozeduren mit einzelnen ENUM- oder SET-Spaltenelementen geben, deren Länge 255 Zeichen oder 1020 Bytes überschreitet.

  • Vor dem Upgrade auf MySQL 8.0.13 oder höher darf es keine Tabellenpartitionen innerhalb von freigegebenen InnoDB-Tabellenräumen geben.

  • Es darf keine Abfragen oder gespeicherten Programmdefinitionen aus MySQL 8.0.12 oder früher geben, die ASC oder DESC-Qualifizierer für GROUP BY-Klauseln verwenden.

  • Ihre MySQL 5.7-Installation darf keine Funktionen verwenden, die in MySQL 8.0 nicht unterstützt werden.

    Weitere Informationen finden Sie unter In MySQL 8.0 entfernte Funktionen in der MySQL-Dokumentation.

  • Es darf keine Namen für Fremdschlüsseleinschränkungen mit mehr als 64 Zeichen geben.

  • Um die Unicode-Unterstützung zu verbessern, sollten Sie die Konvertierung von Objekten, die den utf8mb3-Zeichensatz verwenden, in Objekte in Betracht ziehen, die den utf8mb4-Zeichensatz verwenden. Der utf8mb3-Zeichensatz ist veraltet. Sie sollten darüber hinaus anstelle von utf8mb4 die Verwendung von utf8 für Zeichensatzverweise in Betracht ziehen, da utf8 zurzeit ein Alias für den utf8mb3-Zeichensatz ist.

    Weitere Informationen finden Sie unter Der utf8mb3-Zeichensatz (UTF-8-Unicode-Kodierung mit 3 Bytes) in der MySQL-Dokumentation.

Wenn Sie ein Upgrade von MySQL 5.7 auf 8.0 starten, führt Amazon RDS Vorabprüfungen durch, um eventuelle Inkompatibilitäten zu entdecken. Informationen zum Ausführen von Upgrades auf MySQL 8.0 finden Sie unter Ausführen von MySQL Upgrades in der MySQL-Dokumentation.

Diese Vorabprüfungen müssen durchgeführt werden. Sie können nicht ausgelassen werden. Die Vorabprüfungen bieten folgende Vorteile:

  • Sie können ungeplante Ausfallzeiten während des Upgrades vermeiden.

  • Wenn es Inkompatibilitäten gibt, verhindert Amazon RDS das Upgrade und stellt Ihnen ein Protokoll mit Informationen zu den Inkompatibilitäten bereit. Sie können das Protokoll für die Vorbereitung Ihrer Datenbank auf das Upgrade auf MySQL 8.0 verwenden, indem Sie die Inkompatibilitäten reduzieren. Detaillierte Informationen zum Entfernen von Inkompatibilitäten finden Sie unter Vorbereiten Ihrer Installation auf ein Upgrade in der MySQL-Dokumentation und unter Upgrade auf MySQL 8.0? Dies müssen Sie wissen ... im MySQL Server Blog.

Die Vorabprüfungen enthalten einige Prüfungen, die in MySQL enthalten sind, und einige spezifische Prüfungen, die vom Amazon RDS-Team erstellt wurden. Informationen zu den von MySQL bereitgestellten Vorabprüfungen finden Sie unter Upgrade Checker-Dienstprogramm.

Die Vorabprüfungen werden ausgeführt, bevor die DB-Instance aufgrund des Upgrades angehalten wird. Sie verursachen also keine Ausfallzeiten. Wird während der Vorabprüfungen eine Inkompatibilität entdeckt, bricht Amazon RDS automatisch das Upgrade ab, ehe die DB-Instance angehalten wird. Amazon RDS generiert auch ein Ereignis für die Inkompatibilität. Weitere Informationen über Amazon RDS-Ereignisse finden Sie unter Arbeiten mit Amazon-RDS-Ereignisbenachrichtigungen.

Amazon RDS zeichnet detaillierte Informationen zu allen Inkompatibilitäten in der Protokolldatei au PrePatchCompatibility.log. In den meisten Fällen enthalten die Protokolleinträge einen Link zur MySQL-Dokumentation mit Informationen zur Lösung des Inkompatibilitätsproblems. Weitere Informationen zum Anzeigen von Protokolldateien finden Sie unter Anzeigen und Auflisten von Datenbank-Protokolldateien.

Aufgrund der Art der Vorabprüfungen werden die Objekte in Ihrer Datenbank geprüft. Diese Analyse verbraucht Ressourcen und verlängert die Zeit, die für die Durchführung des Upgrades benötigt wird.

Anmerkung

Amazon RDS führt alle diese Vorprüfungen nur für ein Upgrade von MySQL 5.7 auf MySQL 8.0 durch. Für ein Upgrade von MySQL 5.6 auf MySQL 5.7 beschränken sich die Vorabprüfungen darauf, zu bestätigen, dass es keine verwaisten Tabellen gibt und dass genügend Speicherplatz für die Neuerstellung von Tabellen zur Verfügung steht. Vorabprüfungen werden nicht für Upgrades auf Releases ausgeführt, die niedriger als MySQL 5.7 sind.

Rollback nach fehlgeschlagenem Upgrade von MySQL 5.7 auf 8.0

Wenn Sie eine DB-Instance von MySQL Version 5.7 auf MySQL Version 8.0 aktualisieren, kann das Upgrade fehlschlagen. Insbesondere kann es scheitern, wenn das Datenwörterbuch Inkompatibilitäten enthält, die von den Vorprüfungen nicht erfasst wurden. In diesem Fall kann die Datenbank in der neuen MySQL 8.0-Version nicht erfolgreich gestartet werden. Zu diesem Zeitpunkt macht Amazon RDS die für das Upgrade durchgeführten Änderungen rückgängig. Nach dem Rollback läuft die MySQL-DB-Instance MySQL-Version 5.7. Wenn ein Upgrade fehlschlägt und rückgängig gemacht wird, generiert Amazon RDS ein Ereignis mit der Ereignis-ID RDS-EVENT-0188.

In der Regel schlägt ein Upgrade fehl, da es Inkompatibilitäten in den Metadaten zwischen den Datenbanken in Ihrer DB-Instance und der Ziel-MySQL-Version gibt. Wenn ein Upgrade fehlschlägt, können Sie die Details zu diesen Inkompatibilitäten in der upgradeFailure.log-Datei einsehen. Beheben Sie die Inkompatibilitäten, bevor Sie erneut versuchen, ein Upgrade durchzuführen.

Während eines erfolglosen Upgrade-Versuchs und Rollbacks wird Ihre DB-Instance neu gestartet. Alle ausstehenden Parameteränderungen werden während des Neustarts angewendet und bleiben nach dem Rollback bestehen.

Weitere Informationen zum Upgrade auf MySQL 8.0 finden Sie in den folgenden Themen der MySQL-Dokumentation:

Anmerkung

Derzeit wird automatisches Rollback nach einem Upgradefehler nur für Upgrades von MySQL 5.7 auf 8.0 unterstützt.

Testen eines Upgrades

Ehe Sie ein Upgrade einer Hauptversion auf Ihrer DB-Instance durchführen, sollten Sie sorgfältig prüfen, ob Ihre Datenbank mit der neuen Version kompatibel ist. Darüber hinaus sollten Sie die Kompatibilität aller Anwendungen mit der neuen Version testen, die auf die Datenbank zugreifen. Wir empfehlen Ihnen folgendes Vorgehen.

Um ein Hauptversions-Upgrade zu testen
  1. Informieren Sie sich in der Upgrade-Dokumentation von Oracle über die neue Version der Datenbank-Engine, um zu prüfen, ob es Kompatibilitätsprobleme geben könnte, die sich auf Ihre Datenbank oder Anwendungen auswirken könnten:

  2. Wenn Ihre DB-Instance Mitglied einer benutzerdefinierten DB-Parametergruppe ist, müssen Sie eine neue DB-Parametergruppe mit Ihren vorhandenen Einstellungen erstellen, die mit der neuen Hauptversion kompatibel ist. Geben Sie die neue DB-Parametergruppe an, wenn Sie Ihre Test-Instance aktualisieren, damit Ihr Upgrade-Test sicherstellt, dass sie ordnungsgemäß funktioniert. Weitere Informationen über das Erstellen einer Parametergruppe finden Sie unter Arbeiten mit Parametergruppen.

  3. Erstellen Sie einen DB-Snapshot der zu aktualisierenden DB-Instance. Weitere Informationen finden Sie unter Erstellen eines DB-Snapshots für eine Single-AZ-DB-Instance.

  4. Stellen Sie den DB-Snapshot wieder her, um eine neue Test-DB-Instance zu erstellen. Weitere Informationen finden Sie unter Wiederherstellen aus einem DB--Snapshot.

  5. Ändern Sie diese neue Test-DB-Instance, um sie auf die neue Version upzugraden. Verwenden Sie dazu eine der folgenden Methoden. Wenn Sie in Schritt 2 eine neue Parametergruppe erstellt haben, geben Sie diese Parametergruppe an.

  6. Beurteilen Sie den Speicherplatz, den die upgegradete Instance verwendet, um zu bestimmen, ob das Upgrade zusätzlichen Speicherplatz benötigt.

  7. Führen Sie so viele Qualitätssicherungstests mit der upgegradeten DB-Instance durch, wie nötig, um sicherzustellen, dass Ihre Datenbank und Anwendung mit der neuen Version korrekt ausgeführt werden. Führen Sie alle nötigen neuen Tests aus, um die Auswirkungen von Kompatibilitätsproblemen zu bewerten, die Sie in Schritt 1 bestimmt haben. Testen Sie alle gespeicherten Prozeduren und Funktionen. Leiten Sie Testversionen Ihrer Anwendungen an die aktualisierte DB-Instance weiter.

  8. Wenn alle Tests erfolgreich sind, führen Sie das Upgrade für Ihre Produktions-DB-Instance durch. Wir empfehlen, dass Sie keine Schreiboperationen auf der DB-Instance zulassen, bis Sie bestätigen können, dass alles richtig ausgeführt wird.

Upgraden einer MySQL-DB-Instance

Informationen über das manuelle oder automatische Upgraden einer MySQL-DB-Instance finden Sie unter Upgrade der Engine-Version für eine DB-Instance.

Automatische Unterversion-Upgrades für MySQL

Wenn Sie beim Erstellen oder Ändern einer DB-Instance die folgenden Einstellungen angeben, können Sie Ihre DB-Instance automatisch aktualisieren lassen.

  • Die Einstellung Automatisches Upgrade der Nebenversion ist aktiviert.

  • Die Einstellung Aufbewahrungszeitraum für Sicherungen beträgt mehr als 0.

In der befinden sich AWS Management Consolediese Einstellungen unter Zusätzliche Konfiguration . Die folgende Abbildung zeigt die Auto minor version upgrade (Upgrade einer Unterversion automatisch durchführen)-Einstellung.


                Auto minor version upgrade (Upgrade einer Unterversion automatisch durchführen)-Einstellung

Weitere Informationen zu diesen Einstellungen finden Sie unter Einstellungen für DB-Instances.

Bei einigen Hauptversionen von RDS für MySQL in einigen wird AWS-Regioneneine Unterversion von RDS als automatische Upgrade-Version bezeichnet. Nachdem eine Minor-Version von Amazon RDS getestet und freigegeben wurde, erfolgt das Upgrade der Minor-Version automatisch während Ihres Wartungsfensters. RDS legt nicht automatisch neuere freigegebene Minor-Versionen als die automatische Upgradeversion fest. Bevor RDS eine neuere automatische Upgradeversion bestimmt, werden mehrere Kriterien berücksichtigt, wie beispielsweise die folgenden:

  • Bekannte Sicherheitsprobleme

  • Fehler in der MySQL-Community-Version

  • Gesamtflottenstabilität seit Erscheinen der Minor-Version

Sie können den folgenden AWS CLI Befehl verwenden, um die aktuelle automatische Upgrade-Ziel-Unterversion für eine bestimmte MySQL-Unterversion in einer bestimmten zu bestimmen AWS-Region.

Für Linux, macOSoder Unix:

aws rds describe-db-engine-versions \ --engine mysql \ --engine-version minor-version \ --region region \ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{AutoUpgrade:AutoUpgrade,EngineVersion:EngineVersion}" \ --output text

Windows:

aws rds describe-db-engine-versions ^ --engine mysql ^ --engine-version minor-version ^ --region region ^ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{AutoUpgrade:AutoUpgrade,EngineVersion:EngineVersion}" ^ --output text

Der folgende AWS CLI Befehl bestimmt beispielsweise das automatische Unterversions-Upgrade-Ziel für MySQL-Unterversion 8.0.11 in der USA Ost (Ohio) AWS-Region (us-east-2).

Für Linux, macOSoder Unix:

aws rds describe-db-engine-versions \ --engine mysql \ --engine-version 8.0.11 \ --region us-east-2 \ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{AutoUpgrade:AutoUpgrade,EngineVersion:EngineVersion}" \ --output table

Windows:

aws rds describe-db-engine-versions ^ --engine mysql ^ --engine-version 8.0.11 ^ --region us-east-2 ^ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{AutoUpgrade:AutoUpgrade,EngineVersion:EngineVersion}" ^ --output table

Ihre Ausgabe sieht Folgendem ähnlich.

---------------------------------- | DescribeDBEngineVersions | +--------------+-----------------+ | AutoUpgrade | EngineVersion | +--------------+-----------------+ | False | 8.0.15 | | False | 8.0.16 | | False | 8.0.17 | | False | 8.0.19 | | False | 8.0.20 | | False | 8.0.21 | | True | 8.0.23 | | False | 8.0.25 | +--------------+-----------------+

In diesem Beispiel ist der AutoUpgrade-Wert True für MySQL-Version 8.0.23. Das automatische Nebenversions-Upgrade-Ziel ist daher die MySQL-Version 8.0.23, die in der Ausgabe hervorgehoben wird.

Eine MySQL DB-Instance wird während Ihres Wartungsfensters automatisch aktualisiert, wenn die folgenden Kriterien erfüllt sind:

  • Die Einstellung Automatisches Upgrade der Nebenversion ist aktiviert.

  • Die Einstellung Aufbewahrungszeitraum für Sicherungen beträgt mehr als 0.

  • Die DB-Instance führt eine Minor-Version der DB-Engine aus, die niedriger ist als die aktuelle Minor-Version des automatischen Upgrades.

Weitere Informationen finden Sie unter Automatisches Upgraden der Engine-Unterversion.

Verwenden einer Read Replica, um Ausfallzeiten beim Upgrade einer MySQL-Datenbank zu reduzieren

In den meisten Fällen ist eine Blau/Grün-Bereitstellung die beste Option, um Ausfallzeiten beim Upgrade einer MySQL-DB-Instance zu reduzieren. Weitere Informationen finden Sie unter Verwendung von Blau/Grün-Bereitstellungen von Amazon RDS für Datenbankaktualisierungen.

Wenn Sie keine Blau/Grün-Bereitstellung verwenden können und Ihre MySQL-DB-Instance aktuell von einer Produktionsanwendung genutzt wird, können Sie mit dem folgenden Verfahren die Datenbankversion Ihrer DB-Instance aktualisieren. Dieses Verfahren kann die Ausfallzeiten Ihrer Anwendung reduzieren.

Mithilfe einer Read Replica können Sie die meisten Wartungsschritte im Voraus durchführen und die erforderlichen Änderungen während des tatsächlichen Ausfalls minimieren. Mit dieser Technik können Sie die neue DB-Instance testen und vorbereiten, ohne Änderungen an Ihrer bestehenden DB-Instance vorzunehmen.

Im Folgenden wird ein Beispiel für ein Upgrade der MySQL Version 5.7 auf MySQL Version 8.0 gezeigt. Sie können die gleichen allgemeinen Schritte für Upgrades auf andere Hauptversionen durchführen.

Anmerkung

Wenn Sie von MySQL Version 5.7 auf MySQL Version 8.0 aktualisieren, führen Sie die Vorprüfungen durch, bevor Sie das Upgrade durchführen. Weitere Informationen finden Sie unter Vorabprüfung bei Upgrades von MySQL 5.7 auf 8.0.

So führen Sie ein Upgrade einer MySQL-Datenbank durch, während eine DB-Instance verwendet wird
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die Amazon-RDS-Konsole unter https://console.aws.amazon.com/rds/.

  2. Erstellen Sie eine Read Replica Ihrer MySQL 5.7-DB-Instance. Dieser Prozess erstellt eine aktualisierbare Kopie Ihrer Datenbank. Andere Read Replicas der DB-Instance könnten ebenfalls vorhanden sein.

    1. Wählen Sie in der Konsole Datenbanken und dann die DB-Instance aus, die Sie upgraden möchten.

    2. Wählen Sie unter Aktionen Create read replica (Read Replica erstellen) aus.

    3. Geben Sie für die Read Replica einen Wert im Feld DB-Instance-Kennung ein und stellen Sie sicher, dass der Eintrag unter DB-Instance-Klasse) und die anderen Einstellungen mit Ihrer MySQL 5.7-DB-Instance übereinstimmen.

    4. Wählen Sie Read Replica erstellen aus.

  3. (Optional) Wenn die Read Replica erstellt wurde und der Status Verfügbar anzeigt, konvertieren Sie die Read Replica in eine Multi-AZ-Bereitstellung und aktivieren Sie Sicherungen.

    Standardmäßig wird ein Lesereplikat als Single-AZ-Bereitstellung mit deaktivierten Backups erstellt. Da das Lesereplikat letztendlich zur DB-Produktions-Instance wird, ist es eine bewährte Methode, eine Multi-AZ-Bereitstellung zu konfigurieren und Backups jetzt zu aktivieren.

    1. Wählen Sie in der Konsole Datenbanken und dann die Read Replica aus, die Sie gerade erstellt haben.

    2. Wählen Sie Ändern aus.

    3. Für die Multi-AZ-Bereitstellungwählen Sie Standby-Instance erstellen.

    4. Wählen Sie unter Backup Retention Period (Aufbewahrungszeitraum für Backups) einen positiven Wert größer als null aus, z. B. 3 Tage. Klicken Sie anschließend auf Continue (Weiter).

    5. Wählen Sie für Scheduling of modifications (Einplanung von Änderungen) die Option Apply immediately (Sofort anwenden) aus.

    6. Wählen Sie Modify DB Instance (DB-Instance ändern) aus.

  4. Wenn der Read Replica-Status Verfügbar anzeigt, aktualisieren Sie die Read Replica auf MySQL 8.0:

    1. Wählen Sie in der Konsole Datenbanken und dann die Read Replica aus, die Sie gerade erstellt haben.

    2. Wählen Sie Ändern aus.

    3. Wählen Sie im Feld DB-Engine-Version die gewünschte Version von MySQL 8.0 für das Upgrade aus und klicken Sie auf Weiter.

    4. Wählen Sie für Scheduling of modifications (Einplanung von Änderungen) die Option Apply immediately (Sofort anwenden) aus.

    5. Wählen Sie Modify DB instance (DB-Instance ändern) aus, um das Upgrade zu starten.

  5. Wenn das Upgrade abgeschlossen ist und der Status Verfügbar anzeigt, stellen Sie sicher, dass das aktualisierte Lesereplikat up-to-date mit der MySQL 5.7-DB-Quell-Instance vorliegt. Stellen Sie zur Überprüfung eine Verbindung mit dem Lesereplikat her und führen Sie den Befehl SHOW REPLICA STATUS aus. Wenn das Seconds_Behind_Master Feld ist0, dann ist die Replikation up-to-date.

    Anmerkung

    Frühere Versionen von MySQL verwenden SHOW SLAVE STATUS anstelle von SHOW REPLICA STATUS. Wenn Sie vor 8.0.23 eine MySQL-Version verwenden, verwenden Si SHOW SLAVE STATUS.

  6. (Optional) Erstellen Sie eine Read Replica Ihrer Read Replica.

    Wenn Sie möchten, dass die DB-Instance eine Read Replica hat, nachdem sie auf eine eigenständige DB-Instance hochgestuft wurde, können Sie jetzt die Read Replica erstellen.

    1. Wählen Sie auf der Konsole Datenbanken und dann die Read Replica aus, die Sie gerade aktualisiert haben.

    2. Wählen Sie unter Aktionen Create read replica (Read Replica erstellen) aus.

    3. Geben Sie für die Read Replica einen Wert im Feld DB-Instance-Kennung ein und stellen Sie sicher, dass der Eintrag unter DB-Instance-Klasse) und die anderen Einstellungen mit Ihrer MySQL 5.7-DB-Instance übereinstimmen.

    4. Wählen Sie Read Replica erstellen aus.

  7. (Optional) Konfigurieren Sie eine benutzerdefinierte DB-Parametergruppe für die Read Replica.

    Wenn Sie möchten, dass die DB-Instance eine benutzerdefinierte Parametergruppe verwendet, nachdem sie zu einer eigenständigen DB-Instance hochgestuft wurde, können Sie die DB-Parametergruppe erstellen und sie jetzt dem Lesereplikat zuordnen kann.

    1. Erstellen Sie eine benutzerdefinierte DB-Parametergruppe für MySQL 8.0. Detaillierte Anweisungen finden Sie unter Erstellen einer DB-Parametergruppe.

    2. Ändern Sie die Parameter, die Sie in der gerade erstellten DB-Parametergruppe ändern möchten. Detaillierte Anweisungen finden Sie unter Ändern von Parametern in einer DB-Parametergruppe.

    3. Wählen Sie in der Konsole Datenbankenund dann die Read Replica aus.

    4. Wählen Sie Ändern aus.

    5. Wählen Sie für die DB-Parametergruppe die soeben erstellte MySQL 8.0 DB-Parametergruppe aus, und klicken Sie dann auf Weiter.

    6. Wählen Sie für Scheduling of modifications (Einplanung von Änderungen) die Option Apply immediately (Sofort anwenden) aus.

    7. Wählen Sie Modify DB instance (DB-Instance ändern) aus, um das Upgrade zu starten.

  8. Machen Sie Ihre MySQL 8.0 Read Replica zu einer eigenständigen DB-Instance.

    Wichtig

    Wenn Sie Ihr Lesereplikat von MySQL 8.0 auf eine eigenständige DB-Instance hochstufen, handelt es sich nicht mehr um ein Replikat der DB-Instance von MySQL 5.7. Wir empfehlen, dass Sie Ihre MySQL 8.0 Read Replica während eines Wartungsfensters hochstufen, wenn sich Ihre MySQL-5.7 Quell-DB-Instance im schreibgeschützten Modus befindet und alle Schreiboperationen ausgesetzt sind. Wenn die Aktion abgeschlossen ist, können Sie Ihre Schreiboperationen an die aktualisierte MySQL 8.0 DB-Instance weiterleiten, um sicherzustellen, dass keine Schreiboperationen verloren gehen.

    Zusätzlich empfehlen wir, dass Sie, bevor Sie die MySQL 8.0 Read Replica hochstufen, alle erforderlichen Data Definition Language (DDL)-Operationen auf der MySQL 8.0 Read Replica ausführen. Ein Beispiel hierfür ist das Erstellen von Indizes. Dieser Ansatz vermeidet negative Auswirkungen auf die Leistung der MySQL 8.0 Read Replica, nachdem sie hochgestuft wurde. Gehen Sie folgendermaßen vor, um ein Lesereplikat hochzustufen.

    1. Wählen Sie auf der Konsole Datenbanken und dann die Read Replica aus, die Sie gerade aktualisiert haben.

    2. Wählen Sie für Actions (Aktionen) Promote (Hochstufen) aus.

    3. Klicken Sie auf Yes (Ja), um automatische Sicherungen für die Lesereplikat-Instance zu aktivieren. Weitere Informationen finden Sie unter Einführung in Backups.

    4. Klicken Sie auf Continue (Fortfahren).

    5. Klicken Sie auf Read Replica hochstufen.

  9. Sie haben jetzt eine upgegradete Version Ihrer MySQL-Datenbank. An dieser Stelle können Sie Ihre Anwendungen auf die neue MySQL 8.0 DB-Instance verweisen.