Creazione di un'istanza precisa tra ambienti PostgreSQL mediante la utility pg_dump
Quando si utilizza Oracle GoldenGate per replicare tra due o più database compatibili con PostgreSQL, è possibile utilizzare la utility di backup pg_dump (pg_dumpall)/pg_restore inclusa in PostgreSQL. Questa operazione creerà un backup o uno snapshot del database di origine, che verrà ripristinato nel sistema di destinazione.
Vedere pg_dump (pg_dumpall) e pg_restore nella documentazione di PostgreSQL.
I passi riportati di seguito descrivono come utilizzare questo backup insieme a Oracle GoldenGate per garantire una creazione di un'istanza iniziale precisa, che non richiede l'impostazione offline dell'origine o l'uso di HANDLECOLLISIONS.
Questi passi utilizzano il client di amministrazione, ma è possibile eseguire gli stessi passi dall'interfaccia Web dei microservizi Oracle GoldenGate e dagli endpoint del servizio Rest API.
Prima di iniziare questi passi, assicurarsi di aver completato la preparazione di PostgreSQL per Oracle GoldenGate. Per informazioni dettagliate, vedere la sezione Prepara PostgreSQL.
-
Connettersi alla distribuzione dal client di amministrazione:
CONNECT https://source:srvmgrport DEPLOYMENT *deployment_name* AS *deployment_user* PASSWORD *deployment_password* -
Connettersi al database PostgreSQL di origine utilizzando il comando
DBLOGIN. Se non è stata impostata una connessione al database di origine, è possibile eseguire l'impostazione utilizzando la procedura descritta in Aggiungi connessioni al database o utilizzando il comandoALTER CREDENTIALSTOREdel client di amministrazione.DBLOGIN USERIDALIAS *alias*Ad esempio, se l'alias è ggeast, il comando sarà:
DBLOGIN USERIDALIAS ggeast -
Aggiungere una tabella checkepoint al database di origine.
ADD CHECKPOINTTABLE *owner.table_name*Ad esempio:
ADD CHECKPOINTTABLE ggs.checkpoint -
Creare il file dei parametri Extract per acquisire le tabelle che si desidera replicare e registrare una nuova Extract con il database PostgreSQL di origine utilizzando il comando
REGISTER EXTRACT, ma non aggiungere Extract.REGISTER EXTRACT *extract_name*Ad esempio:
REGISTER EXTRACT extcdc -
Creare uno slot di replica temporaneo che verrà utilizzato per creare un punto di partenza per il processo Extract e per posizionare lo snapshot PostgreSQL. Questa operazione può essere eseguita utilizzando il comando
CREATE_REPLICATION_SLOT. Di seguito sono riportati i passi per configurare lo slot di replica temporaneo.-
Eseguire il login al database PostgreSQL utilizzando
psqlcome utente con il ruolo replication. -
Utilizzare l'opzione
replication=database. Questo è lo stesso utente creato al punto 2.Ad esempio:
$ 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) -
Prendere nota di `snapshot_name` e `consistent_point`.
-
-
Creare lo snapshot utilizzando
pg_dump(opg_dumpallper i database in cluster), come mostrato nell'esempio seguente:Nota:
L'esecuzione di questo comando potrebbe richiedere del tempo. Si consiglia di eseguire questo comando utilizzando un'opzione
nohupper evitare l'arresto del comando se la sessione viene chiusa.$ 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 &pg_dump/pg_dumpallutilizzasnapshot_namericevuto dall'output al punto 5c. Nell'esempio riportato, l'opzionepg_dumppresuppone che l'intero database venga replicato. Tuttavia, se si replica un sottoinsieme del database, è possibile eseguire il dump solo di tali oggetti. -
Aggiungere Extract utilizzando il comando
ADD EXTRACT. L'estrazione deve essere posizionata all'indirizzoconsistent_pointtracciato al punto 5c:ADD EXTRACT *extract_name*, TRANLOG, LSN *lsn_value*Ad esempio:
ADD EXTRACT *extecdc*, TRANLOG, LSN 1/42332A6B0Posizionando l'estrazione in base a questo valore LSN, assicurarsi che l'estrazione non acquisisca i dati inclusi nel dump.
-
Aggiungere il trail Extract utilizzando il comando
ADD EXTTRAIL.ADD EXTTRAIL *trail_name*, EXTRACT *extract_name*Ad esempio:
ADD EXTTRAIL *east/ea*, EXTRACT *extecdc* -
Avviare l'estrazione.
START EXTRACT *extract_name* -
(Facoltativo) Se è necessario configurare un percorso di distribuzione per inviare i file trail a un altro server, utilizzare il comando
ADD DISTPATH.ADD DISTPATH *name* SOURCE *source_uri* TARGET *target_uri*Ad esempio:
ADD DISTPATH *dpecdc* SOURCE *trail://localhost:9002/services/v2/sources?trail=ea* TARGET *wss://localhost:9003/services/v2/targets?trail=ea* -
Ripristinare il database sul server di destinazione utilizzando il comando
pg_restore. Proprio come nelpg_dump, se la sessione viene persa, il ripristino non riuscirà, quindi si consiglia di utilizzare l'opzionenohup. In questo esempio sono state utilizzate le seguenti opzioni:$ nohup /u01/pgsql-16/bin/pg_restore -h pgtarget -p 6432 -U ggadmin -d pgtarget -v latestdump.db & -
(Facoltativo) Se è stato creato un percorso di distribuzione per un servizio Receiver in un'altra distribuzione, potrebbe essere necessario utilizzare il comando
CONNECTdel client di amministrazione per connettersi alla distribuzione di destinazione.CONNECT https://*target:srvmgrport* *DEPLOYMENT* *deployment_name* AS *deployment_user* PASSWORD *deployment_password* -
Connettersi al database PostgreSQL di destinazione utilizzando il comando
DBLOGIN USERIDALIAS. Se non è stata impostata una connessione al database di origine, è possibile eseguire l'impostazione utilizzando la procedura descritta in Aggiungi connessioni al database oppure utilizzare il comandoALTER CREDENTIALSTOREdel client di amministrazione. -
Aggiungere una tabella di checkpoint al database di destinazione.
ADD CHECKPOINTTABLE ggs.chkpoint -
Aggiungere un Replicat che applicherà le modifiche al database di destinazione al termine del ripristino del database.
ADD REPLICAT *replicat_name*Ad esempio:
ADD REPLICAT repecdc -
Avviare Replicat dopo il completamento del ripristino, come mostrato nell'esempio riportato di seguito.
START REPLICAT *repecdc*