Hinweis:
- Dieses Tutorial erfordert Zugriff auf Oracle Cloud. Informationen zur Registrierung für einen kostenlosen Account finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. In der Übung ersetzen Sie diese Werte durch die Werte, die für Ihre Cloud-Umgebung spezifisch sind.
Regionsübergreifende Synchronisierung von OCI Database with PostgreSQL mit der pglogischen Erweiterung
Einführung
Die pglogische Erweiterung ermöglicht die logische Replikation über mehrere Oracle Cloud Infrastructure-(OCI-)Datenbanken mit PostgreSQL-Instanzen. Es unterstützt die versionsübergreifende PostgreSQL-Replikation und erleichtert die Datensynchronisierung zwischen Datenbanken, die in regionalen und lokalen Availability-Domains in OCI bereitgestellt werden. Darüber hinaus ermöglicht es die Replikation zwischen Datenbanken, die auf dem verwalteten PostgreSQL-Service des Multi-Cloud-Providers gehostet werden, und selbstverwalteten PostgreSQL-Communityinstanzen, unabhängig davon, ob sie in der Cloud oder On-Premises ausgeführt werden, und bietet eine äußerst flexible und interoperable Replikationslösung.
Mit einem Publish/Subscribe-Modell ermöglicht pglogical die logische Streaming-Replikation, Änderungen an Tabellen, Sequences und anderen Objekten von einem Publisher an einen Subscriber zu replizieren. Diese Erweiterung ist ideal für eine Vielzahl von Anwendungsfällen, darunter:
-
Vollständige Datenbankreplikation.
-
Major-Version-Upgrades (mit bestimmten Einschränkungen).
-
Replikation von Schema-, Data Definition Language-(DDL-) und Tabellendaten.
-
Change Data Capture (CDC).
-
Datenaggregation und Zusammenführung von mehreren Upstream-Servern.
Einschränkungen
Die pglogische Erweiterung kann für bestimmte Anwendungsfälle aufgrund folgender Einschränkungen nicht geeignet sein:
-
Das gleichzeitige Replizieren mehrerer Datenbanken wird nicht unterstützt.
-
Die Tabellen
UNLOGGED
undTEMPORARY
können nicht repliziert werden. -
Migration von Datenbankmetadaten wird nicht unterstützt.
-
Automatische DDL-Replikation ist nicht verfügbar.
-
Replikation zwischen Datenbanken mit unterschiedlicher Codierung wird nicht unterstützt.
-
Large Object-(LOB-)Änderungen können nicht dekodiert werden, wodurch ihre Replikation verhindert wird. Verwenden Sie nach Möglichkeit den Datentyp bytea, um große Binärdaten anstelle von LOBs zu speichern.
Weitere Informationen finden Sie unter Einschränkungen und Einschränkungen.
Ziele
- Implementieren Sie die pglogische Erweiterung regionsübergreifend zwischen zwei OCI-Regionen, um insbesondere die Replikation zwischen Ashburn und Mumbai zu demonstrieren. Dieses Setup kann auch für die regionsinterne Replikation innerhalb einer einzelnen OCI-Region angepasst werden.
Voraussetzungen
-
Zugriff auf einen OCI-Mandanten.
-
Ein OCI-Bastionhost (OCI-Compute-Image).
-
Erstellen Sie ein virtuelles Cloud-Netzwerk (VCN) in jeder Region.
-
Die pglogische Erweiterung muss sowohl in der Quell- als auch in der Zieldatenbank installiert sein.
-
Konsistenz der Tabellenstruktur: Tabellen im Provider und Subscriber müssen dieselben Namen haben, sich im selben Schema befinden und identische Spalten mit übereinstimmenden Datentypen aufweisen.
-
Constraints-Kompatibilität: Die Constraints
CHECK
undNOT NULL
müssen für den Abonnenten identisch oder zulässiger als für den Provider sein. -
Primärschlüsselanforderung: Tabellen müssen identisch sein
PRIMARY KEYs
. Das Hinzufügen zusätzlicherUNIQUE
-Constraints über den Primärschlüssel hinaus wird nicht empfohlen.
Aufgabe 1: Kommunikation zwischen Datenbanken einrichten
Um regionsübergreifend eine Verbindung zum DB-System herzustellen, muss VCN-Peering eingerichtet werden.
Um VCN-Peering mit dem dynamischen Routinggateway (DRG) zu erstellen, befolgen Sie die folgenden Unteraufgaben:
Aufgabe 1.1: DRG an VCNs anhängen
-
Erstellen Sie das VCN entsprechend Ihren Anforderungen in der Quell- und Zielregion.
-
Erstellen Sie dynamische Routinggateways (DRG) in Quell- und Zielregionen nach Ihren Anforderungen.
-
Um ein DRG an das VCN anzuhängen, wählen Sie das DRG in der Quellregion aus. Klicken Sie auf VCN-Anhänge und Anhang für virtuelles Cloud-Netzwerk erstellen.
-
Geben Sie auf der Seite VCN-Anhang erstellen den Anhangnamen ein, und wählen Sie VCN-A (VCN der Quellregion) aus. Klicken Sie dann auf VCN-Anhang erstellen.
-
Wiederholen Sie dieselben Schritte, um das Ziel-VCN anzuhängen.
Weitere Informationen finden Sie unter Dynamische Routinggateways.
Aufgabe 1.2: Remote-Peering-Verbindung (RPC) erstellen
-
Erstellen Sie die RPC der Quellregion (
SOR-RPC
). -
Gehen Sie zur Detailseite
SOURCE DRG
, und klicken Sie auf Remote-Peering-Verbindungsanhänge. -
Klicken Sie auf Remote-Peering-Verbindungen erstellen.
-
Geben Sie auf der Seite Remote-Peering-Verbindung erstellen den Verbindungsnamen ein, und wählen Sie das Compartment aus. Klicken Sie dann auf Remote-Peering-Verbindung erstellen.
-
Um RPC der Zielregion (
TAR-RPC
) zu erstellen, wiederholen Sie dasselbe Verfahren wie oben, um die RPC der Zielregion zu erstellen.
Aufgabe 1.3: RPC-Verbindung herstellen
Stellen Sie die Verbindung von der Quellregion zur Zielregion über die Verbindung SOR-RPC
her.
-
Gehen Sie zur Detailseite
SOURCE DRG
, und klicken Sie auf Remote-Peering-Verbindungsanhänge. -
Zeigen Sie die Details von
SOR-RPC
an, indem Sie in der Spalte Remote-Peering-Verbindung auf den Namen der Verbindung klicken. -
Klicken Sie auf der Seite mit den Verbindungsdetails auf Verbindung herstellen, geben Sie den Verbindungsnamen ein, und wählen Sie das Compartment aus.
-
Wählen Sie auf der Seite Verbindung herstellen die Region Ihr Zielregionsname aus, und geben Sie die OCID der Ziel-RPC ein (
TAR-RPC
). Die Verbindung wird hergestellt, und der RPC-Status wechselt zu PEERED.Daher ändert sich der
TAR-RPC
-Peering-Status auch in PEERED.
Aufgabe 1.4: Routentabelle in VCNs so konfigurieren, dass Traffic, der zum DRG-Anhang bestimmt ist, gesendet wird
-
Konfigurieren Sie die Routentabelle in
Source-VCN
, um Traffic an das private Subnetz-CIDRTarget-VCN
zu senden. -
Gehen Sie zur Detailseite
Source-VCN
, und klicken Sie auf Routentabellen. -
Klicken Sie unter der Liste der Routentabellen auf Routentabelle für privates Subnetz-Quell-VCN.
-
Klicken Sie auf der Seite "Routentabelle" auf Routingregeln hinzufügen, und geben Sie die Routenregelinformationen entsprechend Ihren Anforderungen ein.
-
Um die Routentabelle in
Target-VCN
so zu konfigurieren, dass Traffic an das private Subnetz-CIDR des Quell-VCN gesendet wird, wiederholen Sie die oben beschriebenen Schritte, um die Routentabelle für das private Subnetz des Quell-VCN zu konfigurieren.
Aufgabe 1.5: Sicherheits-Ingress-Regel hinzufügen, um Traffic zwischen privaten Subnetzen von VCNs über das DRG zuzulassen
-
Fügen Sie der Sicherheitsliste für das private Subnetz-Source-VCN des Quell-VCN eine Ingress-Regel hinzu, damit Traffic vom Subnetz
Target-VCN-private
zum SubnetzSource-VCN-private
gesendet werden kann -
Gehen Sie zur Detailseite
Source-VCN
, und klicken Sie auf Sicherheitsliste und Sicherheitsliste für privates Subnetz-Source-VCN. -
Klicken Sie auf der Seite Sicherheitsliste auf Ingress-Regeln hinzufügen, und geben Sie Informationen zu Ingress-Regeln gemäß Ihrer Anforderung ein.
-
Um eine Ingress-Regel zur Sicherheitsliste für das private Subnetz-Ziel-VCN von
Target-VCN
hinzuzufügen, damit Traffic vom SubnetzSource-VCN-private
zum SubnetzTarget-VCN-private
kommt, wiederholen Sie dieselben Schritte, die oben ausgeführt wurden, um die Ingress-Regel für das Ziel-VCN hinzuzufügen, verwenden jedoch die entsprechende Ingress-Regel.
Aufgabe 1.6: Regionsübergreifendes Testen und Validieren der Datenbankkonnektivität
Stellen Sie eine Verbindung zu Source-VM
her, um die Konnektivität zur Zieldatenbank zu prüfen, und validieren Sie gleichzeitig die Konnektivität der Quelldatenbank von der Ziel-VM, um die bidirektionale Kommunikation sicherzustellen.
Aufgabe 2: A-Datensatz-Eintrag konfigurieren
Ein A-Datensatz-Eintrag muss konfiguriert werden, um den vollqualifizierten Domänennamen (FQDN) des Datenbanksystems regionsübergreifend aufzulösen. In diesem Tutorial dient die Region Mumbai als Zielregion.
-
Wechseln Sie zur Zielregion (Mumbai), geben Sie DNS in die Suchleiste ein, und wählen Sie Private Ansichten aus.
-
Die VCN-Liste für die aktuelle Region wird angezeigt. Wählen Sie das VCN aus, in dem das DRG bereits konfiguriert ist.
-
Die Liste der DNS-Zonen wird angezeigt, einschließlich des FQDN des Datenbanksystems in Mumbai.
-
Fügen Sie einen Eintrag für das Remote-Datenbanksystem hinzu.
-
Klicken Sie auf Zone erstellen.
-
Geben Sie unter Zonenname den FQDN des Datenbanksystems in der anderen Region (Ashburn) ein.
-
Klicken Sie auf Erstellen, um den neuen Zoneneintrag hinzuzufügen.
-
-
A-Record-Eintrag konfigurieren.
-
Öffnen Sie die neu erstellte Zone, klicken Sie auf Datensätze verwalten, und wählen Sie Datensatz hinzufügen aus.
-
Geben Sie folgende Informationen ein.
-
Name: Geben Sie einen Namen ein.
-
Typ: Wählen Sie A (IPv4 Address) aus.
-
TTL: Geben Sie 3600 Sekunden ein (ändern Sie diese entsprechend Ihrer Anwendungsanforderung).
-
RDATA-Modus: Wählen Sie Basis aus.
-
Adresse: Geben Sie die IP-Adresse des primären Endpunkts des Datenbanksystems in der anderen Region ein.
-
-
-
Klicken Sie auf Änderungen speichern, Änderungen veröffentlichen, um die Konfiguration anzuwenden.
Mit diesem Setup kann Datenbanksystem B (Mumbai) jetzt über den FQDN eine Verbindung zu Datenbanksystem A (Ashburn) herstellen und so eine nahtlose regionsübergreifende Datenbankkommunikation ermöglichen.
Aufgabe 3: Datenbanksysteme in der gesamten Region erstellen
Stellen Sie eine PostgreSQL-Datenbank regionsübergreifend in OCI bereit, um eine robuste Disaster-Recovery-(DR-)Strategie festzulegen. Weitere Informationen zum Erstellen einer PostgreSQL-Datenbank in OCI finden Sie unter Datenbanksystem erstellen.
Aufgabe 4: Pglogische Erweiterung in der gesamten Region aktivieren
In diesem Tutorial wird die Implementierung von DR gezeigt, indem Ashburn als Quellregion und Mumbai als Zielregion angegeben wird.
-
Melden Sie sich in der Region Ashburn bei der OCI-Konsole an, navigieren Sie zur Datenbank PostgreSQL, wählen Sie Ihr Datenbanksystem aus, und ändern Sie die Konfigurationseinstellungen, indem Sie auf die Konfigurationsdatei zugreifen.
-
Sie werden zur vollständigen Konfigurationsdatei umgeleitet. Wählen Sie Konfiguration kopieren aus, um fortzufahren. Die folgende Seite wird angezeigt.
-
Geben Sie die erforderlichen Informationen basierend auf Ihren Spezifikationen ein. Navigieren Sie dann zu Benutzervariablen (Lesen/Schreiben), klicken Sie auf Weitere Variable hinzufügen, und wählen Sie Variablenname als
wal_level
undtrack_commit_timestamp
bzw. Variablenwert alslogical
bzw.1
aus. -
Wählen Sie unter Erweiterungen konfigurieren die Option
pglogical
als PostgreSQL-Erweiterungen aus. -
Klicken Sie auf Erstellen, um die Konfigurationsdatei zu generieren.
-
Navigieren Sie zu Ihrem Datenbanksystem, wählen Sie unter Konfiguration die Option Bearbeiten aus, und wenden Sie die zuvor erstellte Konfiguration auf Ihr Datenbanksystem an.
-
Das Datenbanksystem zeigt den Status Wird aktualisiert an. Warten Sie, bis er aktiv wird, bevor Sie fortfahren.
-
Melden Sie sich nach der Aktivierung bei Ihrem Datenbanksystem an, und prüfen Sie die aktivierten Erweiterungen mithilfe der folgenden Abfrage.
SHOW oci.admin_enabled_extensions;
-
Erstellen Sie die pglogische Erweiterung mit dem folgenden Befehl.
CREATE EXTENSION pglogical;
Im Folgenden finden Sie eine Beispielausgabe der Befehle.
pglogical_source=> show oci.admin_enabled_extensions ; oci.admin_enabled_extensions ------------------------------ pglogical (1 row) pglogical_source=> create extension pglogical; CREATE EXTENSION
-
Wiederholen Sie dasselbe Verfahren in der anderen Datenbank (Mumbai), um die pglogische Erweiterung zu aktivieren.
Aufgabe 5: Quelldatenbank konfigurieren
Führen Sie die folgende Abfrage aus, um Berechtigungen für die Quelldatenbank zu erteilen und die logische Replikation zu aktivieren.
alter role psql with replication;
grant EXECUTE on FUNCTION pg_catalog.pg_replication_origin_session_reset() to psql ;
grant EXECUTE on FUNCTION pg_catalog.pg_replication_origin_session_setup to psql ;
grant all on FUNCTION pg_catalog.pg_replication_origin_session_setup to psql;
Beachten Sie, dass "psql" der Beispielbenutzer ist, der während des Datenbanksetupprozesses erstellt wurde.
Aufgabe 6: Pglogische Erweiterungsreplikation in der Quelldatenbank einrichten
-
Erstellen Sie den Herausgeberknoten in der Quelldatenbank.
SELECT pglogical.create_node(node_name := 'provider1',dsn :='host=primary.xxxxxxxxx.postgresql.us-ashburn-1.oci.oraclecloud.com port=5432 user=xxxx password=xxxxx dbname=pglogical_source');
node_name:
Geben Sie den Namen des Herausgebers an, der in der Quelldatenbank erstellt werden soll.host:
Geben Sie den vollqualifizierten Domainnamen (FQDN) der Quelldatenbank ein.port_number:
Geben Sie den Port an, auf dem die Quelldatenbank ausgeführt wird.database_name:
Geben Sie die Datenbank an, in der die Publikation erstellt wird.
-
Nehmen Sie alle Tabellen im öffentlichen Schema in das Standardreplikationsset auf.
SELECT pglogical.replication_set_add_all_tables('default', ARRAY['public']);
Aufgabe 7: Zieldatenbank konfigurieren
Führen Sie die folgende Abfrage aus, um Berechtigungen für die Zieldatenbank zu erteilen und die logische Replikation zu aktivieren.
alter role psql with replication;
grant EXECUTE on FUNCTION pg_catalog.pg_replication_origin_session_reset() to psql ;
grant EXECUTE on FUNCTION pg_catalog.pg_replication_origin_session_setup to psql ;
grant all on FUNCTION pg_catalog.pg_replication_origin_session_setup to psql;
Beachten Sie, dass "psql" der Beispielbenutzer ist, der während des Datenbanksetupprozesses erstellt wurde.
Nachdem Sie die erforderlichen Berechtigungen erteilt haben, replizieren Sie alle erforderlichen Objekte in der Zieldatenbank entsprechend der Quelldatenbankstruktur.
Aufgabe 8: Pglogische Replikation in der Zieldatenbank einrichten
-
Erstellen Sie den Abonnentenknoten in der Zieldatenbank.
SELECT pglogical.create_node(node_name := 'subscriber1',dsn :='host=primary.xxxxxxx.postgresql.ap-mumbai-1.oci.oraclecloud.com port=5432 user=xxxx password=xxxxx dbname=pglogical_target');
node_name:
Definieren Sie den Namen des Abonnenten in der Zieldatenbank.host:
Geben Sie den vollqualifizierten Domainnamen (FQDN) der Zieldatenbank ein.port_number:
Geben Sie den Port ein, auf dem die Zieldatenbank ausgeführt wird.database_name:
Geben Sie den Datenbanknamen an, in der das Abonnement erstellt wird.
-
Erstellen Sie das Abonnement auf dem Subscriber-Knoten, wodurch die Synchronisierungs- und Replikationsprozesse im Hintergrund gestartet werden.
SELECT pglogical.create_subscription(subscription_name := 'subscription1',provider_dsn := 'host=primary.xxxxxxxx.postgresql.us-ashburn-1.oci.oraclecloud.com port=5432 user=xxxx password=xxxxxx dbname=pglogical_source sslmode=verify-full sslrootcert=/etc/opt/postgresql/ca-bundle.pem'); SELECT pglogical.wait_for_subscription_sync_complete('subscription1');
subscription_name:
Geben Sie den Namen des Abonnements an.host:
Geben Sie den FQDN der Quelldatenbank an.port_number:
Geben Sie den Port an, auf dem die Zieldatenbank ausgeführt wird.database_name:
Geben Sie den Namen der Quelldatenbank an.
Hinweis: Stellen Sie sicher, dass Sie
sslmode=verify-full
undsslrootcert = /etc/opt/postgresql/ca-bundle.pem
in der Zeichenfolge für die Abonnementerstellung verwenden, um Verbindungsfehler zu vermeiden.
Aufgabe 9: Abonnementstatus prüfen
Führen Sie die folgende Anweisung aus, um den Status Ihres Abonnements in der Zieldatenbank zu prüfen.
select * from pglogical.show_subscription_status();
Aufgabe 10: Prüfen, ob die Datenreplikation ausgeführt wird
Führen Sie die folgende Anweisung aus, um den Status der Replikation in der Quelldatenbank zu prüfen.
SELECT * FROM pg_stat_replication;
Aufgabe 11: (Optional) Stoppen oder starten Sie die Replikation
-
Sie können das Abonnement mit dem folgenden Befehl in der Zieldatenbank deaktivieren.
select pglogical.alter_subscription_disable('subscription_name');
-
Sie können das Abonnement mit dem folgenden Befehl in der Zieldatenbank aktivieren.
select pglogical.alter_subscription_enable('subscription_name');
Hinweis: Geben Sie unter
subscription_name
den Namen des Abonnements ein, das auf dem Ziel erstellt wurde.
Aufgabe 12: (Optional) Abonnement löschen
Um das Abonnement in der Zieldatenbank zu löschen, führen Sie den folgenden Befehl aus.
select pglogical.drop_subscription('subscription_name');
Hinweis: Geben Sie unter
subscription_name
den Namen des Abonnements ein, das auf dem Ziel erstellt wurde.
Problembehandlung
-
Wenn der folgende Fehler auftritt, gibt er an, dass A-Datensätze im Ziel-VCN hinzugefügt werden müssen. Weitere Informationen finden Sie in Aufgabe 2.
ERROR: could not connect to the postgresql server: could not translate host name "primary.XXXXXXX.postgresql.xx-xxxxx-1.oci.oraclecloud.com" to address: Name or service not known
-
Um einen Zertifizierungsfehler zu vermeiden, geben Sie
sslmode=verify-full and sslrootcert=/etc/opt/postgresql/ca-bundle.pem
in der Zeichenfolge an, während Sie Abonnements erstellen.could not connect to the postgresql server: connection to server at "primary.XXXXXXX.postgresql.xx-xxxxx-1.oci.oraclecloud.com" , port 5432 failed: SSL error: certificate verify failed
Nächste Schritte
Dieses Tutorial bietet einen umfassenden Ansatz bei der Implementierung einer DR-Lösung über Regionen hinweg in OCI Database with PostgreSQL mit der pglogischen Erweiterung. Es behandelt den Konfigurationsprozess, die Datenreplikation und die Behebung allgemeiner Probleme.
Darüber hinaus kann diese Methode auf PostgreSQL-Upgrades angewendet werden, um minimale Ausfallzeiten zu gewährleisten und einen reibungslosen Anwendungs-Cutover zu ermöglichen, sobald die Zieldatenbank vollständig mit der Quelle synchronisiert ist.
Bestätigungen
- Autor - Kaviya Selvaraj (Senior Member Technical Staff)
Weitere Lernressourcen
Sehen Sie sich weitere Übungen zu docs.oracle.com/learn an, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube-Kanal zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um ein Oracle Learning Explorer zu werden.
Die Produktdokumentation finden Sie im Oracle Help Center.
Cross-Region Synchronization of OCI Database with PostgreSQL using the pglogical Extension
G31228-03
Copyright ©2025, Oracle and/or its affiliates.