PostgreSQL in Amazon RDS - Amazon Relational Database Service

PostgreSQL in Amazon RDS

Amazon RDS unterstützt DB-Instances für mehrere Versionen und Editionen von PostgreSQL. Eine Liste der verfügbaren Versionen finden Sie unter Verfügbare PostgreSQL-Datenbankversionen.

Anmerkung

PostgreSQL 9.6 wird ab dem 26. April 2022 veraltet sein. Weitere Informationen finden Sie unter PostgreSQL-Version 9.6 veraltet.

Sie können DB-Instances und DB-Snapshots, Point-in-Time-Wiederherstellungen und Backups erstellen. DB-Instances mit PostgreSQL unterstützen Multi-AZ-Bereitstellungen, Read Replicas sowie bereitgestellte IOPS und können innerhalb einer Virtual Private Cloud (VPC) erstellt werden. Für die Verbindung zu einer DB-Instance mit PostgreSQL können Sie auch Secure Socket Layer (SSL) nutzen.

Bevor Sie eine DB-Instance erstellen, stellen Sie sicher, dass Sie die Schritte in Einrichten für Amazon RDS ausführen.

Sie können eine beliebige Standard-SQL-Client-Anwendung verwenden, um von Ihrem Computer aus Befehle für die Instance auszuführen. Beispiele solcher Anwendungen: pgAdmin, ein beliebtes Open-Source-Verwaltungs- und Entwicklungstool für PostgreSQL, oder auch psql, ein Befehlszeilen-Dienstprogramm, das Teil einer PostgreSQL-Installation ist. Um eine verwaltete Service-Erfahrung zu bieten, ermöglicht Amazon RDS keinen Host-Zugriff auf DB-Instances. Eingeschränkt wird auch der Zugriff auf bestimmte Systemprozeduren und Tabellen, für die erweiterte Berechtigungen erforderlich sind. Amazon RDS unterstützt den Zugriff auf Datenbanken auf einer DB-Instance unter Verwendung jeder Standard-SQL-Client-Anwendung. Amazon RDS unterstützt keinen direkten Zugriff auf den Host auf eine DB-Instance mithilfe von Telnet oder Secure Shell (SSH).

Amazon RDS for PostgreSQL ist im Einklang mit vielen Industriestandards. Sie können beispielsweise Amazon-RDS-for-PostgreSQL-Datenbanken verwenden, um HIPAA-konforme Anwendungen zu erstellen und Zustandsdaten zu speichern. Dazu gehört die Speicherung geschützter Zustandsdaten (protected health information, PHI) im Rahmen eines abgeschlossenen Business Associate Agreement (BAA) mit AWS. Amazon RDS for PostgreSQL erfüllt auch die Anforderungen des Federal Risk and Authorization Management Program (FedRAMP). Amazon RDS for PostgreSQL hat eine FedRAMP Joint Authorization Board (JAB) Provisional Authority to Operate (P-ATO) bei der FedRAMP HIGH Baseline innerhalb desAWS GovCloud (US)Regionen. Weitere Informationen über unterstützte Compliance-Standards finden Sie unter AWSCloud-Compliance.

Um PostgreSQL-Daten in eine DB-Instance zu importieren, befolgen Sie bitte die Informationen im Abschnitt Importieren von Daten in PostgreSQL in Amazon RDS.

Häufige Verwaltungsaufgaben für Amazon RDS for PostgreSQL

Im Folgenden werden die Verwaltungsaufgaben veranschaulicht, die Sie mit einer Amazon RDS for PostgreSQL-DB-Instance am häufigsten durchführen. Bei jeder Aufgabe sind Links zu relevanter Dokumentation enthalten.

Aufgabenbereich Relevante Dokumentation

Amazon RDS für die Erstanwendung einrichten

Sie müssen einige Voraussetzungen erfüllen, um Ihre DB-Instance erstellen zu können. Beispielsweise werden DB-Instances standardmäßig mit einer Firewall erstellt, die den Zugriff auf die Instance verhindert. Sie müssen also eine Sicherheitsgruppe mit den korrekten IP-Adressen und der Netzwerkkonfiguration erstellen, um auf die DB-Instance zugreifen zu können.

Einrichten für Amazon RDS

Understanding Amazon RDS DB instances (Grundlagen von Amazon RDS-DB-Instances

Wenn Sie eine DB-Instance zu Produktionszwecken erstellen, müssen Sie wissen, wie Instance-Klassen, Speichertypen und bereitgestellte IOPS in Amazon RDS funktionieren.

DB-Instance-Klassen

Amazon RDS-Speichertypen

Bereitgestellter IOPS SSD-Speicher

Suchen nach verfügbaren PostgreSQL-Versionen

Amazon RDS unterstützt mehrere Versionen von PostgreSQL.

Verfügbare PostgreSQL-Datenbankversionen

Einrichten von hoher Verfügbarkeit und Failover-Unterstützung

Bei einer DB-Instance für die Produktion sollten Multi-AZ-Bereitstellungen eingesetzt werden. Multi-AZ-Bereitstellungen bieten eine erhöhte Verfügbarkeit, eine längere Lebensdauer von Daten sowie eine höhere Fehlertoleranz für DB-Instances.

Multi-AZ-Bereitstellungen für Hochverfügbarkeit

Grundlegendes zum Amazon Virtual Private Cloud (VPC)-Netzwerk

Wenn Ihr AWS-Konto über eine Standard-VPC verfügt, wird Ihre DB-Instance automatisch in dieser Standard-VPC erstellt. Es kann sein, dass Ihr Konto nicht über eine Standard-VPC verfügt und Sie die DB-Instance in einer VPC erstellen möchten. Erstellen Sie in diesem Fall die VPC und die Subnetzgruppen, bevor Sie die DB-Instance erstellen.

Ermitteln der verwendeten Plattform: EC2-VPC oder EC2-Classic

Arbeiten mit einer DB-Instance in einer VPC

Importieren von Daten in Amazon RDS PostgreSQL

Für den Import von Daten in Ihre PostgreSQL-DB-Instance in Amazon RDS stehen Ihnen verschiedene Tools zur Verfügung.

Importieren von Daten in PostgreSQL in Amazon RDS

Einrichten schreibgeschützter Read Replicas (primär und Standby)

RDS for PostgreSQL unterstützt Lesereplikate sowohl in derselben AWS-Region als auch in einer anderen AWS-Region als die primäre Instance.

Arbeiten mit Lesereplikaten

Arbeiten mit PostgreSQL Read Replicas in Amazon RDS

Erstellen eines Lesereplikats in einer anderen AWS-Region

Grundlagen zu Sicherheitsgruppen

DB-Instances werden standardmäßig mit einer Firewall erstellt, die den Zugriff auf die Instance verhindert. Um den Zugriff über diese Firewall zu ermöglichen, bearbeiten Sie die eingehenden Regeln für die Sicherheitsgruppe, die mit der VPC verknüpft ist, die die DB-Instance hostet.

Grundsätzlich müssen Sie eine DB-Sicherheitsgruppe erstellen, wenn Ihre DB-Instance sich auf der Plattform EC2-Classic befindet. Wenn Ihre DB-Instance sich auf der Plattform EC2-VPC befindet, müssen Sie eine VPC-Sicherheitsgruppe erstellen.

Ermitteln der verwendeten Plattform: EC2-VPC oder EC2-Classic

Zugriffskontrolle mit Sicherheitsgruppen

Einrichten von Parametergruppen und -funktionen

Um die Standardparameter für Ihre DB-Instance zu ändern, erstellen Sie eine benutzerdefinierte DB-Parametergruppe und ändern Sie die Einstellungen darauf. Wenn Sie dies tun, bevor Sie Ihre DB-Instance erstellen, können Sie Ihre benutzerdefinierte DB-Parametergruppe auswählen, wenn Sie die Instance erstellen.

Arbeiten mit Parametergruppen

Verbinden mit Ihrer PostgreSQL-DB-Instance

Nachdem Sie eine Sicherheitsgruppe erstellt und diese einer DB-Instance zugeordnet haben, können Sie mithilfe einer beliebigen Standard-SQL-Client-Anwendung wie psql oder pgAdmin eine Verbindung mit dieser DB-Instance herstellen.

Herstellen einer Verbindung zu einer DB-Instance, in der die PostgreSQL-Datenbank-Engine ausgeführt wird

Verwenden von SSL mit einer PostgreSQL-DB-Instance

Sichern und Wiederherstellen Ihrer DB-Instance

Sie können Ihre DB-Instance so konfigurieren, dass sie automatische Backups oder manuelle Snapshots vornimmt. Aus diesen Backups oder Snapshots können Sie dann Instances wiederherstellen.

Sichern und Wiederherstellen einer Amazon-RDS-DB-Instance

Überwachen der Aktivität und Leistung Ihrer DB-Instance

Sie überwachen eine PostgreSQL-DB-Instance, indem Sie CloudWatch-Amazon RDS-Metriken, Ereignisse und „Enhanced Monitoring“ (Erweiterte Überwachung) verwenden.

Anzeigen von Metriken in der Amazon RDS-Konsole

Anzeigen von Amazon RDS-Ereignissen

Aktualisieren der PostgreSQL-Datenbankversion

Sie können sowohl Upgrades von Hauptversionen als auch von Nebenversionen Ihrer PostgreSQL-DB-Instance vornehmen.

Aktualisieren einer PostgreSQL-DB-Engine für Amazon RDS

Auswählen eines Hauptversions-Upgrades für PostgreSQL

Arbeiten mit Protokolldateien

Sie können auf die Protokolldateien für Ihre PostgreSQL-DB-Instance zugreifen.

PostgreSQL-Datenbankprotokolldateien

Grundlagen der bewährten Methoden für PostgreSQL-DB-Instances

Hier werden einige bewährte Methoden für die Arbeit mit PostgreSQL in Amazon RDS behandelt.

Bewährte Methoden für die Arbeit mit PostgreSQL

Im Folgenden finden Sie eine Liste anderer Abschnitte in diesem Leitfaden, die Ihnen helfen können, wichtige Funktionen von RDS for PostgreSQL zu verstehen und zu verwenden:

Arbeiten mit Database Preview Environment

Wenn Sie in Amazon RDS eine DB-Instance erstellen, können Sie sich darauf verlassen, dass die zugrunde liegende PostgreSQL-Version getestet wurde und in vollem Umfang von Amazon unterstützt wird. Die PostgreSQL-Community veröffentlicht kontinuierlich neue Versionen und Erweiterungen. Sie können neue PostgreSQL-Versionen und -Erweiterungen testen, bevor sie in vollem Umfang unterstützt werden. Zu diesem Zweck können Sie eine neue DB-Instance in Database Preview Environment erstellen.

DB-Instances in Database Preview Environment ähneln DB-Instances in Produktionsumgebungen. Es sind aber einige wichtige Aspekte zu berücksichtigen:

  • Alle DB-Instances werden 60 Tage nach Erstellung zusammen mit allen Backups und Snapshots gelöscht.

  • Sie können eine DB-Instance nur in einer virtuellen privaten Cloud (VPC) erstellen, die auf dem Service Amazon VPC basiert.

  • Sie können nur Instance-Typen M6g, M5, T3, R6g und R5 erstellen. Weitere Informationen zu RDS-Instance-Klassen erhalten Sie unter DB-Instance-Klassen.

  • Sie können nur Allzweck-SSD und bereitgestellte IOPS-SSD als Speicher verwenden.

  • Der AWS Support bietet keine Hilfe zu DB-Instances an. Sie können Ihre Fragen im RDS Database Preview Environment-Forum posten.

  • Sie können einen Snapshot einer DB-Instance nicht in eine Produktionsumgebung kopieren.

  • Sie können Single-AZ- und Multi-AZ-Bereitstellungen verwenden.

  • Sie können die standardmäßigen PostgreSQL-Dump- und -Ladefunktionen verwenden, um Datenbanken aus der Database Preview-Umgebung zu exportieren oder in diese zu importieren.

Nicht in der Vorschauumgebung unterstützte Funktionen

Die folgenden Funktionen sind in der Vorschauumgebung nicht verfügbar:

  • Regionsübergreifende Snapshot-Kopie

  • Regionsübergreifende Lesereplikate

Erstellen einer neuen DB-Instance in der Vorschauumgebung

Erstellen Sie mit dem folgenden Verfahren eine DB-Instance in der Vorschauumgebung.

Erstellen Sie eine DB-Instance in der Vorschauumgebung wie folgt:

  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die Amazon-RDS-Konsole unter https://console.aws.amazon.com/rds/.

  2. Wählen Sie im Navigationsbereich Dashboard aus.

  3. Wählen Sie Zur Datenbankvorschauumgebung umschalten aus.

    
                            Dialogfeld zur Auswahl der Umgebung der Vorversion

    Sie können auch direkt zu Database Preview Environment (Datenbank-Vorschauumgebung) navigieren.

    Anmerkung

    Wenn Sie mit der API oder CLI eine Instance in Database Preview Environment erstellen möchten, ist der Endpunk rds-preview.us-east-2.amazonaws.com.

  4. Fahren Sie mit dem Verfahren gemäß der Beschreibung unter for Konsole.

Einschränkungen für PostgreSQL-DB-Instances

Im Folgenden finden Sie eine Liste der Einschränkungen für RDS for PostgreSQL:

  • Sie können bis zu 40 PostgreSQL-DB-Instances haben.

  • Informationen zu Speicherplatzbeschränkungen finden Sie unter Amazon RDS-DB-Instance-Speicher.

  • Amazon RDS reserviert bis zu 3 Verbindungen für die Systemwartung. Wenn Sie einen Wert für die Benutzerverbindungsparameter festlegen, fügen Sie der voraussichtlich verwendeten Anzahl an Verbindungen drei hinzu.

Verfügbare PostgreSQL-Datenbankversionen

Amazon RDS unterstützt DB-Instances für mehrere Editionen von PostgreSQL. Sie können eine beliebige aktuell verfügbare PostgreSQL-Version festlegen, wenn Sie eine DB-Instance erstellen. Sie können die Hauptversionen (wie z. B. PostgreSQL 10) sowie eine beliebige verfügbare Unterversion für die festgelegte Hauptversion festlegen. Wenn keine Version angegeben wird, verwendet Amazon RDS standardmäßig eine verfügbare Version – in der Regel die aktuelle Version. Wenn die Hauptversion, jedoch nicht die Unterversion, festgelegt ist, verwendet Amazon RDS standardmäßig den letzten Release der Hauptversion, die Sie festgelegt haben.

Eine Liste aller verfügbaren Versionen sowie der Standardversionen für neu erstellte DB-Instances können Sie mit dem AWS CLI-Befehl describe-db-engine-versions aufrufen. Verwenden Sie zum Beispiel den folgenden Befehl, um die Standardversion der PostgreSQL-Engine anzuzeigen:

aws rds describe-db-engine-versions ––default-only ––engine postgres

Weitere Informationen zu den PostgreSQL-Versionen, die von Amazon RDS unterstützt werden, finden Sie in den Versionshinweisen zu Amazon RDS for PostgreSQL.

PostgreSQL-Version 9.6 veraltet

Am 31. März 2022 plant Amazon RDS, PostgreSQL 9.6 nach dem folgenden Zeitplan einzustellen. Damit wird das zuvor angekündigte Datum von 18. Januar 2022 bis zum 26. April 2022 verlängert. Sie sollten all Ihre PostgreSQL-9.6-DB-Instances so schnell wie möglich auf PostgreSQL 12 oder höher aktualisieren. Wir empfehlen, zuerst auf die Nebenversion 9.6.20 oder höher zu aktualisieren und dann direkt auf PostgreSQL 12 zu aktualisieren, anstatt auf eine Haupt-Zwischenversion zu aktualisieren. Weitere Informationen finden Sie unter Aktualisieren einer PostgreSQL-DB-Engine für Amazon RDS.

Aktion oder Empfehlung Datumsangaben

Die PostgreSQL-Community hat den Support für PostgreSQL 9.6 eingestellt und wird für diese Version keine Bugfixes oder Sicherheitspatches mehr bereitstellen.

11. November 2021

Beginnen Sie so schnell wie möglich mit dem Upgrade von DB-Instances von RDS for PostgreSQL 9.6 auf PostgreSQL 12 oder höher. Sie können zwar weiterhin PostgreSQL-9.6-Snapshots wiederherstellen und Lesereplikate mit Version 9.6 erstellen, sollten jedoch die anderen kritischen Termine im Zeitplan zur Einstellung des Supports und deren Auswirkungen beachten.

Jetzt – 31. März 2022

Nach diesem Datum können Sie keine neuen Amazon-RDS-Instances mit PostgreSQL-Hauptversion 9.6 über die AWS Management Console oder die AWS CLI erstellen.

31. März 2022

Amazon RDS aktualisiert PostgreSQL-9.6-Instances automatisch auf Version 12. Wenn Sie einen PostgreSQL-9.6-Datenbank-Snapshot wiederherstellen, aktualisiert Amazon RDS die wiederhergestellte Datenbank automatisch auf PostgreSQL 12.

26. April 2022

Weitere Informationen über die Einstellung des Supports für RDS for PostgreSQL 9.6 finden Sie unter Ankündigung: Verlängerung des Ende-der-Nutzungsdauer-Prozesses für Amazon RDS for PostgreSQL 9.6.

Veraltete Versionen für Amazon RDS for PostgreSQL

RDS for PostgreSQL 9.5 ist ab März 2021 veraltet. Weitere Informationen zur Einstellung des Supports für RDS for PostgreSQL 9.5 finden Sie unter Aktualisieren von Amazon RDS for PostgreSQL-Version 9.5.

Weitere Informationen zur Veralterungsrichtlinie für RDS for PostgreSQL finden Sie in den Häufig gestellten Fragen zu Amazon RDS. Weitere Informationen zu PostgreSQL-Versionen finden Sie unter Versioning-Richtlinie in der PostgreSQL-Dokumentation.

Unterstützte PostgreSQL-Erweiterungsversionen

RDS for PostgreSQL unterstützt viele PostgreSQL-Erweiterungen. Die PostgreSQL-Community bezeichnet diese manchmal als Module. Erweiterungen bauen auf der von der PostgreSQL-Engine bereitgestellten Funktionalität auf. Darüber hinaus finden Sie eine Liste der von Amazon RDS unterstützten Erweiterungen in der Standard-DB-Parametergruppe für diese PostgreSQL-Version. Sie können sich auch die Liste der aktuellen Erweiterungen ansehen, wenn Sie psql verwenden, indem Sie den Parameter rds.extensions anzeigen, wie im folgenden Beispiel.

SHOW rds.extensions;
Anmerkung

Parameter, die in einer älteren Version hinzugefügt wurden, werden möglicherweise nicht richtig dargestellt, wenn der Parameter rds.extensions in psql verwendet wird.

Weitere Informationen über die von Amazon RDS unterstützten PostgreSQL-Erweiterungen finden Sie unter In Amazon RDS unterstützte PostgreSQL-Erweiterungen in den Versionshinweisen zu Amazon RDS for PostgreSQL.

Beschränkung der Installation von PostgreSQL-Erweiterungen

Sie können einschränken, welche Erweiterungen auf einer PostgreSQL-DB-Instance installiert werden können. Setzen Sie dazu den rds.allowed_extensions-Parameter auf eine Zeichenfolge von kommagetrennten Erweiterungsnamen. Nur diese Erweiterungen können dann in der PostgreSQL-DB-Instance installiert werden.

Die Standardzeichenfolge für den rds.allowed_extensions-Parameter ist '*', was bedeutet, dass jede für die Engine-Version verfügbare Erweiterung installiert werden kann. Das Ändern des rds.allowed_extensions-Parameters erfordert keinen Neustart der Datenbank, da es sich um einen dynamischen Parameter handelt.

Die PostgreSQL-DB-Instance-Engine muss eine der folgenden Versionen sein, damit Sie den rds.allowed_extensions-Parameter verwenden können:

  • PostgreSQL 14.1 oder eine höhere Nebenversion

  • PostgreSQL 13.2 oder eine höhere Nebenversion

  • PostgreSQL 12.6 oder eine höhere Nebenversion

Verwenden Sie den folgenden psql-Befehl, um zu sehen, welche Erweiterungsinstallationen zulässig sind.

postgres=> SHOW rds.allowed_extensions; rds.allowed_extensions ------------------------ *

Wenn eine Erweiterung in der Liste im rds.allowed_extensions-Parameter installiert wurde, bevor sie ausgelassen wurde, kann die Erweiterung weiterhin normal verwendet werden, und Befehle wie ALTER EXTENSION und DROP EXTENSION funktionieren weiter. Nachdem eine Erweiterung jedoch eingeschränkt wurde, schlagen die CREATE EXTENSION-Befehle für die eingeschränkte Erweiterung fehl.

Die Installation von Erweiterungsabhängigkeiten mit CREATE EXTENSION CASCADE ist ebenfalls eingeschränkt. Die Erweiterung und ihre Abhängigkeiten müssen in angegeben werde rds.allowed_extensions. Wenn eine Installation der Erweiterungsabhängigkeit fehlschlägt, schlägt die gesamte CREATE EXTENSION CASCADE-Anweisung fehl.

Wenn eine Erweiterung nicht im rds.allowed_extensions-Parameter enthalten ist, wird ein Fehler wie der folgende angezeigt, wenn Sie versuchen, sie zu installieren.

ERROR: permission denied to create extension "extension-name" HINT: This extension is not specified in "rds.allowed_extensions".

Vertrauenswürdige Erweiterungen für PostgreSQL

Um die meisten PostgreSQL-Erweiterungen zu installieren, sind rds_superuser-Berechtigungen erforderlich. PostgreSQL 13 führte vertrauenswürdige Erweiterungen ein, die die Notwendigkeit der Gewährung von rds_superuser-Berechtigungen für normale Benutzer reduziert. Mit dieser Funktion können Benutzer viele Erweiterungen installieren, wenn sie über die CREATE -Berechtigung für die aktuelle Datenbank anstatt der rds_superuser-Rolle verfügen. Weitere Informationen finden Sie im SQL-Befehl ERWEITERUNG ERSTELLEN in der PostgreSQL-Dokumentation.

Im Folgenden werden die Erweiterungen aufgeführt, die von einem Benutzer installiert werden können, der über die CREATE-Berechtigung für die aktuelle Datenbank verfügt und die rds_superuser-Rolle nicht benötigt:

Arbeiten mit PostgreSQL-Funktionen, die von Amazon RDS for PostgreSQL unterstützt werden

Amazon RDS for PostgreSQL unterstützt viele der gängigsten PostgreSQL-Funktionen viele gängige Funktionalitäten. PostgreSQL verfügt beispielsweise über eine Selbstbereinigungsfunktion, die die routinemäßige Wartung der Datenbank durchführt. Diese Funktion ist standardmäßig aktiviert. Obwohl Sie diese Funktion deaktivieren können, empfehlen wir dringend, sie eingeschaltet zu lassen. Diese Funktion zu verstehen und was Sie tun können, um sicherzustellen, dass sie so funktioniert, wie sie sollte, ist eine grundlegende Aufgabe eines jeden DBA. Weitere Informationen zur Selbstbereinigung finden Sie unter Arbeiten mit der PostgreSQL-Selbstbereinigung in Amazon RDS for PostgreSQL. Weitere Informationen zu anderen gängigen DBA-Aufgaben finden Sie unter ., Häufige DBA-Aufgaben für Amazon RDS for PostgreSQL.

RDS for PostgreSQL unterstützt auch Erweiterungen, die der DB-Instance wichtige Funktionen hinzufügen. Sie können beispielsweise die PostGIS-Erweiterung verwenden, um mit räumlichen Daten zu arbeiten, oder die Erweiterung pg_cron verwenden, um die Wartung innerhalb der Instance zu planen. Weitere Informationen zu PostgreSQL-Erweiterungen finden Sie unter Verwenden von PostgreSQL-Erweiterungen mit Amazon RDS for PostgreSQL.

Fremddaten-Wrapper sind eine bestimmte Art von Erweiterung, die dazu dient, dass Ihre DB-Instance von RDS for PostgreSQL mit anderen kommerziellen Datenbanken oder Datentypen arbeiten kann. Weitere Informationen zu Fremddaten-Wrappern, die von RDS for PostgreSQL unterstützt werden, finden Sie unter Arbeiten mit den unterstützten Fremddaten-Wrappern für Amazon RDS for PostgreSQL.

Im Folgenden finden Sie Informationen zu einigen PostgreSQL-Funktionen, die von RDS for PostgreSQL unterstützt werden.

Benutzerdefinierte Datentypen und Aufzählungen mit RDS for PostgreSQL

PostgreSQL unterstützt das Erstellen benutzerdefinierter Datentypen und das Arbeiten mit Aufzählungen. Weitere Informationen zum Erstellen von und zum Arbeiten mit Aufzählungen und anderen Datentypen finden Sie unter Enumerated types (Aufzählungstypen) in der PostgreSQL-Dokumentation.

Im Folgenden finden Sie ein Beispiel für das Erstellen eines Typs als Aufzählung und das anschließende Einfügen von Werten in eine Tabelle.

CREATE TYPE rainbow AS ENUM ('red', 'orange', 'yellow', 'green', 'blue', 'purple'); CREATE TYPE CREATE TABLE t1 (colors rainbow); CREATE TABLE INSERT INTO t1 VALUES ('red'), ( 'orange'); INSERT 0 2 SELECT * from t1; colors -------- red orange (2 rows) postgres=> ALTER TYPE rainbow RENAME VALUE 'red' TO 'crimson'; ALTER TYPE postgres=> SELECT * from t1; colors --------- crimson orange (2 rows)

Ereignisauslöser für RDS for PostgreSQL

Alle aktuellen PostgreSQL-Versionen unterstützen Ereignisauslöser, ebenso alle verfügbaren Versionen von RDS for PostgreSQL. Sie können das Hauptbenutzerkonto nutzen (Standard, postgres), um Ereignisauslöser zu erstellen, zu ändern, umzubenennen und zu löschen. Ereignisauslöser befinden sich auf DB-Instance-Level und können so auf alle Datenbanken einer Instance angewendet werden.

Mit dem folgenden Code wird beispielsweise ein Ereignisauslöser erstellt, der den aktuellen Benutzer am Ende jedes DDL-Befehls (Data Definition Language, Datendefinitionssprache) ausgibt.

CREATE OR REPLACE FUNCTION raise_notice_func() RETURNS event_trigger LANGUAGE plpgsql AS $$ BEGIN RAISE NOTICE 'In trigger function: %', current_user; END; $$; CREATE EVENT TRIGGER event_trigger_1 ON ddl_command_end EXECUTE PROCEDURE raise_notice_func();

Weitere Informationen über PostgreSQL-Ereignisauslöser finden Sie unter Event Triggers in der PostgreSQL-Dokumentation.

Bei der Verwendung von PostgreSQL-Ereignisauslösern in Amazon RDS gibt es einige Einschränkungen. Diese umfassen u. a. folgende:

  • Auf Read Replicas können keine Ereignisauslöser erstellt werden. Sie können jedoch Ereignisauslöser auf einer Read Replica-Quelle erstellen. Die Ereignisauslöser werden dann in die Read Replica kopiert. Die Ereignisauslöser auf der Read Replica werden nicht bei Änderungen, die von der Quelle ausgehen, ausgelöst. Wenn jedoch die Read Replica verwendet wird, werden die vorhandenen Ereignisauslöser bei Datenbank-Operationen ausgelöst.

  • Um das Upgrade einer Hauptversion für eine PostgreSQL-DB-Instance durchzuführen, für die ein Ereignisauslöser verwendet wird, müssen Sie vor dem Upgraden der Instance die Ereignisauslöser löschen.

Huge Pages für RDS for PostgreSQL

Huge Pages ist eine Arbeitsspeicher-Verwaltungsfunktion, die den Overhead reduziert, wenn eine DB-Instance mit großen, zusammenhängenden Arbeitsspeicherblöcken arbeitet, wie sie von gemeinsam genutzten Puffern verwendet werden. Diese PostgreSQL-Funktion wird von allen derzeit verfügbaren Versionen von RDS for PostgreSQL unterstützt. Sie können große Seiten für Ihre Anwendung zuordnen, indem Sie Aufrufe des freigegebenen Speichers mmap oder SYSV verwenden. RDS for PostgreSQL unterstützt Seitengrößen von sowohl 4 KB als auch 2 MB.

Sie können Huge Pages ein- oder ausschalten, indem Sie den Wert des huge_pages-Parameters ändern. Die Funktion ist standardmäßig für alle DB-Instance-Klassen aktiviert, außer Micro, Small und Medium.

Anmerkung

Huge Pages wird von den DB-Instance-Klassen db.m1, db.m2 und db.m3 nicht unterstützt.

RDS for PostgreSQL verwendet Huge Pages basierend auf dem verfügbaren gemeinsam genutzten Arbeitsspeicher. Wenn die DB-Instance aufgrund von Einschränkungen des gemeinsam genutzten Speichers keine großen Seiten verwenden kann, hindert Amazon RDS die DB-Instance am Starten. In diesem Fall legt Amazon RDS den Status der DB-Instance auf einen nicht kompatiblen Parameterstatus fest. In diesem Fall können Sie den Parameter huge_pages auf off setzen, sodass Amazon RDS die DB-Instance starten kann.

Der Parameter shared_buffers ist wichtig für die Einstellung des gemeinsam genutzten Speicherpools, der für die Verwendung von großen Seiten erforderlich ist. Der Standardwert für den shared_buffers-Parameter verwendet ein Makro für Datenbankparameter. Dieses Makro legt einen Prozentsatz der insgesamt verfügbaren 8 KB an Seiten fest, die für den Speicher der DB-Instance verfügbar sind, verfügbar. Wenn Sie riesige Seiten verwenden, werden diese Seiten in den riesigen Seiten zusammengefasst zugeordnet. Amazon RDS versetzt eine DB-Instance in einen inkompatiblen Parameterstatus, wenn die Parameter für den gemeinsam genutzten Speicher so eingestellt sind, dass sie mehr als 90 Prozent des DB-Instance-Speichers benötigen.

Weitere Informationen zur PostgreSQL-Arbeitsspeicherverwaltung finden Sie unter Ressourcennutzung in der PostgreSQL-Dokumentation.

Ausführen der logischen Replikation für Amazon RDS for PostgreSQL

Ab Version 10.4 unterstützt Amazon RDS for PostgreSQL die Veröffentlichung und das Abonnement von SQL-Syntax, die erstmals in PostgreSQL 10 eingeführt wurde. Weitere Informationen finden Sie unter Logische Replikation in der PostgreSQL-Dokumentation.

Im Folgenden erfahren Sie, wie Sie die logische Replikation für eine DB-Instance von RDS for PostgreSQL einrichten.

Verständnis der logischen Replikation und logischen Decodierung

RDS for PostgreSQL unterstützt das Streaming von Write-Ahead-Log(WAL)-Änderungen mithilfe der Slots für logische Replikation von PostgreSQL. Es unterstützt auch die Verwendung logischer Decodierung. Sie können logische Replikations-Slots in Ihrer Instance einrichten und über diese Slots Datenbankänderungen auf einen Client wie z. B. streame pg_recvlogical. Sie erstellen logische Replikationsslots auf Datenbankebene, die Replikationsverbindungen zu einer einzelnen Datenbank unterstützen.

Die gängigsten Clients für die logische Replikation von PostgreSQL sind AWS Database Migration Service oder ein individuell verwalteter Host auf einer Amazon-EC2-Instance. Der logische Replikations-Slot enthält keine Informationen über den Empfänger des Streams. Es gibt auch keine Anforderung, dass das Ziel eine Replikatdatenbank sein muss. Wenn beim Einrichten eines Slots für die logische Replikation nicht vom Slot gelesen wird, können Daten in den Speicher Ihrer DB-Instance geschrieben werden und diesen schnell füllen.

Sie aktivieren die logische Replikation und die logische Decodierung PostgreSQL für Amazon RDS durch einen Parameter, einen neuen Replikationsverbindungstyp sowie eine Sicherheitsrolle. Beim Client für die logische Decodierung kann es sich um jeden beliebigen Client handeln, der eine Replikationsverbindung zu einer Datenbank in einer PostgreSQL-DB-Instance herstellen kann.

Logische Decodierung für eine DB-Instance von RDS for PostgreSQL aktivieren

  1. Stellen Sie sicher, dass das Benutzerkonto, das Sie verwenden, folgende Rollen hat:

    • Die rds_superuser-Rolle, damit Sie die logische Replikation aktivieren können

    • Die rds_replication-Rolle erteilt Berechtigungen zur Verwaltung von logischen Slots und zum Streamen von Daten mithilfe von logischen Slots

  2. Setzen Sie den statischen Parameter rds.logical_replication auf 1. Setzen Sie bei der Anwendung dieses Parameters auch die Parameter wal_level, max_wal_senders, max_replication_slots und max_connections fest. Diese Änderungen an den Parametern können die WAL-Generierung steigern, legen Sie daher den Parameter rds.logical_replication nur dann fest, wenn Sie logische Slots verwenden.

  3. Starten Sie die DB-Instance neu, damit der statische Parameter rds.logical_replication in Kraft tritt.

  4. Erstellen Sie einen logischen Replikationsslot wie im nächsten Abschnitt erläutert. Für diesen Prozess ist es erforderlich, dass Sie ein Decodier-Plugin angeben. Derzeit unterstützt RDS for PostgreSQL die test_decoding- und wal2json-Ausgabe-Plugins, die mit PostgreSQL geliefert werden.

Weitere Informationen zur logischen Decodierung mit PostgreSQL finden Sie in der PostgreSQL-Dokumentation.

Arbeiten mit logischen Replikations-Slots

Sie können SQL-Befehle verwenden, um mit logischen Slots zu arbeiten. Beispiel: Der folgende Befehl erstellt einen logischen Slot mit dem Namen test_slot unter Verwendung des standardmäßigen Ausgangs-Plugin test_decoding von PostgreSQL.

SELECT * FROM pg_create_logical_replication_slot('test_slot', 'test_decoding'); slot_name | xlog_position -----------------+--------------- regression_slot | 0/16B1970 (1 row)

Mit dem folgenden Befehl können Sie die logischen Slots auflisten.

SELECT * FROM pg_replication_slots;

Mit dem folgenden Befehl können Sie einen logischen Slot entfernen.

SELECT pg_drop_replication_slot('test_slot'); pg_drop_replication_slot ----------------------- (1 row)

Weitere Beispiele zum Arbeiten mit logischen Replikations-Slots finden Sie unter Logical Decoding Examples in der PostgreSQL-Dokumentation.

Sobald Sie den logischen Replikationsslot erstellt haben, können Sie mit dem Streaming beginnen. Das folgende Beispiel zeigt, wie die logische Decodierung über das Streaming-Replikationsprotokoll gesteuert wird. Dieses Beispiel verwendet das Programm pg_recvlogical, das in der PostgreSQL-Distribution enthalten ist. Dazu muss die Client-Authentifizierung so eingerichtet sein, dass Replikationsverbindungen zugelassen werden.

pg_recvlogical -d postgres --slot test_slot -U postgres --host -instance-name.111122223333.aws-region.rds.amazonaws.com -f - --start

Fragen Sie die Funktion pg_replication_origin_status ab, um den Inhalt der pg_show_replication_origin_status Ansicht anzuzeigen.

SELECT * FROM pg_show_replication_origin_status(); local_id | external_id | remote_lsn | local_lsn ----------+-------------+------------+----------- (0 rows)

RAM-Datenträger für das stats_temp_directory

Sie können den Parameter rds.pg_stat_ramdisk_size von RDS for PostgreSQL verwenden, um den Systemspeicher festzulegen, der einer RAM-Disk zur Speicherung von PostgreSQL-stats_temp_directory zugewiesen ist. Der RAM-Datenträgerparameter ist für alle PostgreSQL-Versionen in Amazon RDS verfügbar.

Bei bestimmten Workloads kann durch die Einstellung dieses Parameters die Leistung verbessert und die I/O-Anforderungen können gesenkt werden. Weitere Informationen zur Verwendung von stats_temp_directory finden Sie in der PostgreSQL-Dokumentation.

Um einen RAM-Datenträger für Ihr stats_temp_directory einzurichten, legen Sie den Parameter rds.pg_stat_ramdisk_size in der von Ihrer DB-Instance verwendeten Parametergruppe auf einen Wert ungleich Null fest. Der Parameterwert wird in MB angegeben. Sie müssen die DB-Instance neu starten, damit die Änderungen übernommen werden. Weitere Informationen zum Festlegen von Parametern finden Sie unter Arbeiten mit Parametergruppen.

Mit dem folgenden AWS CLI-Befehl wird beispielsweise der RAM-Datenträgerparameter auf 256 MB festgelegt.

aws rds modify-db-parameter-group \ --db-parameter-group-name pg-95-ramdisk-testing \ --parameters "ParameterName=rds.pg_stat_ramdisk_size, ParameterValue=256, ApplyMethod=pending-reboot"

Nachdem Sie neu gestartet haben, führen Sie den folgenden Befehl aus, um den Status des anzuzeige stats_temp_directory.

postgres=> SHOW stats_temp_directory;

Der Befehl sollte Folgendes zurückgeben.

stats_temp_directory --------------------------- /rdsdbramdisk/pg_stat_tmp (1 row)

Tablespaces für RDS for PostgreSQL

RDS for PostgreSQL unterstützt Tablespaces aus Kompatibilitätsgründen. Da sich der gesamte Speicher auf einem einzigen logischen Volume befindet, können Sie keine Tablespaces für I/O-Splitting oder -Isolierung verwenden. Unsere Benchmarks und Erfahrung zeigen, dass ein einzelnes logisches Volume für die meisten Anwendungsfälle das beste Setup ist.

Um Tablespaces mit Ihrer DB-Instance von RDS for PostgreSQL zu erstellen und zu verwenden, benötigen Sie die rds_superuser-Rolle. Das Hauptbenutzerkonto (Standardname, postgres) Ihrer DB-Instance von RDS for PostgreSQL ist Mitglied dieser Rolle. Weitere Informationen finden Sie unter Die Rolle „rds_superuser“ verstehen.

Wenn Sie beim Erstellen eines Tablespace einen Dateinamen angeben, lautet das Pfadpräfix /rdsdbdata/db/base/tablespace. Im folgenden Beispiel werden Tablespace-Dateien in abgeleg /rdsdbdata/db/base/tablespace/data. In diesem Beispiel wird angenommen, dass ein dbadmin-Benutzer (Rolle) existiert und ihm die rds_superuser-Rolle gewährt wurde, die zur Arbeit mit Tablespaces benötigt wird.

postgres=> CREATE TABLESPACE act_data OWNER dbadmin LOCATION '/data'; CREATE TABLESPACE

Weitere Informationen zu PostgreSQL-Tablespaces finden Sie unter Tablespaces in der PostgreSQL-Dokumentation.