Instanciación precisa entre entornos PostgreSQL mediante la utilidad pg_dump

Al utilizar Oracle GoldenGate para replicar entre dos o más bases de datos compatibles con PostgreSQL, puede utilizar la utilidad de copia de seguridad pg_dump (pg_dumpall)/pg_restore que se incluye con PostgreSQL. Esto creará una copia de seguridad o una instantánea de la base de datos origen, que se restaurará en el sistema de destino.

Consulte pg_dump (pg_dumpall) y pg_restore en la documentación PostgreSQL.

En los siguientes pasos se describe cómo utilizar esta copia de seguridad junto con Oracle GoldenGate para garantizar una instanciación inicial precisa, que no necesita que el origen se ponga fuera de línea ni el uso de HANDLECOLLISIONS.

Estos pasos utilizan el cliente de administración, pero puede realizar los mismos pasos desde la interfaz web de microservicios de Oracle GoldenGate y los puntos finales de servicio de la API de Rest.

Antes de comenzar estos pasos, asegúrese de que ha terminado de preparar PostgreSQL para Oracle GoldenGate. Consulte la sección Preparar PostgreSQL para obtener más información.

  1. Conéctese al despliegue desde el cliente de administración:

    CONNECT https://source:srvmgrport DEPLOYMENT *deployment_name* AS *deployment_user* PASSWORD *deployment_password*
  2. Conéctese a la base de datos PostgreSQL de origen mediante el comando DBLOGIN. Si no ha configurado una conexión de base de datos a la base de datos de origen, puede realizar la configuración mediante los pasos de Agregar conexiones de base de datos o mediante el comando ALTER CREDENTIALSTORE del cliente de administración.

    DBLOGIN USERIDALIAS *alias*

    Por ejemplo, si el alias es ggeast, el comando sería:

    DBLOGIN USERIDALIAS ggeast
  3. Agregue una tabla de puntos de control a la base de datos origen.

    ADD CHECKPOINTTABLE *owner.table_name*

    Por ejemplo:

    ADD CHECKPOINTTABLE ggs.checkpoint
  4. Cree el archivo de parámetros Extract para capturar las tablas que desea replicar y registre un nuevo Extract con la base de datos PostgreSQL de origen mediante el comando REGISTER EXTRACT, pero no agregue el Extract.

    REGISTER EXTRACT *extract_name*

    Por ejemplo:

    REGISTER EXTRACT extcdc
  5. Cree una ranura de replicación temporal que se utilizará para crear un punto de inicio para nuestro proceso Extract y para posicionar la instantánea PostgreSQL. Esto se puede hacer mediante el comando CREATE_REPLICATION_SLOT. A continuación, se muestran los pasos para configurar la ranura de replicación temporal:

    1. Conéctese a la base de datos PostgreSQL mediante psql como usuario con el rol replication.

    2. Utilice la opción replication=database. Este es el mismo usuario que creó en el paso 2.

      Por ejemplo:

      $ 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. Anote `snapshot_name` y `consistent_point`.
  6. Cree la instantánea mediante pg_dump (o pg_dumpall para bases de datos en cluster), como se muestra en el siguiente ejemplo:

    Nota:

    Este comando puede tardar algún tiempo en ejecutarse. Se recomienda ejecutar este comando con una opción nohup para evitar que el comando se pare si la sesión se cierra.

    $ 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 utiliza el valor snapshot_name recibido de la salida del paso 5c. En el ejemplo proporcionado, la opción pg_dump asume que se replicará toda la base de datos. Sin embargo, si está replicando un subjuego de la base de datos, puede volcar solo esos objetos.

  7. Agregue el Extract mediante el comando ADD EXTRACT. El Extract se debe colocar en el consistent_point con seguimiento en el paso 5c:

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

    Por ejemplo:

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

    Al colocar el Extract en este valor de LSN, asegúrese de que el Extract no capture ningún dato que se haya incluido en el volcado.

  8. Agregue la pista de Extract mediante el comando ADD EXTTRAIL.

    ADD EXTTRAIL *trail_name*, EXTRACT *extract_name*

    Por ejemplo:

    ADD EXTTRAIL *east/ea*, EXTRACT *extecdc*
  9. Inicie el Extract.

    START EXTRACT *extract_name*
  10. (Opcional) Si necesita configurar una ruta de distribución para enviar los archivos de pista a otro servidor, utilice el comando ADD DISTPATH.

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

    Por ejemplo:

    ADD DISTPATH *dpecdc* SOURCE *trail://localhost:9002/services/v2/sources?trail=ea* TARGET *wss://localhost:9003/services/v2/targets?trail=ea*
  11. Restaure la base de datos en el servidor de destino mediante el comando pg_restore. Al igual que en pg_dump, si se pierde la sesión, la restauración fallará, por lo que se recomienda utilizar la opción nohup. En este ejemplo, se utilizaron las siguientes opciones:

    $ nohup /u01/pgsql-16/bin/pg_restore -h pgtarget -p 6432 -U ggadmin -d pgtarget -v
    latestdump.db &
  12. (Opcional) Si ha creado una ruta de distribución a un servicio de receptor en otro despliegue, puede que necesite utilizar el comando CONNECT del cliente de administración para conectarse al despliegue de destino.

    CONNECT https://*target:srvmgrport* *DEPLOYMENT* *deployment_name* AS *deployment_user* PASSWORD *deployment_password*
  13. Conéctese a la base de datos PostgreSQL de destino mediante el comando DBLOGIN USERIDALIAS. Si no ha configurado una conexión de base de datos a la base de datos de origen, puede realizar la configuración mediante los pasos de Agregar conexiones de base de datos o utilizar el comando ALTER CREDENTIALSTORE del cliente de administración.

  14. Agregue una tabla de puntos de control a la base de datos destino.

    ADD CHECKPOINTTABLE ggs.chkpoint
  15. Agregue un Replicat que aplicará los cambios a la base de datos destino una vez que se haya completado la restauración de la base de datos.

    ADD REPLICAT *replicat_name*

    Por ejemplo:

    ADD REPLICAT repecdc
  16. Inicie Replicat después de que se haya completado la restauración, como se muestra en el siguiente ejemplo:

    START REPLICAT *repecdc*