Hauptversion-Upgrades von RDS für MySQL
Amazon RDS unterstützt die folgenden direkten Upgrades für Hauptversionen des MySQL-Datenbank-Engine:
-
MySQL 5.7 auf MySQL 8.0
-
MySQL 8.0 auf MySQL 8.4
Anmerkung
Sie können DB-Instances mit MySQL-Version 5.7, 8.0 und 8.4 nur mit DB-Instance-Klassen der neuesten und der aktuellen Generation erstellen.
Es ist möglich, dass Sie eine DB-Instance, die auf einer DB-Instance-Klasse einer früheren Generation ausgeführt wird, auf eine höhere MySQL-Engine-Version upgraden möchten. 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 höhere Datenbank-Engine-Version von MySQL nutzt. Weiterführende Informationen zu Amazon-RDS-DB-Instance-Klassen finden Sie unter DB-Instance-Klassen .
Themen
Ü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 Hauptversion-Upgrade durchzuführen, müssen zunächst alle verfügbaren Betriebssystemupdates durchgeführt werden. Führen Sie nach Abschluss der Betriebssystemupdates das Upgrade auf die einzelnen Hauptversionen durch, z. B. von 5.7 auf 8.0 und dann von 8.0 auf 8.4. Informationen über das Upgrade eines DB-Clusters mit Multi-AZ von RDS für MySQL finden Sie unter Aktualisieren der Engine-Version eines Multi-AZ-DB-Clusters für Amazon RDS. 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 Betriebssystemupdates finden Sie unter Anwenden von Updates auf 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 mit AWS Command Line Interface (AWS CLI) aktualisieren, verwenden Sie den Befehl describe-db-instances und überprüfen Sie den Status-Wert.
Vorabprüfung bei Upgrades
Amazon RDS führt vor dem Upgrade eine Vorabprüfung auf Inkompatibilität durch. Die Inkompatibilität variiert je nach MySQL-Version, auf die das Upgrade erfolgt.
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üfung 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.
Themen
Vorabprüfung bei Upgrades von MySQL 8.0 auf 8.4
MySQL 8.4 ist in vielen Punkten nicht mit MySQL 8.0 kompatibel. Diese Inkompatibilitäten können bei einem Upgrade von MySQL 8.0 auf MySQL 8.4 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 Auslöser mit fehlenden oder leeren Definern oder ungültigen Erstellungskontexten geben.
-
Es darf keine Verletzungen von Schlüsselwörtern oder reservierten Wörtern geben. Einige Schlüsselwörter sind in MySQL 8.4 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-Systemdatenbank von MySQL 8.0 geben, die denselben Namen wie eine Tabelle haben, die vom Daten-Dictionary von MySQL 8.4 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- oderSET-Spaltenelementen geben, deren Länge 255 Zeichen oder 1020 Bytes überschreitet. -
Ihre MySQL-8.0-Installation darf keine Features verwenden, die in MySQL 8.4 nicht unterstützt werden.
Weitere Informationen finden Sie unter Features removed in MySQL 8.4
in der MySQL-Dokumentation. -
Es darf keine Namen für Fremdschlüsseleinschränkungen mit mehr als 64 Zeichen geben.
-
Informationen zu verbesserter Unicode-Unterstützung finden Sie im folgenden Abschnitt:
-
Konvertieren Sie Objekte, die den
utf8mb3-Zeichensatz verwenden, eventuell in Objekte, die denutf8mb4-Zeichensatz verwenden. Derutf8mb3-Zeichensatz ist veraltet. -
Sie sollten anstelle von
utf8mb4die Verwendung vonutf8für Zeichensatzverweise in Betracht ziehen, dautf8zurzeit ein Alias für denutf8mb3-Zeichensatz ist. Wenn möglich, ändern Sieutf8mb4zuerst inutf8und führen Sie dann das Datenbank-Upgrade durch. -
Da bei älteren Clients möglicherweise ein unbekannter Zeichensatzfehler für
utf8mb3angezeigt wird, aktualisieren Sie Ihre Datenbankclients, bevor Sie das Datenbank-Upgrade durchführen.
Weitere Informationen finden Sie unter Der utf8mb3-Zeichensatz (UTF-8-Unicode-Kodierung mit 3 Bytes)
in der MySQL-Dokumentation. Um den Zeichensatz zu ändern, können Sie manuell ein Backup, eine Wiederherstellung und eine Replikation Ihrer Datenbank durchführen. Alternativ können Sie Blau/Grün-Bereitstellungen von Amazon RDS verwenden. Weitere Informationen finden Sie unter Verwenden von Blau/Grün-Bereitstellungen von Amazon RDS für Datenbankaktualisierungen.
-
Wenn Sie ein Upgrade von MySQL 8.0 auf 8.4 starten, führt Amazon RDS Vorabprüfungen durch, um eventuelle Inkompatibilitäten zu entdecken. Informationen zum Ausführen von Upgrades auf MySQL 8.4 finden Sie unter Upgrading MySQL
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.4 verwenden, indem Sie die Inkompatibilitäten reduzieren. Detaillierte Informationen zum Entfernen von Inkompatibilitäten finden Sie unter Preparing your installation for upgrade
in der MySQL-Dokumentation.
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- oderSET-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
ASCoderDESC-Qualifizierer fürGROUP 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.
-
Informationen zu verbesserter Unicode-Unterstützung finden Sie im folgenden Abschnitt:
-
Konvertieren Sie Objekte, die den
utf8mb3-Zeichensatz verwenden, eventuell in Objekte, die denutf8mb4-Zeichensatz verwenden. Derutf8mb3-Zeichensatz ist veraltet. -
Sie sollten anstelle von
utf8mb4die Verwendung vonutf8für Zeichensatzverweise in Betracht ziehen, dautf8zurzeit ein Alias für denutf8mb3-Zeichensatz ist. Wenn möglich, ändern Sieutf8mb4zuerst inutf8und führen Sie dann das Datenbank-Upgrade durch. -
Da bei älteren Clients möglicherweise ein unbekannter Zeichensatzfehler für
utf8mb3angezeigt wird, aktualisieren Sie Ihre Datenbankclients, bevor Sie das Datenbank-Upgrade durchführen.
Weitere Informationen finden Sie unter Der utf8mb3-Zeichensatz (UTF-8-Unicode-Kodierung mit 3 Bytes)
in der MySQL-Dokumentation. Um den Zeichensatz zu ändern, können Sie manuell ein Backup, eine Wiederherstellung und eine Replikation Ihrer Datenbank durchführen. Alternativ können Sie Blau/Grün-Bereitstellungen von Amazon RDS verwenden. Weitere Informationen finden Sie unter Verwenden von Blau/Grün-Bereitstellungen von Amazon RDS für Datenbankaktualisierungen.
-
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
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.
Rollback nach einem fehlgeschlagenen Upgrade
Wenn Sie eine DB-Instance von MySQL Version 5.7 auf MySQL-Version 8.0 oder von MySQL-Version 8.0 auf 8.4 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-Version (8.0 bzw. 8.4) nicht erfolgreich gestartet werden. Zu diesem Zeitpunkt macht Amazon RDS die für das Upgrade durchgeführten Änderungen rückgängig. Nach dem Rollback führt die MySQL-DB-Instance die ursprüngliche Version aus.
-
MySQL-Version 8.0 (bei einem Rollback von MySQL 8.4)
-
MySQL-Version 5.7 (bei einem Rollback von MySQL 8.0)
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:
Detaillierte Informationen zum Upgrade auf MySQL 8.4 finden Sie unter Preparing Your Installation for Upgrade