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.

  1. Connettersi alla distribuzione dal client di amministrazione:

    CONNECT https://source:srvmgrport DEPLOYMENT *deployment_name* AS *deployment_user* PASSWORD *deployment_password*
  2. 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 comando ALTER CREDENTIALSTORE del client di amministrazione.

    DBLOGIN USERIDALIAS *alias*

    Ad esempio, se l'alias è ggeast, il comando sarà:

    DBLOGIN USERIDALIAS ggeast
  3. Aggiungere una tabella checkepoint al database di origine.

    ADD CHECKPOINTTABLE *owner.table_name*

    Ad esempio:

    ADD CHECKPOINTTABLE ggs.checkpoint
  4. 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
  5. 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.

    1. Eseguire il login al database PostgreSQL utilizzando psql come utente con il ruolo replication.

    2. 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)
    3. Prendere nota di `snapshot_name` e `consistent_point`.
  6. Creare lo snapshot utilizzando pg_dump (o pg_dumpall per 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 nohup per 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_dumpall utilizza snapshot_name ricevuto dall'output al punto 5c. Nell'esempio riportato, l'opzione pg_dump presuppone che l'intero database venga replicato. Tuttavia, se si replica un sottoinsieme del database, è possibile eseguire il dump solo di tali oggetti.

  7. Aggiungere Extract utilizzando il comando ADD EXTRACT. L'estrazione deve essere posizionata all'indirizzo consistent_point tracciato al punto 5c:

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

    Ad esempio:

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

    Posizionando l'estrazione in base a questo valore LSN, assicurarsi che l'estrazione non acquisisca i dati inclusi nel dump.

  8. Aggiungere il trail Extract utilizzando il comando ADD EXTTRAIL.

    ADD EXTTRAIL *trail_name*, EXTRACT *extract_name*

    Ad esempio:

    ADD EXTTRAIL *east/ea*, EXTRACT *extecdc*
  9. Avviare l'estrazione.

    START EXTRACT *extract_name*
  10. (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*
  11. Ripristinare il database sul server di destinazione utilizzando il comando pg_restore. Proprio come nel pg_dump, se la sessione viene persa, il ripristino non riuscirà, quindi si consiglia di utilizzare l'opzione nohup. 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 &
  12. (Facoltativo) Se è stato creato un percorso di distribuzione per un servizio Receiver in un'altra distribuzione, potrebbe essere necessario utilizzare il comando CONNECT del client di amministrazione per connettersi alla distribuzione di destinazione.

    CONNECT https://*target:srvmgrport* *DEPLOYMENT* *deployment_name* AS *deployment_user* PASSWORD *deployment_password*
  13. 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 comando ALTER CREDENTIALSTORE del client di amministrazione.

  14. Aggiungere una tabella di checkpoint al database di destinazione.

    ADD CHECKPOINTTABLE ggs.chkpoint
  15. 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
  16. Avviare Replicat dopo il completamento del ripristino, come mostrato nell'esempio riportato di seguito.

    START REPLICAT *repecdc*