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.
-
Conéctese al despliegue desde el cliente de administración:
CONNECT https://source:srvmgrport DEPLOYMENT *deployment_name* AS *deployment_user* PASSWORD *deployment_password* -
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 comandoALTER CREDENTIALSTOREdel cliente de administración.DBLOGIN USERIDALIAS *alias*Por ejemplo, si el alias es ggeast, el comando sería:
DBLOGIN USERIDALIAS ggeast -
Agregue una tabla de puntos de control a la base de datos origen.
ADD CHECKPOINTTABLE *owner.table_name*Por ejemplo:
ADD CHECKPOINTTABLE ggs.checkpoint -
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 -
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:-
Conéctese a la base de datos PostgreSQL mediante
psqlcomo usuario con el rol replication. -
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) -
Anote `snapshot_name` y `consistent_point`.
-
-
Cree la instantánea mediante
pg_dump(opg_dumpallpara 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
nohuppara 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_dumpallutiliza el valorsnapshot_namerecibido de la salida del paso 5c. En el ejemplo proporcionado, la opciónpg_dumpasume 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. -
Agregue el Extract mediante el comando
ADD EXTRACT. El Extract se debe colocar en elconsistent_pointcon seguimiento en el paso 5c:ADD EXTRACT *extract_name*, TRANLOG, LSN *lsn_value*Por ejemplo:
ADD EXTRACT *extecdc*, TRANLOG, LSN 1/42332A6B0Al 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.
-
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* -
Inicie el Extract.
START EXTRACT *extract_name* -
(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* -
Restaure la base de datos en el servidor de destino mediante el comando
pg_restore. Al igual que enpg_dump, si se pierde la sesión, la restauración fallará, por lo que se recomienda utilizar la opciónnohup. 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 & -
(Opcional) Si ha creado una ruta de distribución a un servicio de receptor en otro despliegue, puede que necesite utilizar el comando
CONNECTdel cliente de administración para conectarse al despliegue de destino.CONNECT https://*target:srvmgrport* *DEPLOYMENT* *deployment_name* AS *deployment_user* PASSWORD *deployment_password* -
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 comandoALTER CREDENTIALSTOREdel cliente de administración. -
Agregue una tabla de puntos de control a la base de datos destino.
ADD CHECKPOINTTABLE ggs.chkpoint -
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 -
Inicie Replicat después de que se haya completado la restauración, como se muestra en el siguiente ejemplo:
START REPLICAT *repecdc*