Hinweis:

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:

Einschränkungen

Die pglogische Erweiterung kann für bestimmte Anwendungsfälle aufgrund folgender Einschränkungen nicht geeignet sein:

Weitere Informationen finden Sie unter Einschränkungen und Einschränkungen.

Ziele

Voraussetzungen

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

  1. Erstellen Sie das VCN entsprechend Ihren Anforderungen in der Quell- und Zielregion.

  2. Erstellen Sie dynamische Routinggateways (DRG) in Quell- und Zielregionen nach Ihren Anforderungen.

  3. 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.

  4. 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.

  5. 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

  1. Erstellen Sie die RPC der Quellregion (SOR-RPC).

  2. Gehen Sie zur Detailseite SOURCE DRG, und klicken Sie auf Remote-Peering-Verbindungsanhänge.

  3. Klicken Sie auf Remote-Peering-Verbindungen erstellen.

  4. 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.

  5. 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.

  1. Gehen Sie zur Detailseite SOURCE DRG, und klicken Sie auf Remote-Peering-Verbindungsanhänge.

  2. Zeigen Sie die Details von SOR-RPC an, indem Sie in der Spalte Remote-Peering-Verbindung auf den Namen der Verbindung klicken.

  3. Klicken Sie auf der Seite mit den Verbindungsdetails auf Verbindung herstellen, geben Sie den Verbindungsnamen ein, und wählen Sie das Compartment aus.

  4. 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

  1. Konfigurieren Sie die Routentabelle in Source-VCN, um Traffic an das private Subnetz-CIDR Target-VCN zu senden.

  2. Gehen Sie zur Detailseite Source-VCN, und klicken Sie auf Routentabellen.

  3. Klicken Sie unter der Liste der Routentabellen auf Routentabelle für privates Subnetz-Quell-VCN.

  4. Klicken Sie auf der Seite "Routentabelle" auf Routingregeln hinzufügen, und geben Sie die Routenregelinformationen entsprechend Ihren Anforderungen ein.

  5. 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

  1. 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 Subnetz Source-VCN-private gesendet werden kann

  2. Gehen Sie zur Detailseite Source-VCN, und klicken Sie auf Sicherheitsliste und Sicherheitsliste für privates Subnetz-Source-VCN.

  3. Klicken Sie auf der Seite Sicherheitsliste auf Ingress-Regeln hinzufügen, und geben Sie Informationen zu Ingress-Regeln gemäß Ihrer Anforderung ein.

  4. Um eine Ingress-Regel zur Sicherheitsliste für das private Subnetz-Ziel-VCN von Target-VCN hinzuzufügen, damit Traffic vom Subnetz Source-VCN-private zum Subnetz Target-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.

  1. Wechseln Sie zur Zielregion (Mumbai), geben Sie DNS in die Suchleiste ein, und wählen Sie Private Ansichten aus.

  2. Die VCN-Liste für die aktuelle Region wird angezeigt. Wählen Sie das VCN aus, in dem das DRG bereits konfiguriert ist.

  3. Die Liste der DNS-Zonen wird angezeigt, einschließlich des FQDN des Datenbanksystems in Mumbai.

  4. Fügen Sie einen Eintrag für das Remote-Datenbanksystem hinzu.

    1. Klicken Sie auf Zone erstellen.

      image

    2. Geben Sie unter Zonenname den FQDN des Datenbanksystems in der anderen Region (Ashburn) ein.

    3. Klicken Sie auf Erstellen, um den neuen Zoneneintrag hinzuzufügen.

  5. A-Record-Eintrag konfigurieren.

    1. Öffnen Sie die neu erstellte Zone, klicken Sie auf Datensätze verwalten, und wählen Sie Datensatz hinzufügen aus.

    2. 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.

  6. 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.

  1. 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.

    image

  2. Sie werden zur vollständigen Konfigurationsdatei umgeleitet. Wählen Sie Konfiguration kopieren aus, um fortzufahren. Die folgende Seite wird angezeigt.

    image

  3. 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 und track_commit_timestamp bzw. Variablenwert als logical bzw. 1 aus.

  4. Wählen Sie unter Erweiterungen konfigurieren die Option pglogical als PostgreSQL-Erweiterungen aus.

  5. Klicken Sie auf Erstellen, um die Konfigurationsdatei zu generieren.

    image

  6. 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.

  7. Das Datenbanksystem zeigt den Status Wird aktualisiert an. Warten Sie, bis er aktiv wird, bevor Sie fortfahren.

  8. 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;
    
  9. 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
    
  10. 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

  1. 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.
  2. 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

  1. 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.
  2. 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 und sslrootcert = /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

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

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

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.