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: Hauptversions-Upgrades und Nebenversions-Upgrades.
- 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 Upgrade auf eine Hauptversion durchführen, empfehlen wir Ihnen, die Anweisungen unter zu befolgenUpgrades von Hauptversionen für MySQL.
Bei Hauptversions-Upgrades von Multi-AZ-DB-Instance-Bereitstellungen aktualisiert Amazon RDS gleichzeitig sowohl das Primär- als auch das Standby-Replikat. 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 Ausfallzeit, die für ein Upgrade einer Hauptversion erforderlich ist, minimieren, indem Sie eine blaue/grüne Bereitstellung verwenden. Weitere Informationen finden Sie unter Verwenden von Amazon RDS Blue/Green Deployments für Datenbank-Updates.
- Unterversion-Upgrades
-
Upgrades kleinerer Versionen beinhalten 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 Upgrade der Nebenversion aktivieren, wenn Sie eine DB-Instance erstellen oder ändern. Das bedeutet, dass Amazon RDS Ihre DB-Instance automatisch aktualisiert, nachdem Sie die neue Version getestet und genehmigt haben. Weitere Informationen zum Ausführen eines Upgrades finden Sie unter Upgrade der Engine-Version für eine DB-Instance.
Wenn Sie ein kleineres Versions-Upgrade eines Multi-AZ-DB-Clusters durchführen, aktualisiert Amazon RDS die Reader-DB-Instances nacheinander. Dann wird 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 bei einem kleineren Versions-Upgrade einer Multi-AZ-DB-Instance-Bereitstellung kann mehrere Minuten dauern. Multi-AZ-DB-Cluster reduzieren die Ausfallzeit bei Upgrades kleinerer Versionen in der Regel 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 Amazon RDS Proxy verwenden. Alternativ können Sie einen Open-Source-Datenbank-Proxy wie ProxySQL
oder den AWS JDBC-Treiber PgBouncer für MySQL verwenden.
Wenn Ihre MySQL-DB-Instance Read Replicas verwendet, müssen Sie alle Read Replicas aktualisieren, bevor Sie die Quell-Instance aktualisieren.
Themen
- Übersicht über das Aktualisieren
- MySQL-Versionsnummern
- RDS-Versionsnummer
- Upgrades von Hauptversionen für MySQL
- Testen eines Upgrades
- Upgraden einer MySQL-DB-Instance
- Automatische Unterversion-Upgrades für MySQL
- Verwenden einer Read Replica, um Ausfallzeiten beim Upgrade einer MySQL-Datenbank zu reduzieren
Übersicht über das Aktualisieren
Wenn Sie das 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 LinuxmacOS, oderUnix:
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 MySQL-DB-Instance der Version 8.0.28 zu identifizieren, führen Sie den folgenden AWS CLI Befehl aus:
FürLinux, odermacOS: 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 werden.
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 Read Replicas aktualisieren, bevor Sie die Quell-Instance aktualisieren.
MySQL-Versionsnummern
Die Versionsnummerierungssequenz für die RDS for MySQL-Datenbank-Engine hat entweder die Form major.minor.patch.yyyymmDD oder major.minor.patch, zum Beispiel 8.0.33.R2.20231201 oder 5.7.44. Das verwendete Format hängt von der Version der MySQL-Engine ab. Informationen zur Versionsnummerierung von RDS Extended Support finden Sie unterVersionsbenennung für Amazon RDS Extended Support.
- Major
-
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. Ein Upgrade von 5.7 .44 auf 8.0.33 ist beispielsweise ein Hauptversionsupgrade, wobei 5.7 und 8.0 die Hauptversionsnummern sind.
- geringfügig
-
Die Nebenversionsnummer ist der dritte Teil der Versionsnummer, zum Beispiel die 33 in 8.0.33.
- Patch
-
Der Patch ist der vierte Teil der Versionsnummer, zum Beispiel R2 in 8.0.33.R2. Eine RDS-Patch-Version enthält wichtige Korrekturen, die einer Nebenversion nach ihrer Veröffentlichung hinzugefügt werden.
- YYYYMMDD
-
Das Datum ist der fünfte Teil der Versionsnummer, zum Beispiel 20231201 in 8.0.33.R2.20231201. Eine RDS-Datumsversion ist ein Sicherheitspatch, der wichtige Sicherheitsupdates 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.
In der folgenden Tabelle wird das Benennungsschema für RDS for MySQL Version 8.0 erklärt.
8.0 Nebenversion | Benennungsschema |
---|---|
≥ 33 | Neue DB-Instances verwenden Major.Minor.Patch.YYMMDD, zum Beispiel 8.0.33.R2.20231201. Bestehende DB-Instances verwenden möglicherweise major.minor.patch, z. B. 8.0.33.R2, bis Sie Ihre nächste Haupt- oder Nebenversion aktualisieren. |
< 33 | Bestehende DB-Instances verwenden major.minor.patch, beispielsweise 8.0.32.R2. |
In der folgenden Tabelle wird das Benennungsschema für RDS for MySQL Version 5.7 erklärt.
5.7 Nebenversion | Benennungsschema |
---|---|
≥ 42 | Neue DB-Instances verwenden Major.Minor.Patch.YYMMDD, zum Beispiel 5.7.42.R2.20231201. Bestehende DB-Instances verwenden möglicherweise major.minor.patch, z. B. 5.7.42.R2, bis Sie Ihre nächste Haupt- oder Nebenversion aktualisieren. |
RDS-Versionsnummer
RDS-Versionsnummern verwenden entweder das oder das Benennungsschema. major
.minor
.patch
Eine RDS-Patch-Version enthält wichtige Korrekturen, die einer Nebenversion nach ihrer Veröffentlichung hinzugefügt werden. Eine RDS-Datumsversion (major
.minor
.patch.YYYYMMDD
YYMMDD
) ist ein Sicherheitspatch. Ein Sicherheitspatch enthält keine Fixes, die das Verhalten der Engine ändern könnten. Informationen zur Versionsnummerierung von RDS Extended Support finden Sie unterVersionsbenennung 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 RDS for MySQL-Datenbank mit der folgenden SQL-Abfrage herausfinden:
mysql>
select mysql.rds_version();
Wenn Sie beispielsweise eine RDS-Datenbank 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 .
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 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 AWS Command Line Interface
(AWS CLI) durchführen, verwenden Sie den describe-db-instancesBefehl und überprüfen Sie den Wert. Status
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
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.<table_name>
FORCE;
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
-Befehl für die einzelnen Tabellen zu erstellen.<table_name>
FORCE;
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
- 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
ASC
oderDESC
-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.
-
Um die Unicode-Unterstützung zu verbessern, sollten Sie die Konvertierung von Objekten, die den
utf8mb3
-Zeichensatz verwenden, in Objekte in Betracht ziehen, die denutf8mb4
-Zeichensatz verwenden. Derutf8mb3
-Zeichensatz ist veraltet. Sie sollten darüber hinaus anstelle vonutf8mb4
die Verwendung vonutf8
für Zeichensatzverweise in Betracht ziehen, dautf8
zurzeit ein Alias für denutf8mb3
-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
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 Mit RDS Amazon-Event-Benachrichtigungen arbeiten.
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
-
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:
-
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 Parametergruppen für Amazon RDS.
-
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.
-
Stellen Sie den DB-Snapshot wieder her, um eine neue Test-DB-Instance zu erstellen. Weitere Informationen finden Sie unter Wiederherstellung auf einer DB-Instance.
-
Ä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.
-
Beurteilen Sie den Speicherplatz, den die upgegradete Instance verwendet, um zu bestimmen, ob das Upgrade zusätzlichen Speicherplatz benötigt.
-
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.
-
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 AWS Management Console sich diese Einstellungen unter Zusätzliche Konfiguration. Die folgende Abbildung zeigt die Auto minor version upgrade (Upgrade einer Unterversion automatisch durchführen)-Einstellung.
Weitere Informationen zu diesen Einstellungen finden Sie unter Einstellungen für DB-Instances.
Für einige Hauptversionen von RDS für MySQL AWS-Regionen, in einigen wird eine Nebenversion 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 Minor-Upgrade-Zielversion für eine angegebene MySQL-Nebenversion in einem bestimmten Bereich zu ermitteln AWS-Region.
Für LinuxmacOS, oderUnix:
aws rds describe-db-engine-versions \ --engine mysql \ --engine-version
minor-version
\ --regionregion
\ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{AutoUpgrade:AutoUpgrade,EngineVersion:EngineVersion}" \ --output text
Windows:
aws rds describe-db-engine-versions ^ --engine mysql ^ --engine-version
minor-version
^ --regionregion
^ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{AutoUpgrade:AutoUpgrade,EngineVersion:EngineVersion}" ^ --output text
Der folgende AWS CLI Befehl bestimmt beispielsweise das automatische kleinere Upgrade-Ziel für die MySQL-Nebenversion 8.0.11 in den USA Ost (Ohio) AWS-Region (us-east-2).
FürLinux, oder: macOS 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 Verwenden von Amazon RDS Blue/Green Deployments für Datenbank-Updates.
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
-
Melden Sie sich bei der Amazon RDS-Konsole an AWS Management Console und öffnen Sie sie unter https://console.aws.amazon.com/rds/
. -
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.
Wählen Sie in der Konsole Datenbanken und dann die DB-Instance aus, die Sie upgraden möchten.
Wählen Sie unter Aktionen Create read replica (Read Replica erstellen) aus.
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.
Wählen Sie Read Replica erstellen aus.
-
(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.
Wählen Sie in der Konsole Datenbanken und dann die Read Replica aus, die Sie gerade erstellt haben.
Wählen Sie Ändern aus.
Für die Multi-AZ-Bereitstellungwählen Sie Standby-Instance erstellen.
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).
Wählen Sie für Scheduling of modifications (Einplanung von Änderungen) die Option Apply immediately (Sofort anwenden) aus.
Wählen Sie Modify DB Instance (DB-Instance ändern) aus.
-
Wenn der Read Replica-Status Verfügbar anzeigt, aktualisieren Sie die Read Replica auf MySQL 8.0:
Wählen Sie in der Konsole Datenbanken und dann die Read Replica aus, die Sie gerade erstellt haben.
Wählen Sie Ändern aus.
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.
Wählen Sie für Scheduling of modifications (Einplanung von Änderungen) die Option Apply immediately (Sofort anwenden) aus.
Wählen Sie Modify DB instance (DB-Instance ändern) aus, um das Upgrade zu starten.
-
Wenn das Upgrade abgeschlossen ist und der Status Verfügbar anzeigt, stellen Sie sicher, dass sich die aktualisierte Read Replica up-to-date mit der Quell-DB-Instance von MySQL 5.7 befindet. Stellen Sie zur Überprüfung eine Verbindung mit dem Lesereplikat her und führen Sie den Befehl
SHOW REPLICA STATUS
aus. Wenn dasSeconds_Behind_Master
Feld lautet0
, ist die Replikation. up-to-dateAnmerkung
Frühere Versionen von MySQL verwenden
SHOW SLAVE STATUS
anstelle vonSHOW REPLICA STATUS
. Wenn Sie vor 8.0.23 eine MySQL-Version verwenden, verwenden SiSHOW SLAVE STATUS
. -
(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.
Wählen Sie auf der Konsole Datenbanken und dann die Read Replica aus, die Sie gerade aktualisiert haben.
Wählen Sie unter Aktionen Create read replica (Read Replica erstellen) aus.
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.
Wählen Sie Read Replica erstellen aus.
-
(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.
Erstellen Sie eine benutzerdefinierte DB-Parametergruppe für MySQL 8.0. Detaillierte Anweisungen finden Sie unter Erstellen einer DB-Parametergruppe in Amazon RDS.
Ä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 in Amazon RDS.
Wählen Sie in der Konsole Datenbankenund dann die Read Replica aus.
Wählen Sie Ändern aus.
Wählen Sie für die DB-Parametergruppe die soeben erstellte MySQL 8.0 DB-Parametergruppe aus, und klicken Sie dann auf Weiter.
Wählen Sie für Scheduling of modifications (Einplanung von Änderungen) die Option Apply immediately (Sofort anwenden) aus.
Wählen Sie Modify DB instance (DB-Instance ändern) aus, um das Upgrade zu starten.
-
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.
Wählen Sie auf der Konsole Datenbanken und dann die Read Replica aus, die Sie gerade aktualisiert haben.
Wählen Sie für Actions (Aktionen) Promote (Hochstufen) aus.
Klicken Sie auf Yes (Ja), um automatische Sicherungen für die Lesereplikat-Instance zu aktivieren. Weitere Informationen finden Sie unter Einführung in Backups.
-
Klicken Sie auf Continue (Fortfahren).
Klicken Sie auf Read Replica hochstufen.
-
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.