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.
-
Stellen Sie über den Admin-Client eine Verbindung zum Deployment her:
CONNECT https://source:srvmgrport DEPLOYMENT *deployment_name* AS *deployment_user* PASSWORD *deployment_password* -
Stellen Sie mit dem Befehl
DBLOGINeine 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 BefehlALTER CREDENTIALSTOREaus dem Admin-Client vornehmen.DBLOGIN USERIDALIAS *alias*Beispiel: Wenn der Alias ggeast ist, lautet der Befehl:
DBLOGIN USERIDALIAS ggeast -
Fügen Sie der Quelldatenbank eine Checkepoint-Tabelle hinzu.
ADD CHECKPOINTTABLE *owner.table_name*Beispiel:
ADD CHECKPOINTTABLE ggs.checkpoint -
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 -
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_SLOTerfolgen. So konfigurieren Sie den temporären Replikations-Slot:-
Melden Sie sich bei der Datenbank PostgreSQL an, indem Sie
psqlals Benutzer mit der Rolle Replikation verwenden. -
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) -
Halten Sie die Datei snapshot_name und die Datei consistent_point fest.
-
-
Erstellen Sie den Snapshot mit dem
pg_dump(oderpg_dumpallfü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
nohupabzusetzen, 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_dumpallverwendet diesnapshot_name, die von der Ausgabe in Schritt 5c empfangen wurde. Im angegebenen Beispiel geht die Optionpg_dumpdavon aus, dass die gesamte Datenbank repliziert wird. Wenn Sie jedoch eine Teilmenge der Datenbank replizieren, können Sie nur diese Objekte ausgeben. -
Fügen Sie den Extract mit dem Befehl
ADD EXTRACThinzu. Der Extract sollte an derconsistent_pointpositioniert werden, die in Schritt 5c verfolgt wird:ADD EXTRACT *extract_name*, TRANLOG, LSN *lsn_value*Beispiel:
ADD EXTRACT *extecdc*, TRANLOG, LSN 1/42332A6B0Stellen Sie sicher, dass der Extract bei diesem LSN-Wert keine Daten erfasst, die im Dump enthalten waren.
-
Fügen Sie den Extract-Trail mit dem Befehl
ADD EXTTRAILhinzu.ADD EXTTRAIL *trail_name*, EXTRACT *extract_name*Beispiel:
ADD EXTTRAIL *east/ea*, EXTRACT *extecdc* -
Starten Sie den Extract.
START EXTRACT *extract_name* -
(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* -
Stellen Sie die Datenbank mit dem Befehl
pg_restoreauf dem Zielserver wieder her. Wenn die Session verloren geht, verläuft die Wiederherstellung wie in derpg_dumpnicht erfolgreich. Daher wird empfohlen, die Optionnohupzu 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 & -
(Optional) Wenn Sie einen Verteilungspfad zu einem Receiver-Service in einem anderen Deployment erstellt haben, müssen Sie möglicherweise den Admin-Clientbefehl
CONNECTverwenden, um eine Verbindung zum Ziel-Deployment herzustellen.CONNECT https://*target:srvmgrport* *DEPLOYMENT* *deployment_name* AS *deployment_user* PASSWORD *deployment_password* -
Stellen Sie mit dem Befehl
DBLOGIN USERIDALIASeine 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 BefehlALTER CREDENTIALSTOREaus dem Admin-Client verwenden. -
Fügen Sie der Zieldatenbank eine Checkpointtabelle hinzu.
ADD CHECKPOINTTABLE ggs.chkpoint -
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 -
Starten Sie Replicat, nachdem die Wiederherstellung abgeschlossen ist, wie im folgenden Beispiel dargestellt:
START REPLICAT *repecdc*