Präzise Instanziierung zwischen PostgreSQL-Umgebungen mit dem Utility pg_dump

Wenn Sie Oracle GoldenGate für die Replikation zwischen zwei oder mehr PostgreSQL-kompatiblen Datenbanken verwenden, können Sie das Backuputility pg_dump (pg_dumpall)/pg_restore verwenden, das in PostgreSQL enthalten ist. Dadurch wird ein Backup oder Snapshot der Quelldatenbank erstellt, das auf dem Zielsystem wiederhergestellt wird.

Siehe pg_dump (pg_dumpall) und pg_restore in der PostgreSQL-Dokumentation.

In den folgenden Schritten wird beschrieben, wie Sie dieses Backup in Verbindung mit Oracle GoldenGate verwenden, um eine genaue anfängliche Instanziierung sicherzustellen, bei der die Quelle nicht offline gesetzt werden muss, oder die Verwendung von HANDLECOLLISIONS.

In diesen Schritten wird der Admin-Client verwendet. Sie können jedoch dieselben Schritte über die Oracle GoldenGate-Microservices-Weboberfläche und die Rest-API-Serviceendpunkte ausführen.

Bevor Sie mit diesen Schritten beginnen, stellen Sie sicher, dass Sie die Vorbereitung von PostgreSQL für Oracle GoldenGate abgeschlossen haben. Weitere Informationen finden Sie im Abschnitt PostgreSQL vorbereiten.

  1. Stellen Sie über den Admin-Client eine Verbindung zum Deployment her:

    CONNECT https://source:srvmgrport DEPLOYMENT *deployment_name* AS *deployment_user* PASSWORD *deployment_password*
  2. Stellen Sie mit dem Befehl DBLOGIN eine Verbindung zur Quelldatenbank PostgreSQL her. Wenn Sie keine Datenbankverbindung zur Quelldatenbank eingerichtet haben, können Sie das Setup mit den Schritten unter Datenbankverbindungen hinzufügen oder mit dem Befehl ALTER CREDENTIALSTORE aus dem Admin-Client vornehmen.

    DBLOGIN USERIDALIAS *alias*

    Beispiel: Wenn der Alias ggeast ist, lautet der Befehl:

    DBLOGIN USERIDALIAS ggeast
  3. Fügen Sie der Quelldatenbank eine Checkepoint-Tabelle hinzu.

    ADD CHECKPOINTTABLE *owner.table_name*

    Beispiel:

    ADD CHECKPOINTTABLE ggs.checkpoint
  4. Erstellen Sie die Extract-Parameterdatei, um die Tabellen zu erfassen, die Sie replizieren möchten, und registrieren Sie einen neuen Extract mit der Quelldatenbank PostgreSQL mit dem Befehl REGISTER EXTRACT, fügen Sie den Extract jedoch nicht hinzu.

    REGISTER EXTRACT *extract_name*

    Beispiel:

    REGISTER EXTRACT extcdc
  5. Erstellen Sie einen temporären Replikations-Slot, der verwendet wird, um einen Ausgangspunkt für den Extract-Prozess und die Positionierung des Snapshots PostgreSQL zu erstellen. Dies kann mit dem Befehl CREATE_REPLICATION_SLOT erfolgen. So konfigurieren Sie den temporären Replikations-Slot:

    1. Melden Sie sich bei der Datenbank PostgreSQL an, indem Sie psql als Benutzer mit der Rolle Replikation verwenden.

    2. Verwenden Sie die Option replication=database. Dies ist derselbe Benutzer, den Sie in Schritt 2 erstellt haben.

      Beispiel:

      $ psql "dbname=pgsource replication=database user=ggeast"
      Password for user ggadmin: psql (16.3)
      
      Type "help" for help.
      pgsource=# CREATE_REPLICATION_SLOT tslot TEMPORARY LOGICAL test_decoding EXPORT_SNAPSHOT;
      
      slot_name | consistent_point | snapshot_name | output_plugin
      
      ----------+------------------+---------------------+---------------
      tslot | 1/4232A6B0 | 00000007-00001142-1 | test_decoding
      (1 row)
    3. Halten Sie die Datei snapshot_name und die Datei consistent_point fest.
  6. Erstellen Sie den Snapshot mit dem pg_dump (oder pg_dumpall für geclusterte Datenbanken), wie im folgenden Beispiel dargestellt:

    Hinweis:

    Dieser Befehl kann einige Zeit in Anspruch nehmen. Es wird empfohlen, diesen Befehl mit einer Option nohup abzusetzen, um zu verhindern, dass der Befehl gestoppt wird, wenn die Session geschlossen wird.

    $ nohup /u01/pgsql-16/bin/pg_dump -h pgsource -p 5432 -U ggeast -snapshot=00000007-00001142-1 -F c -b -v -f latestdump.db pgsource &

    Die pg_dump/pg_dumpall verwendet die snapshot_name, die von der Ausgabe in Schritt 5c empfangen wurde. Im angegebenen Beispiel geht die Option pg_dump davon aus, dass die gesamte Datenbank repliziert wird. Wenn Sie jedoch eine Teilmenge der Datenbank replizieren, können Sie nur diese Objekte ausgeben.

  7. Fügen Sie den Extract mit dem Befehl ADD EXTRACT hinzu. Der Extract sollte an der consistent_point positioniert werden, die in Schritt 5c verfolgt wird:

    ADD EXTRACT *extract_name*, TRANLOG, LSN *lsn_value*

    Beispiel:

    ADD EXTRACT *extecdc*, TRANLOG, LSN 1/42332A6B0

    Stellen Sie sicher, dass der Extract bei diesem LSN-Wert keine Daten erfasst, die im Dump enthalten waren.

  8. Fügen Sie den Extract-Trail mit dem Befehl ADD EXTTRAIL hinzu.

    ADD EXTTRAIL *trail_name*, EXTRACT *extract_name*

    Beispiel:

    ADD EXTTRAIL *east/ea*, EXTRACT *extecdc*
  9. Starten Sie den Extract.

    START EXTRACT *extract_name*
  10. (Optional) Wenn Sie einen Verteilungspfad konfigurieren müssen, um die Traildateien an einen anderen Server zu senden, verwenden Sie den Befehl ADD DISTPATH.

    ADD DISTPATH *name* SOURCE *source_uri* TARGET *target_uri*

    Beispiel:

    ADD DISTPATH *dpecdc* SOURCE *trail://localhost:9002/services/v2/sources?trail=ea* TARGET *wss://localhost:9003/services/v2/targets?trail=ea*
  11. Stellen Sie die Datenbank mit dem Befehl pg_restore auf dem Zielserver wieder her. Wenn die Session verloren geht, verläuft die Wiederherstellung wie in der pg_dump nicht erfolgreich. Daher wird empfohlen, die Option nohup zu verwenden. In diesem Beispiel wurden die folgenden Optionen verwendet:

    $ nohup /u01/pgsql-16/bin/pg_restore -h pgtarget -p 6432 -U ggadmin -d pgtarget -v
    latestdump.db &
  12. (Optional) Wenn Sie einen Verteilungspfad zu einem Receiver-Service in einem anderen Deployment erstellt haben, müssen Sie möglicherweise den Admin-Clientbefehl CONNECT verwenden, um eine Verbindung zum Ziel-Deployment herzustellen.

    CONNECT https://*target:srvmgrport* *DEPLOYMENT* *deployment_name* AS *deployment_user* PASSWORD *deployment_password*
  13. Stellen Sie mit dem Befehl DBLOGIN USERIDALIAS eine Verbindung zur PostgreSQL-Zieldatenbank her. Wenn Sie keine Datenbankverbindung zur Quelldatenbank eingerichtet haben, können Sie sie mit den Schritten unter Datenbankverbindungen hinzufügen einrichten oder den Befehl ALTER CREDENTIALSTORE aus dem Admin-Client verwenden.

  14. Fügen Sie der Zieldatenbank eine Checkpointtabelle hinzu.

    ADD CHECKPOINTTABLE ggs.chkpoint
  15. Fügen Sie ein Replicat hinzu, das die Änderungen auf die Zieldatenbank anwendet, nachdem die Wiederherstellung der Datenbank abgeschlossen ist.

    ADD REPLICAT *replicat_name*

    Beispiel:

    ADD REPLICAT repecdc
  16. Starten Sie Replicat, nachdem die Wiederherstellung abgeschlossen ist, wie im folgenden Beispiel dargestellt:

    START REPLICAT *repecdc*