Durchführen einer logischen Replikation für Amazon RDS for Postgre SQL - 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.

Durchführen einer logischen Replikation für Amazon RDS for Postgre SQL

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

Anmerkung

Neben der systemeigenen Funktion zur SQL logischen Replikation von Postgre, die in Postgre SQL 10 eingeführt wurde, unterstützt RDS for Postgre SQL auch die Erweiterung. pglogical Weitere Informationen finden Sie unter Verwenden von pglogical, um Daten zwischen Instances zu synchronisieren.

Im Folgenden finden Sie Informationen zum Einrichten der logischen Replikation RDS für eine SQL Postgre-DB-Instance.

Verständnis der logischen Replikation und logischen Decodierung

RDSfor Postgre SQL unterstützt das Streaming von Write-Ahead-Log (WAL) -Änderungen mithilfe der logischen Replikationssteckplätze von SQL Postgre. 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 SQL logische Postgre-Replikation sind AWS Database Migration Service ein individuell verwalteter Host auf einer EC2 Amazon-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 SQL logische Postgre-Replikation und logische Dekodierung für Amazon RDS mit einem Parameter, einem Replikationsverbindungstyp und einer Sicherheitsrolle. Der Client für die logische Dekodierung kann jeder Client sein, der eine Replikationsverbindung zu einer Datenbank auf einer SQL Postgre-DB-Instance herstellen kann.

Um die logische Dekodierung für eine Postgre-DB-Instance RDS zu aktivieren SQL
  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 Parameteränderungen können die WAL Generierung erhöhen. Legen Sie den rds.logical_replication Parameter daher nur fest, wenn Sie logische Steckplätze 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 SQL unterstützt RDS for Postgre die im Lieferumfang von Postgre enthaltenen Ausgabe-Plugins test_decoding und wal2json. SQL

Weitere Informationen zur logischen Postgre-Dekodierung finden Sie in der Postgre-Dokumentation. SQL SQL

Arbeiten mit logischen Replikations-Slots

Sie können SQL Befehle verwenden, um mit logischen Steckplätzen zu arbeiten. Mit dem folgenden Befehl wird beispielsweise ein logischer Slot erstellt, der test_slot mithilfe des SQL Standard-Postgre-Ausgabe-Plug-ins test_decoding benannt wird.

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 für die Arbeit mit logischen Replikationssteckplätzen finden Sie in der SQL Postgre-Dokumentation unter Beispiele für logische Dekodierung.

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. In diesem Beispiel wird das Programm pg_recvlogical verwendet, das in der Postgre-Distribution enthalten ist. SQL 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)