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
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.
Themen
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
-
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
-
-
Setzen Sie den statischen Parameter
rds.logical_replication
auf 1. Setzen Sie bei der Anwendung dieses Parameters auch die Parameterwal_level
,max_wal_senders
,max_replication_slots
undmax_connections
fest. Diese Parameteränderungen können die WAL Generierung erhöhen. Legen Sie denrds.logical_replication
Parameter daher nur fest, wenn Sie logische Steckplätze verwenden. -
Starten Sie die DB-Instance neu, damit der statische Parameter
rds.logical_replication
in Kraft tritt. -
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
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)