

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.

# Logische Replikation
<a name="logical-replication-considerations"></a>

Die logische Replikation ist eine Methode zur Replikation von Datenobjekten und ihren Änderungen auf der Grundlage der Replikationsidentität der Objekte und ihrer Änderungen. Bei der logischen Replikation wird ein *Veröffentlichungs* - und *Abonnementmodell* verwendet, bei dem ein oder mehrere Abonnenten eine oder mehrere Veröffentlichungen auf einem Herausgeberknoten abonnieren. Abonnenten rufen Daten aus den Publikationen ab, die sie abonnieren.

Mit der logischen Replikation haben Sie eine genaue Kontrolle sowohl über die Datenreplikation als auch über die Sicherheit. Sie können die logische Replikation in den folgenden Anwendungsfällen verwenden:
+ Replikation zwischen verschiedenen Hauptversionen von PostgreSQL
+ Replikation zwischen PostgreSQL-Instanzen auf verschiedenen Plattformen (z. B. Linux auf Windows)

## Architektur
<a name="architecture-logical-replication"></a>

Die folgenden Workflow-Schritte zeigen, wie eine logische Replikationsarchitektur funktioniert:

1. Sie erstellen einen Snapshot der Daten in der Herausgeberdatenbank und kopieren diese Daten in die Abonnentendatenbank.

1. Die Änderungen in den Herausgeberdatenbanken werden in Echtzeit an den Abonnenten gesendet.

1. Der Abonnent wendet die Daten in derselben Reihenfolge an wie der Herausgeber, sodass die Transaktionskonsistenz für Veröffentlichungen innerhalb eines einzigen Abonnements gewährleistet ist.

Eine *Publikation* kann auf einer primären Instanz (Herausgeber) definiert werden. Eine Publikation besteht aus einer Reihe von Änderungen, die anhand einer Tabelle oder einer Gruppe von Tabellen generiert wurden. Sie können Änderungen aus einer Kombination von INSERT-, UPDATE-, DELETE- und TRUNCATE-Vorgängen auswählen. Standardmäßig werden all diese Änderungen in die Abonnentendatenbank repliziert. Dies steht im Gegensatz zur physischen Replikation, bei der exakte Blockadressen für eine Byte-für-Byte-Replikation verwendet werden.

In einer veröffentlichten Tabelle muss [REPLICA IDENTITY](https://www.postgresql.org/docs/current/sql-altertable.html#SQL-ALTERTABLE-REPLICA-IDENTITY) so konfiguriert sein, dass die UPDATE- und DELETE-Operationen repliziert werden, sodass die zu aktualisierenden oder zu löschenden Zeilen auf Abonnentenseite identifiziert werden können. In den meisten Fällen wird die Replikatidentität entweder durch einen Primärschlüssel oder einen eindeutigen Schlüssel bestimmt. Wenn kein Primärschlüssel vorhanden ist und Sie keinen erstellen können, können Sie die Replikatidentität auf festlegen. `full` Das bedeutet, dass die gesamte Zeile zum Schlüssel wird. Es wird empfohlen, die Replikatidentität `full` als letzten Ausweg auf festzulegen, da diese Einstellung ineffizient ist.

Ein *Abonnement* ist die nachgelagerte Seite der logischen Replikation. Der Knoten, auf dem ein Abonnement definiert ist, wird als *Abonnent* bezeichnet. Ein Abonnement definiert die Verbindung zu einer anderen Datenbank und einer Gruppe von Veröffentlichungen (eine oder mehrere), die es abonnieren möchte.

## Konfigurationseinstellungen
<a name="config-settings"></a>

Die folgenden Konfigurationen sind für Herausgebereinstellungen erforderlich:
+ Stellen Sie `wal_level` auf ein`logical`.
+ Legt fest`max_replication_slots`, dass mindestens die Anzahl der Abonnements, von denen erwartet wird, dass sie eine Verbindung herstellen, und einige reservierte Steckplätze für die Tabellensynchronisierung aufnehmen.
+ Legen `max_wal_senders` Sie fest, `max_replication_slots` ob und wie viele physische Replikate vorhanden sind.

Die folgenden Konfigurationen sind für Abonnenteneinstellungen erforderlich:
+ Legen `max_replication_slots` Sie fest, dass die geringste Anzahl von Abonnements berücksichtigt wird, die Sie dem Abonnenten hinzufügen möchten, und einige Reserveabonnements für die Tabellensynchronisierung.
+ Legen `max_logical_replication_workers` Sie fest, dass mindestens die Anzahl der Abonnements und einige Reserve-Worker für die Tabellensynchronisierung berücksichtigt werden.
+ `max_worker_processes`Mindestens auf (`max_logical_replication_workers`\+`1`) gesetzt.

Jedes Abonnement empfängt Änderungen über einen Replikationssteckplatz.

Die folgenden Schritte zeigen, wie eine logische Replikation durchgeführt wird:

1. Erstellen Sie einen Herausgeber, indem [Sie den Befehl CREATE PUBLICATION](https://www.postgresql.org/docs/10/sql-createpublication.html) für eine Gruppe von Tabellen (die Teil der Replikation sein werden) in der Quelldatenbank verwenden.

1. Erstellen Sie einen Abonnenten mit dem Befehl [CREATE SUBSCRIPTION](https://www.postgresql.org/docs/10/sql-createsubscription.html) und geben Sie dann die Veröffentlichungsdetails an, wenn Sie den Abonnenten erstellen.

1. Das anfängliche Laden der Daten beginnt automatisch von der Quelldatenbank zur Zieldatenbank.

1. Die von den Replikationssteckplätzen erfassten Änderungsdaten werden in die Zieldatenbank repliziert.

1. Verwenden Sie [pg\_stat\_replication](https://www.postgresql.org/docs/current/monitoring-stats.html#MONITORING-PG-STAT-REPLICATION-VIEW) (eine Katalogtabelle), um den Status der Replikation zu überprüfen. Verwenden Sie [pg\_stat\_replication\_slots](https://www.postgresql.org/docs/current/monitoring-stats.html#MONITORING-PG-STAT-REPLICATION-SLOTS-VIEW), um den Replikationsslot zu überprüfen.

Weitere Informationen finden Sie im Beitrag [Verwenden von logischer Replikation zur Replikation von verwaltetem Amazon RDS for PostgreSQL und Amazon Aurora to Self-managed PostgreSQL](https://aws.amazon.com/blogs/database/using-logical-replication-to-replicate-managed-amazon-rds-for-postgresql-and-amazon-aurora-to-self-managed-postgresql/) im AWS-Datenbank-Blog.

## Einschränkungen
<a name="limitations-logical-replication"></a>

Wir empfehlen Ihnen, die folgenden Einschränkungen der logischen Replikationsmethode zu berücksichtigen, bevor Sie mit der Migration beginnen:
+ Die logische Replikation weist derzeit die meisten Einschränkungen und Funktionslücken auf.
+ Bei der logischen Replikation können Operationen mit Data Definition Language (DDL), Sequenz und große Objekte nicht repliziert werden. Eine Aktion zum Kürzen (die für eine Tabelle mit einem Fremdschlüssel gilt) muss verknüpfte Tabellen in demselben Abonnement enthalten.

Weitere Informationen zu den Einschränkungen der logischen Replikation finden Sie unter [31.6. Einschränkungen](https://www.postgresql.org/docs/current/logical-replication-restrictions.html) in der PostgreSQL-Dokumentation.