Aktualisieren einer PostgreSQL-DB-Engine für Amazon RDS - 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 einer PostgreSQL-DB-Engine für Amazon RDS

Es gibt zwei Arten von Upgrades, die Sie für Ihre PostgreSQL-Datenbank verwalten können:

  • Betriebssystem-Updates – Amazon RDS muss gelegentlich das Ihrer Datenbank zugrunde liegende Betriebssystem aktualisieren, um Sicherheitsmängel zu beheben oder Betriebssystemänderungen anzuwenden. Mithilfe der RDS-Konsole, der AWS Command Line Interface (AWS CLI) oder der RDS-API können Sie entscheiden, wann Amazon RDS Betriebssystem-Updates anwendet. Weitere Informationen zu Betriebssystem-Aktualisierungen finden Sie unter Anwenden von Updates für eine DB-Instance.

  • Datenbank-Engine-Upgrades – Wenn Amazon RDS eine neue Version einer Datenbank-Engine unterstützt, können Sie Ihre Datenbanken auf die neue Version upgraden.

Eine Datenbank ist in diesem Zusammenhang eine DB-Instance von RDS für PostgreSQ oder ein Multi-AZ-DB-Cluster.

Es gibt zwei Arten von Engine-Upgrades für PostgreSQL-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 Datenbanken manuell durchführen. Sie können ein Hauptversions-Upgrade starten, indem Sie Ihre DB-Instance oder Ihren Multi-AZ-DB-Cluster ändern. Bevor Sie ein Hauptversions-Upgrade durchführen, empfehlen wir Ihnen, die unter beschriebenen Schritte zu befolgen Auswählen eines Hauptversions-Upgrades für PostgreSQL.

Wenn Sie eine DB-Instance mit Lesereplikaten in der Region aktualisieren. aktualisiert Amazon RDS die Replikate zusammen mit der primären DB-Instance.

Amazon RDS aktualisiert keine Lesereplikate von Multi-AZ-DB-Clustern. Wenn Sie ein Hauptversions-Upgrade eines Multi-AZ-DB-Clusters durchführen, ändert sich der Replikationsstatus seiner Lesereplikate in Beendet . Sie müssen die Lesereplikate nach Abschluss des Upgrades manuell löschen und neu erstellen.

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 dagegen nur Änderungen, die mit vorhandenen Anwendungen abwärtskompatibel sind. Sie können ein Nebenversions-Upgrade manuell starten, indem Sie Ihre Datenbank ändern. Oder Sie können die Option Automatisches Unterversion-Upgrade aktivieren, wenn Sie eine Datenbank erstellen oder ändern. Dies bedeutet, dass Amazon RDS Ihre Datenbank automatisch aktualisiert, nachdem die neue Version getestet und genehmigt wurde. Wenn Ihre PostgreSQL-Datenbank Lesereplikate verwendet, müssen Sie zuerst alle Lesereplikate aktualisieren, bevor Sie die Quell-Instance oder den Quell-Cluster aktualisieren.

Wenn Ihre Datenbank eine Multi-AZ-DB-Instance-Bereitstellung ist, aktualisiert Amazon RDS gleichzeitig die primäre und alle Standby-Instances. Daher ist Ihre Datenbank möglicherweise erst verfügbar, wenn das Upgrade abgeschlossen ist. Wenn es sich bei Ihrer Datenbank um eine Multi-AZ-DB-Cluster-Bereitstellung handelt, 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.

Weitere Informationen finden Sie unter Automatische Unterversion-Upgrades für PostgreSQL. Informationen zur manuellen Durchführung eines Unterversionsupgrades finden Sie unter Manuelles Upgraden der Engine-Version.

Weitere Informationen zu Datenbank-Engine-Versionen und zur Richtlinie zum Veralten von Datenbank-Engine-Versionen finden Sie unter Datenbank-Engine-Versionen in den FAQs.

Übersicht über das Aktualisieren von PostgreSQL

Um Ihre Datenbanken sicher zu aktualisieren, verwendet Amazon RDS das Dienstprogramm pg_upgrade, das in der PostgreSQL-Dokumentation beschrieben ist.

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

Für Linux, macOSoder Unix:

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

Windows:

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

Um beispielsweise die gültigen Upgrade-Ziele für eine PostgreSQL-Datenbank der Version 12.13 zu identifizieren, führen Sie den folgenden AWS CLI Befehl aus:

Für Linux, macOSoder Unix:

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

Windows:

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

Wenn Ihr Aufbewahrungszeitraum für Backups größer als 0 ist, erstellt Amazon RDS während des Upgrade-Prozesses zwei DB-Snapshots. Der erste DB-Snapshot gehört zur Datenbank, bevor Änderungen im Rahmen des Upgrades vorgenommen wurden. Wenn das Upgrade bei Ihren Datenbanken nicht funktioniert, können Sie diesen Snapshot wiederherstellen, um eine Datenbank zu erstellen, auf der die alte Version ausgeführt wird. Der zweite DB-Snapshot wird nach Abschluss des Upgrades übernommen.

Anmerkung

Amazon RDS nimmt während des Upgrade-Vorgangs nur dann DB-Snapshots auf, wenn Sie für den Aufbewahrungszeitraum des Backups Ihrer Datenbank einen Wert größer als 0 festgelegt haben. Informationen zum Ändern des Aufbewahrungszeitraums für Backups für eine DB-Instance finden Sie unter Ändern einer Amazon RDS-DB-Instance. Sie können keinen benutzerdefinierten Aufbewahrungszeitraum für Backups für Multi-AZ-DB-Cluster konfigurieren.

Wenn Sie ein Hauptversions-Upgrade einer DB-Instance durchführen, werden auch alle in der Region befindlichen Lesereplikate automatisch aktualisiert. Nach dem Start des Upgrade-Workflows warten die Lesereplikate auf den erfolgreichen Abschluss des pg_upgrade auf der primären DB-Instance. Dann wartet das Upgrade der primären DB-Instance auf den Abschluss der Upgrades der Lesereplikate. Bis das Upgrade abgeschlossen ist, treten Ausfälle auf. Bei Upgrades der Hauptversion eines Multi-AZ-DB-Clusters ändert sich der Replikationsstatus der Lesereplikate in Beendet.

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

PostgreSQL-Versionsnummern

Die Versionsnummerierungssequenz für die PostgreSQL-Datenbank-Engine lautet wie folgt:

  • Für PostgreSQL-Versionen 10 und höher weist die Engine-Versionsnummer das Format Hauptversion.Nebenversion auf. Die Hauptversionsnummer ist der ganzzahlige Teil der Versionsnummer. Die Nebenversionsnummer ist der Nachkommabereich der Versionsnummer.

    Ein Upgrade der Hauptversion erhöht den ganzzahligen Teil der Versionsnummer, z. B. ein Upgrade von 10.Nebenversion auf 11.Nebenversion.

  • Für PostgreSQL-Versionen vor Version 10 weist die Engine-Versionsnummer das Format Hauptversion.Hauptversion.Nebenversion auf. Die Engine-Hauptversionsnummer ist sowohl die Ganzzahl als auch der erste Nachkommateil der Versionsnummer. 9.6 ist beispielsweise eine Hauptversion. Die Nebenversionsnummer ist der dritte Teil der Versionsnummer. Beispiel: Für Version 9.6.12 ist die 12 die Nebenversionsnummer.

    Ein Upgrade der Hauptversion erhöht den Hauptteil der Versionsnummer. Beispielsweise ist ein Upgrade von 9.6.12 auf 11.14 ein Upgrade der Hauptversion, wobei 9.6 und 11 die Hauptversionsnummern sind.

Informationen zur Versionsnummerierung von RDS Extended Support finden Sie unter Versionsbenennung für Amazon RDS Extended Support.

RDS-Versionsnummer

RDS-Versionsnummern verwenden das Benennungsschema major.minor.patch. Eine RDS-Patch-Version enthält wichtige Korrekturen, die einer Nebenversion nach ihrer Veröffentlichung hinzugefügt werden. 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;

Ab der Veröffentlichung von PostgreSQL Version 15.2-R2 können Sie die RDS-Versionsnummer Ihrer Datenbank von RDS für PostgreSQL mit der folgenden SQL-Abfrage ermitteln:

postgres=> SELECT rds_tools.rds_version();

Wenn Sie beispielsweise eine Datenbank von RDS für PostgreSQL 15.2 abfragen, wird Folgendes zurückgegeben:

rds_version ---------------- 15.2.R2 (1 row)

Auswählen eines Hauptversions-Upgrades für PostgreSQL

Hauptversions-Upgrades können Änderungen enthalten, die nicht mit früheren Versionen der Datenbank rückwärtskompatibel sind. Neue Funktionalität kann dazu führen, dass Ihre vorhandenen Anwendungen nicht mehr ordnungsgemäß funktionieren. Aus diesem Grund wendet Amazon-RDS-Hauptversions-Upgrades nicht automatisch an. Um ein Hauptversions-Upgrade durchzuführen, ändern Sie Ihre Datenbank manuell. Testen Sie alle Upgrades sorgfältig, um sicherzustellen, dass Ihre Anwendungen ordnungsgemäß funktionieren, bevor Sie das Upgrade auf Ihre Produktionsdatenbanken anwenden. Wenn Sie ein PostgreSQL-Hauptversions-Upgrade durchführen, werden jedoch die folgenden Schritte empfohlen, die unter beschrieben werde Durchführen eines Hauptversions-Upgrades.

Wenn Sie eine Single-AZ-DB-Instance- oder eine Multi-AZ-DB-Instance-Bereitstellung von PostgreSQL auf die nächste Hauptversion aktualisieren, werden alle Lesereplikate, die mit der Datenbank verknüpft sind, ebenfalls auf diese nächste Hauptversion aktualisiert. In einigen Fällen können Sie beim Upgrade auf eine höhere Hauptversion springen. Wenn das Upgrade eine Hauptversion überspringt, werden die Lesereplikate auch auf diese Ziel-Hauptversion aktualisiert. Upgrades auf Version 11, die andere Hauptversionen überspringen, haben gewisse Einschränkungen. Die Details finden Sie in den unter Durchführen eines Hauptversions-Upgrades beschriebenen Schritten.

Die meisten PostgreSQL-Erweiterungen werden während eines PostgreSQL-Engine-Upgrades nicht aktualisiert. Diese müssen separat aktualisiert werden. Weitere Informationen finden Sie unter Aktualisieren von PostgreSQL-Erweiterungen.

Sie können herausfinden, welche Hauptversionen für Ihre Datenbank von RDS für PostgreSQL verfügbar sind, indem Sie die folgende AWS CLI Abfrage ausführen:

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

In der folgenden Tabelle finden Sie eine Zusammenfassung der verfügbaren Versionen. Ein Sternchen (*) in der Versionsnummer bedeutet, dass die Version veraltet ist. Wenn Ihre aktuelle Version veraltet ist, empfehlen wir Ihnen, auf das neueste Upgrade-Ziel der Nebenversion oder auf eines der anderen verfügbaren Upgrade-Ziele für diese Version zu aktualisieren. Weitere Hinweise zur Einstellung von RDS für PostgreSQL 9.6 finden Sie unter PostgreSQL-Version 9.6 veraltet. Weitere Hinweise zur Einstellung von RDS für PostgreSQL 10 finden Sie unter PostgreSQL-Version 10 veraltet.

Aktuelle Quellversion (* veraltet) Upgrade-Ziel für die neueste Hauptversion Sonstige verfügbare Upgrade-Ziele
16.1 16.2
15.6 16.2
15.5 16.2 16.1 15.6
15.4 16.2 16.1 15.6 15.5
15.3 16.2 16.1 15.6 15.5 15.4
15.2 16.2 16.1 15.6 15.5 15.4 15.3
14.11 16.2 15.6
14.10 16.1 15.6 15.5 14.11
14.9 15.6 15.5 15.4 14.11 14.10
14.8 15.6 15.5 15.4 15.3 14.11 14.10 14.9
14.7 15.6 15.5 15.4 15.3 15.2 14.11 14.10 14.9 14.8
14.6 15.6 15.5 15.4 15.3 15.2 14.11 14.10 14.9 14.8 14.7
14.5 15.6 15.5 15.4 15.3 15.2 14.11 14.10 14.9 14.8 14.7 14.6
14.4 15.6 15.5 15.4 15.3 15.2 14.11 14.10 14.9 14.8 14.7 14.6 14,5
14.3 15.6 15.5 15.4 15.3 15.2 14.11 14.10 14.9 14.8 14.7 14.6 14.5 14.4
14.2* 15.6 15.5 15.4 15.3 15.2 14.11 14.10 14.9 14.8 14.7 14.6 14,5 14.4 14.3
14.1* 15.6 15.5 15.4 15.3 15.2 14.11 14.10 14.9 14.8 14.7 14.6 14.5 14.4 14.3 14.2
13.14 16.2 15.6 14.11
13.13 16.1 15.5 14.11 14.10 13.14
13.12 15.4 14.11 14.10 14.9 13.14 13.13
13.11 15.3 14.11 14.10 14.9 14.8 13.14 13.13 13.12
13.10 15.2 14.11 14.10 14.9 14.8 14.7 13.14 13.13 13.12 13.11
13.9 14.11 14.10 14.9 14.8 14.7 14.6 13.14 13.13 13.12 13.11 13.10
13.8 14.11 14.10 14.9 14.8 14.7 14.6 14.5 13.14 13.13 13.12 13.11 13.10 13.9
13.7 14.11 14.10 14.9 14.8 14.7 14.6 14.5 14.4 14.3 13.14 13.13 13.11 13.10 13.9 13.8
13.6* 14.11 14.10 14.9 14.8 14.7 14.6 14.5 14.4 14.3 14.2 13.14 13.13 13.11 13.10 13.9 13.8 13.7
13.5* 14.11 14.10 14.9 14.8 14.7 14.6 14.5 14.4 14.3 14.2 14.1 13.14 13.13 13.11 13.10 13.9 13.8 13.7 13.6
13.4* 14.11 14.10 14.9 14.8 14.7 14.6 14.5 14.4 14.3 14.2 14.1 13.14 13.13 13.11 13.10 13.9 13.8 13.7 13.6 13.5
13.3* 14.11 14.10 14.9 14.8 14.7 14.6 14.5 14.4 14.3 14.2 14.1 13.14 13.13 13.11 13.10 13.9 13.8 13.7 13.6 13.5 13.4
13.2*, 13.1* 14.11 14.10 14.9 14.8 14.7 14.6 14.5 14.4 14.3 14.2 14.1 13.14 13.13 13.11 13.10 13.9 13.8 13.7 13.6 13.5 13.4
12.18 16.2 15.6 14.11 13.14
12.17 16.1 15.5 14.10 13.14 13.13 12.18
12.16 15.4 14.9 13.14 13.13 13.12 12.18 12.17
12.15 15.3 14.8 13.14 13.13 13.12 13.11 12.18 12.17 12.16
12.14 15.2 14.7 13.14 13.13 13.12 13.11 13.10 12.18 12.17 12.16 12.15
12.13 14.6 13.14 13.13 13.12 13.11 13.10 13.9 12.18 12.17 12.16 12.15 12.14
12.12 14.5 13.14 13.13 13.12 13.11 13.10 13.9 13.8 12.18 12.17 12.16 12.15 12.14 12.13
12.11 14.4 14.3 13.14 13.13 13.12 13.11 13.10 13.9 13.8 13.7 12.18 12.17 12.16 12.15 12.14 12.13 12.12
12.10* 14.2 13.14 13.13 13.12 13.11 13.10 13.9 13.8 13.7 13.6 12.18 12.17 12.16 12.15 12.14 12.13 12.12 12.11
12.9* 14.1 13.14 13.13 13.12 13.11 13.10 13.9 13.8 13.7 13.6 13.5 12.18 12.17 12.16 12.15 12.14 12.13 12.12 12.11 12.10
12.8* 13.14 13.13 13.12 13.11 13.10 13.9 13.8 13.7 13.6 13.5 13.4 12.18 12.17 12.16 12.15 12.14 12.13 12.12 12.11 12.10 12.9
12.7* 13.14 13.13 13.12 13.11 13.10 13.9 13.8 13.7 13.6 13.5 13.4 13.3 12.18 12.17 12.16 12.15 12.14 12.13 12.12 12.11 12.10 12.9 12.8
12.6*, 12.5*, 12.4*, 12.3*, 12.2* 13.14 13.13 13.12 13.11 13.7 13.6 12.18 12.17 12.16 12.15 12.14 12.13 12.12 12.11 12.10 12.9 12.8 12.7
11.22 16.1 15.5 14.10 13.13 12.17
11.21 15.4 14.9 13.12 12.17 12.16 11.22
11,20* 15.3 14.8 13.11 12.17 12.16 12.15 11.22 11.21
11.19* 15.2 14.7 13.10 12.17 12.16 12.15 12.14 11.22 11.21 11.20
11.18* 14.6 13.9 12.17 12.16 12.15 12.14 12.13 11.22 11.21 11.20 11.19
11.17* 14.5 13.8 12.17 12.16 12.15 12.14 12.13 12.12 11.22 11.21 11.20 11.19 11.18
11.16* 14.4 14.3 13.7 12.17 12.16 12.15 12.14 12.13 12.12 12.11 11.22 11.21 11.20 11.19 11.18 11.17
11,15* 14.2 13.6 12.17 12.16 12.15 12.14 12.13 12.12 12.11 12.10 11.22 1121 11.20 11.19 11.18 11.17 11.16
11.14* 14.1 13.5 12.17 12.16 12.15 12.14 12.13 12.12 12.11 12.10 12.9 11.22 11.21 11.20 11.19 11.18 11.17 11.16 11.15
11.13* 13.4 12.17 12.16 12.15 12.14 12.13 12.12 12.11 12.10 12.9 12.8 11.22 11.21 11.20 11.19 11.18 11.17 11.16 11.15 11.14
11.12* 13.3 12.17 12.16 12.15 12.14 12.13 12.12 12.11 12.10 12.9 12.8 12.7 11.22 11.21 11.20 11.19 11.18 11.17 11.16 11.15 11.14 11.13
10.23* 14.6 13.9 12.13 11.22 11.21 11.20 11.19 11.18
10.22* 14,5 13.8 12.12 11.22 11.21 11.20 11.19 11.18 11.17 10,23
10.21* 14.4 14.3 13.7 12.11 11.22 11.21 11.20 11.19 11.18 11.17 11.16 10,23 10,22
10.20* 14.2 13.6 12.10 11.22 11.21 11.20 11.19 11.18 11.17 11.16 11.15 10,23 10,22 10.21
10.19* 14.1 13.5 12.9 11.22 11.21 11.20 11.19 11.18 11.17 11.16 11.15 11.14 10,23 10,22 10.21 10,20
10.18* 13.4 12.8 11.22 11.21 11.20 11.19 11.18 11.17 11.16 11.15 11.14 11.13 10,23 10,22 10.21 10,20 10.19
10.17* 13.3 12.7 11.22 11.21 11.20 11.19 11.18 11.17 11.16 11.15 11.14 11.13 11.12 10,23 10,22 10.21 10,20 10.19 10.18
9.6.24* 14.1 13.5 12.9 11.14 10,20 10.19
9.6.23* 13.4 12.8 11.13 10,20 10.19 10.18 9.6.24
9.6.22* 13.3 12.7 11.12 10,20 10.19 10.18 10.17 9.6.24 9.6.23
9.6.19*, 9.6.18*, 9.6.17*, 9.6.16*, 9.6.15*, 9.6.14*, 9.6.12*, 9.6.11*9.6.10*, 9.6.9*, 9.6.8*, 9.6.6*, 9.6.5*, 9.6.3*, 9.6.2*, 9.6.1* 9.6.24 14.1 13.5 12.9 11.14 10,20 10.19 9.6.23 9.6.22

Durchführen eines Hauptversions-Upgrades

Wir empfehlen den folgenden Vorgang bei der Durchführung eines Hauptversions-Upgrades in einer Datenbank von Amazon RDS für PostgreSQL:

  1. Bereithalten einer versionskompatiblen Parametergruppe – Wenn Sie eine benutzerdefinierte Parametergruppe verwenden, haben Sie zwei Optionen. Sie können eine Standardparametergruppe für die neue DB-Engine-Version angeben. Oder Sie können eine eigene benutzerdefinierte Parametergruppe für die neue DB-Engine-Version erstellen. Weitere Informationen finden Sie unter Arbeiten mit Parametergruppen und Arbeiten mit DB-Cluster-Parametergruppen für Multi-AZ-DB-Cluster.

  2. Nach nicht unterstützten Datenbankklassen suchen – Überprüfen Sie, ob die Instance-Klasse Ihrer Datenbank mit der PostgreSQL-Version kompatibel ist, auf die Sie aktualisieren. Weitere Informationen finden Sie unter Unterstützte DB-Engines für DB-Instance-Klassen.

  3. Auf nicht unterstützte Verwendung prüfen:

    • Vorbereitete Transaktionen: Übernehmen Sie oder machen Sie alle offenen vorbereiteten Transaktionen rückgängig, bevor Sie ein Upgrade durchführen.

      Mit der folgenden Abfrage können Sie sicherstellen, dass für Ihre Datenbank keine geöffneten vorbereiteten Transaktionen vorhanden sind.

      SELECT count(*) FROM pg_catalog.pg_prepared_xacts;
    • Reg*-Datentypen – Entfernen Sie alle Anwendungen der reg*-Datentypen, bevor Sie versuchen, einen Upgrade durchzuführen. Bis auf regtype und regclass ist kein Upgrade der reg*-Datentypen möglich. Das Dienstprogramm pg_upgrade kann diesen Datentyp nicht beibehalten, der von Amazon RDS für das Upgrade verwendet wird.

      Um zu überprüfen, dass keine Anwendungen der nicht unterstützten reg*-Datentypen vorhanden sind, geben Sie für jede Datenbank die folgende Abfrage aus.

      SELECT count(*) FROM pg_catalog.pg_class c, pg_catalog.pg_namespace n, pg_catalog.pg_attribute a WHERE c.oid = a.attrelid AND NOT a.attisdropped AND a.atttypid IN ('pg_catalog.regproc'::pg_catalog.regtype, 'pg_catalog.regprocedure'::pg_catalog.regtype, 'pg_catalog.regoper'::pg_catalog.regtype, 'pg_catalog.regoperator'::pg_catalog.regtype, 'pg_catalog.regconfig'::pg_catalog.regtype, 'pg_catalog.regdictionary'::pg_catalog.regtype) AND c.relnamespace = n.oid AND n.nspname NOT IN ('pg_catalog', 'information_schema');
  4. Umgang mit logischen Replikations-Slots – Ein Upgrade ist nicht möglich, wenn die Datenbank über logische Replikations-Slots verfügt. Logische Replikations-Slots werden normalerweise für die AWS DMS -Migration verwendet und zum Replizieren Datenbanktabellen in Data Lakes, BI-Tools und anderen Zielen. Stellen Sie vor dem Upgrade sicher, dass Sie den Zweck aller verwendeten logischen Replikations-Slots kennen, und bestätigen Sie, dass sie gelöscht werden können. Wenn die logischen Replikations-Slots noch verwendet werden, sollten Sie sie nicht löschen, und Sie können mit dem Upgrade nicht fortfahren.

    Wenn die logischen Replikations-Slots nicht benötigt werden, können Sie sie mit folgendem SQL-Befehl löschen:

    SELECT * FROM pg_replication_slots; SELECT pg_drop_replication_slot(slot_name);

    Für die Einrichtung von logische Replikationsszenarien, die die pglogical-Erweiterung verwenden, müssen außerdem Slots gelöscht werden, damit ein Hauptversions-Upgrade erfolgreich durchgeführt werden kann. Informationen zum Identifizieren und Löschen von Slots, die mit der pglogical-Erweiterung erstellt wurden, finden Sie unter Verwalten logischer Replikationsslots für RDS für PostgreSQL.

  5. Behandlung von Lesereplikaten – Bei einem Upgrade Single-AZ-DB-Instance- oder Multi-AZ-DB-Instance-Bereitstellung werden neben der primären DB-Instance auch die Lesereplikate in der Region aktualisiert. Amazon RDS aktualisiert keine Lesereplikate von Multi-AZ-DB-Clustern.

    Lesereplikate können nicht separat aktualisiert werden. Wenn möglich, kann dies zu Situationen führen, in denen die primären und die Replikat-Datenbanken unterschiedliche PostgreSQL-Hauptversionen haben. Lesereplika-Upgrades können jedoch die Ausfallzeit der primären DB-Instance erhöhen. Um ein Lesereplikat-Upgrade zu verhindern, befördern Sie das Replikat zu einer eigenständigen Instance oder löschen Sie es, bevor Sie den Upgrade-Prozess starten.

    Der Upgrade-Prozess erstellt die Parametergruppe des Lesereplikats auf der Grundlage der aktuellen Parametergruppe des Lesereplikats neu. Sie können eine benutzerdefinierte Parametergruppe erst dann auf ein Lesereplikat anwenden, wenn die Aktualisierung abgeschlossen ist, indem Sie das Lesereplikat modifizieren. Weitere Informationen über Lesereplikate finden Sie unter Arbeiten mit Read Replicas in Amazon RDS for PostgreSQL.

  6. Durchführen einer Sicherung – Wir empfehlen, vor dem Upgrade der Hauptversion eine Sicherung durchzuführen, damit Sie über einen bekannten Wiederherstellungspunkt für Ihre Datenbank verfügen. Wenn der Wert des Aufbewahrungszeitraums für Ihre Sicherung größer als 0 ist, erstellt der Upgrade-Vorgang vor und nach der Aktualisierung DB-Snapshots Ihrer Datenbank. Informationen über das Ändern Ihres Aufbewahrungszeitraums für Backups finden Sie unter Ändern einer Amazon RDS-DB-Instance und Ändern eines Multi-AZ-DB-Clusters.

    Informationen zum manuellen Durchführen der Sicherung finden Sie unter Erstellen eines DB-Snapshots für eine Single-AZ-DB-Instance und Erstellen eines Multi-AZ-DB-Cluster-Snapshots.

  7. Aktualisieren bestimmter Erweiterungen vor dem Upgrade der Hauptversion – Wenn Sie planen, eine Hauptversion mit dem Upgrade zu überspringen, müssen Sie bestimmte Erweiterungen aktualisieren bevor Sie das Upgrade der Hauptversion durchführen. Zum Beispiel überspringt ein Upgrade von den Versionen 9.5.x oder 9.6.x auf die Versionen 11.x eine Hauptversion. Zu den zu aktualisierenden Erweiterungen gehören PostGIS und zugehörige Erweiterungen für die Verarbeitung räumlicher Daten.

    • address_standardizer

    • address_standardizer_data_us

    • postgis_raster

    • postgis_tiger_geocoder

    • postgis_topology

    Führen Sie den folgenden Befehl für jede von Ihnen verwendete Erweiterung aus:

    ALTER EXTENSION PostgreSQL-extension UPDATE TO 'new-version';

    Weitere Informationen finden Sie unter Aktualisieren von PostgreSQL-Erweiterungen. Weitere Informationen über PostGIS-Upgrades finden Sie unter Schritt 6: Upgrade der PostGIS-Erweiterung.

  8. Entfernen bestimmter Erweiterungen vor dem Upgrade der Hauptversion – Ein Upgrade, bei dem eine Hauptversion auf Version 11.x übersprungen wird, unterstützt keine Aktualisierung der Erweiterung pgRouting. Ein Upgrade von den Versionen 9.4.x, 9.5.x oder 9.6.x auf 11.x-Versionen überspringt eine Hauptversion. Es ist sicher, die Erweiterung pgRouting zu verwerfen zu lassen und sie nach dem Upgrade wieder auf eine kompatible Version zu installieren. Für die Erweiterungsversionen, auf die Sie aktualisieren können, lesen Sie Unterstützte PostgreSQL-Erweiterungsversionen.

    Die Erweiterungen tsearch2 und chkpass werden für PostgreSQL ab Version 11 nicht mehr unterstützt. Wenn Sie auf Version 11.x aktualisieren, lassen Sie die Erweiterungen tsearch2 und chkpass vor dem Upgrade weg.

  9. Löschen unbekannter Datentypen – Löschen Sie unknown-Datentypen in Abhängigkeit von der Zielversion.

    PostgreSQL-Version 10 unterstützt den unknown-Datentyp nicht mehr. Wenn eine Datenbank der Version 9.6 den Datentyp unknown verwendet, wird bei einem Upgrade auf eine Version 10 eine Fehlermeldung wie die folgende angezeigt:

    Database instance is in a state that cannot be upgraded: PreUpgrade checks failed: The instance could not be upgraded because the 'unknown' data type is used in user tables. Please remove all usages of the 'unknown' data type and try again."

    Verwenden Sie die folgende SQL, um den unknown-Datentyp in Ihrer Datenbank zu finden, damit Sie die betroffene Spalte entfernen oder in einen unterstützten Datentyp ändern können:

    SELECT DISTINCT data_type FROM information_schema.columns WHERE data_type ILIKE 'unknown';
  10. Durchführen eines Upgrade-Trockenlaufs – Wir empfehlen dringend, ein Hauptversionsupgrade auf einem Duplikat Ihrer Produktionsdatenbank zu testen, bevor Sie das Upgrade auf Ihrer Produktionsdatenbank durchführen. Sie können die Ausführungspläne auf der duplizierten Testdatenbank auf mögliche Regressionen des Ausführungsplans überwachen und deren Leistung bewerten. Um eine doppelte Test-Instance zu erstellen, können Sie entweder Ihre Datenbank aus einem aktuellen Snapshot wiederherstellen oder eine point-in-time Wiederherstellung Ihrer Datenbank auf den letzten wiederherstellbaren Zeitpunkt durchführen.

    Weitere Informationen finden Sie unter Wiederherstellung aus einem Snapshot oder Wiederherstellen einer DB-Instance zu einer bestimmten Zeit. Informationen zu Multi-AZ-DB-Clustern finden Sie unter Wiederherstellen von einem Snapshot in einem Multi-AZ-DB-Cluster oder Wiederherstellen eines Multi-AZ-DB-Clusters zu einer bestimmten Zeit.

    Weitere Einzelheiten zum Durchführen des Upgrades finden Sie unter Manuelles Upgraden der Engine-Version.

    Beachten Sie beim Upgrade einer Datenbank der Version 9.6 auf Version 10, dass PostgreSQL 10 standardmäßig parallele Abfragen aktiviert. Sie können die Auswirkungen von Parallelverarbeitung vor dem Upgrade testen, indem Sie den Parameter max_parallel_workers_per_gather in Ihrer Testdatenbank auf 2 ändern.

    Anmerkung

    Der Standardwert für max_parallel_workers_per_gather-Parameter in der default.postgresql10-DB-Parametergruppe lautet 2.

    Weitere Informationen finden Sie unter Parallel Query in der PostgreSQL-Dokumentation. Um die Parallelverarbeitung in Version 10 zu deaktivieren, setzen Sie den Parameter max_parallel_workers_per_gather auf 0.

    Während des Upgrades der Hauptversion werden die Datenbanken public und template1 und das Schema public in jeder Datenbank vorübergehend umbenannt. Diese Objekte erscheinen in den Protokollen mit ihrem ursprünglichen Namen und einer zufälligen Zeichenfolge, die angehängt wird. Die Zeichenfolge wird so hinzugefügt, dass benutzerdefinierte Einstellungen wie locale und owner während des Upgrades der Hauptversion erhalten bleiben. Sobald das Upgrade abgeschlossen ist, werden die Objekte in ihre ursprünglichen Namen umbenannt.

    Anmerkung

    Während des Upgrades der Hauptversion können Sie keine Wiederherstellung Ihrer DB-Instance oder Ihres Multi-AZ-DB-Clusters durchführen point-in-time. Nachdem das Upgrade von Amazon RDS durchgeführt wurde, wird eine automatische Sicherung der Datenbank vorgenommen. Sie können eine point-in-time Wiederherstellung zu Zeiten durchführen, bevor das Upgrade begonnen hat und nachdem die automatische Sicherung Ihrer Datenbank abgeschlossen ist.

  11. Wenn ein Upgrade mit Fehlern bei der Vorprüfung fehlschlägt, beheben Sie die Probleme – Während des Upgrades der Hauptversion führt Amazon RDS for PostgreSQL zunächst eine Vorprüfung durch, um alle Probleme zu identifizieren, die dazu führen könnten, dass das Upgrade fehlschlägt. Das Vorprüfverfahren überprüft alle potenziell nicht kompatiblen Bedingungen in allen Datenbanken der Instance.

    Wenn die Vorprüfung auf ein Problem stößt, wird ein Protokollereignis erstellt, das anzeigt, dass die Vorprüfung für das Upgrade fehlgeschlagen ist. Die Details des Vorprüfprozesses befinden sich in einem Upgrade-Protokoll mit dem Namen pg_upgrade_precheck.log für alle Datenbanken einer Datenbank. Amazon RDS hängt einen Zeitstempel an den Dateinamen an. Weitere Informationen zum Anzeigen von Protokollen finden Sie unter Überwachen von Amazon RDS-Protokolldateien.

    Wenn ein Lesereplikat-Upgrade bei der Vorprüfung fehlschlägt, wird die Replikation auf dem fehlgeschlagenen Lesereplikat unterbrochen und das Lesereplikat in den Status "beendet" versetzt. Löschen Sie das Lesereplikat und erstellen Sie ein neues Lesereplikat auf der Grundlage der aktualisierten primären DB-Instance.

    Beheben Sie alle im Vorprüfprotokoll identifizierten Probleme und versuchen Sie dann erneut das Hauptversionsupgrade. Im Folgenden finden Sie ein Beispiel für ein Vorprüfprotokoll.

    ------------------------------------------------------------------------ Upgrade could not be run on Wed Apr 4 18:30:52 2018 ------------------------------------------------------------------------- The instance could not be upgraded from 9.6.11 to 10.6 for the following reasons. Please take appropriate action on databases that have usage incompatible with the requested major engine version upgrade and try the upgrade again. * There are uncommitted prepared transactions. Please commit or rollback all prepared transactions.* One or more role names start with 'pg_'. Rename all role names that start with 'pg_'. * The following issues in the database 'my"million$"db' need to be corrected before upgrading:** The ["line","reg*"] data types are used in user tables. Remove all usage of these data types. ** The database name contains characters that are not supported by RDS for PostgreSQL. Rename the database. ** The database has extensions installed that are not supported on the target database version. Drop the following extensions from your database: ["tsearch2"]. * The following issues in the database 'mydb' need to be corrected before upgrading:** The database has views or materialized views that depend on 'pg_stat_activity'. Drop the views.
  12. Wenn ein Lesereplikat-Upgrade während des Upgrades der Datenbank fehlschlägt, beheben Sie das Problem – Ein fehlgeschlagenes Lesereplikat wird in den Zustand incompatible-restore versetzt und die Replikation auf der Datenbank wird beendet. Löschen Sie das Lesereplikat und erstellen Sie ein neues Lesereplikat auf der Grundlage der aktualisierten primären DB-Instance.

    Anmerkung

    Amazon RDS aktualisiert keine Lesereplikate für Multi-AZ-DB-Cluster. Wenn Sie ein Hauptversions-Upgrade auf einem Multi-AZ-DB-Cluster durchführen, ändert sich der Replikationsstatus seiner Lesereplikate in Beendet .

    Ein Lesereplikat-Upgrade kann aus den folgenden Gründen fehlschlagen:

    • Sie konnte die primäre DB-Instance auch nach einer Wartezeit nicht einholen.

    • Es befand sich in einem beendeten oder inkompatiblen Lebenszyklusstatus, z. B. „Speicher voll“, „Inkompatible Wiederherstellung“ usw.

    • Als das Upgrade der primären DB-Instance begann, lief auf der Lesereplikat bereits ein separates Upgrade der Unterversion.

    • Das Lesereplikat verwendete inkompatible Parameter.

    • Das Lesereplikat war nicht in der Lage, mit der primären DB-Instance zu kommunizieren, um den Datenordner zu synchronisieren.

  13. Upgrade Ihrer Produktionsdatenbank – Wenn das Upgrade der Hauptversion erfolgreich durchgeführt wurde, sollten Sie in der Lage sein, Ihre Produktionsdatenbank sicher zu aktualisieren. Weitere Informationen finden Sie unter Manuelles Upgraden der Engine-Version.

  14. Führen Sie die ANALYZE-Operation aus, um die Tabelle pg_statistic zu aktualisieren. Führen Sie diesen Schritt für jede Datenbank auf all Ihren PostgreSQL-Datenbanken durch. Optimizer-Statistiken werden während eines Hauptversionsupgrades nicht übertragen, daher müssen Sie alle Statistiken neu generieren, um Leistungsprobleme zu vermeiden. Führen Sie den Befehl ohne Parameter aus, um Statistiken für alle regulären Tabellen in der aktuellen Datenbank wie folgt zu generieren:

    ANALYZE VERBOSE;

    Das Flag VERBOSE ist optional, aber wenn Sie es verwenden, wird Ihnen der Fortschritt angezeigt. Weitere Informationen finden Sie unter ANALYZE in der PostgreSQL-Dokumentation.

    Anmerkung

    Führen Sie ANALYZE nach dem Upgrade auf Ihrem System aus, um Leistungsprobleme zu vermeiden.

Nachdem das Upgrade der Hauptversion abgeschlossen ist, empfehlen wir Folgendes:

  • Bei einem PostgreSQL-Upgrade werden keine PostgreSQL-Erweiterungen aktualisiert. Informationen zum Upgrade von Erweiterungen finden Sie unter Aktualisieren von PostgreSQL-Erweiterungen.

  • Verwenden Sie optional Amazon RDS, um zwei Protokolle anzuzeigen, die das Dienstprogramm pg_upgrade erstellt. Diese sind pg_upgrade_internal.log und pg_upgrade_server.log. Amazon RDS hängt einen Zeitstempel an den Dateinamen für diese Protokolle an. Sie können diese Protokolle wie jedes andere Protokoll einsehen. Weitere Informationen finden Sie unter Überwachen von Amazon RDS-Protokolldateien.

    Sie können die Upgrade-Protokolle auch in Amazon CloudWatch Logs hochladen. Weitere Informationen finden Sie unter Veröffentlichen von PostgreSQL-Protokollen in Amazon CloudWatch Logs.

  • Um sicherzustellen, dass alles wie erwartet funktioniert, testen Sie Ihre Anwendung auf der aktualisierten Datenbank mit ähnlichem Workload. Nachdem das Upgrade bestätigt wurde, können Sie diese Testinstance löschen.

Automatische Unterversion-Upgrades für PostgreSQL

Wenn Sie beim Erstellen oder Ändern einer DB-Instance oder eines Multi-AZ-DB-Clusters die Option Automatisches Unterversion-Upgrade aktivieren, können Sie Ihre Datenbank automatisch aktualisieren lassen.

Für jede Major-Version von RDS for PostgreSQL wird von RDS eine Minor-Version als automatische Upgradeversion gekennzeichnet. 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 PostgreSQL-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 PostgreSQL-Unterversion in einer bestimmten zu bestimmen AWS-Region.

Für Linux, macOSoder Unix:

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

Windows:

aws rds describe-db-engine-versions ^ --engine postgres ^ --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 PostgreSQL-Unterversion 12.13 in der USA Ost (Ohio) AWS-Region (us-east-2).

Für Linux, macOSoder Unix:

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

Windows:

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

Ihre Ausgabe sieht Folgendem ähnlich.

---------------------------------- | DescribeDBEngineVersions | +--------------+-----------------+ | AutoUpgrade | EngineVersion | +--------------+-----------------+ | True | 12.14 | | False | 12.15 | | False | 13.9 | | False | 13.10 | | False | 13.11 | | False | 14.6 | +--------------+-----------------+

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

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

  • Für die Datenbank ist die Option Automatisches Unterversion-Upgrade aktiviert.

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

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

Anmerkung

Bei einem PostgreSQL-Upgrade werden keine PostgreSQL-Erweiterungen aktualisiert. Informationen zum Upgrade von Erweiterungen finden Sie unter Aktualisieren von PostgreSQL-Erweiterungen.

Aktualisieren von PostgreSQL-Erweiterungen

Bei einem PostgreSQL-Engine-Upgrade werden die meisten PostgreSQL-Erweiterungen nicht aktualisiert. Um eine Erweiterung nach einem Upgrade auf eine Nebenversion zu aktualisieren, verwenden Sie den Befehl ALTER EXTENSION UPDATE.

Anmerkung

Hinweise zum Aktualisieren der PostGIS-Erweiterung finden Sie unter Verwalten von Geodaten mit der PostGIS-Erweiterung (Schritt 6: Upgrade der PostGIS-Erweiterung).

Um die pg_repack-Erweiterung zu aktualisieren, entfernen Sie die Erweiterung und erstellen Sie eine neue Version in der aktualisierten Datenbank. Weitere Informationen finden Sie unter pg_repack installation in der pg_repack-Dokumentation.

Um eine Erweiterung zu aktualisieren, verwenden Sie den folgenden Befehl.

ALTER EXTENSION extension_name UPDATE TO 'new_version';

Eine Liste unterstützter Versionen von PostgreSQL-Erweiterungen finden Sie unter Unterstützte PostgreSQL-Erweiterungsversionen.

Um Ihre derzeit installierten Erweiterungen aufzulisten, verwenden Sie den PostgreSQL-Katalog pg_extension in dem folgenden Befehl.

SELECT * FROM pg_extension;

Um eine Liste der spezifischen Erweiterungsversionen anzuzeigen, die zur Installation verfügbar sind, verwenden Sie die PostgreSQL-Ansicht pg_available_extension_versions in dem folgenden Befehl.

SELECT * FROM pg_available_extension_versions;