Llevamos ya unas semanas profundizando en CDC (Change Data Capture) utilizando Oracle GoldenGate. En el anterior post, hemos visto cómo implementar una replicación bidireccional con Oracle GoldenGate combinando la versión Microservices con la versión Classic, ya que “Microservices” solo soportaba la base de datos Oracle hasta que llegó la versión 21.

En este post vamos a realizar el mismo caso funcional, replicando de forma bidireccional entre Oracle y Postgresql, pero utilizando solo la versión Microservices.

Diseñando el proceso de replicación

Este proceso de replicación es similar al proceso de replicación diseñado en el post anterior, con la diferencia de que usaremos la versión “Microservices” de GoldenGate en el proceso completo, tanto de Oracle a Postgresql como de Postgresql a Oracle.

La arquitectura queda de la siguiente manera:

Manos a la obra: implementando el proceso de replicación

Vamos a pasar a la práctica a lo largo de los siguientes puntos. Para que el post sea más legible, el detalle de cada paso lo encontraremos en el fichero Readme del repositorio asociado.

Creando la infraestructura base

Al igual que hemos hecho en los anteriores posts, lo primero que tenemos que hacer es crear la infraestructura que soportará el caso de uso. Lo haremos sobre AWS y estará compuesta principalmente por:

El detalle de estos pasos lo encontraremos en el apartado del Readme correspondiente a la creación de la infraestructura.

Preparando las bases de datos para la replicación

De igual forma que hicimos en el post anterior, tenemos que preparar las bases de datos (Oracle y Postgresql) para la replicación. Además, crearemos un usuario propio para GoldenGate (oggadm1) y le daremos los privilegios necesarios.

Para ejecutar este paso, iremos al apartado “preparación de las bases de datos para la replicación” del fichero Readme.

Instalando Oracle GoldenGate Microservices 2.

Una vez que tenemos las bases de datos preparadas, instalaremos una única versión de Oracle GoldenGate, aunque lo haremos en dos partes: primero la parte correspondiente a Oracle y, después, la parte correspondiente a Postgresql.

Instalando Oracle GoldenGate Microservices para Oracle

La instalación de GoldenGate Microservices es similar a la realizada en el post de replicación bidireccional, con la salvedad del incremento de versión, de 19 a 21.

Todos los pasos a seguir se encuentran en el apartado correspondiente del fichero readme.

Instalando Oracle GoldenGate Microservices para Postgresql

De forma similar al apartado anterior, para instalar y configurar Oracle GoldenGate Microservices para Postgresql tenemos que seguir los pasos indicados en el apartado correspondiente del fichero Readme.

En este punto, ya tenemos instalados y configurados todos los elementos de la infraestructura necesarios para poder implementar un proceso de replicación:

Implementando el proceso de replicación bidireccional

Una vez que tenemos instalado GoldenGate Microservices para ambas bases de datos, pasamos a implementar el proceso de replicación que hemos diseñado anteriormente. Al igual que en el post anterior, hemos establecido tres etapas:

  1. Carga inicial, que sincronizará los datos de Oracle en Postgresql.
  2. CDC de Oracle a Postgresql.
  3. CDC de Postgresql a Oracle.

La siguiente imagen muestra claramente los elementos que necesitamos en las tres etapas:

Carga inicial

La etapa de carga inicial es muy similar a la implementada en el post de replicación bidireccional, con la diferencia de que añadimos un elemento “Path” (similar al Data Pump en la versión Classic de GoldenGate).

Para realizar la implementación, tenemos que seguir las instrucciones detalladas en apartado asociado a la carga inicial del fichero Readme.

Proceso de CDC (Oracle a Postgresql)

Al igual que sucede con la carga inicial, el proceso de CDC de Oracle a Postgresql es similar al implementado en el post anterior.

Para crear estos elementos, seguimos los pasos indicados en el apartado asociado al proceso de replicación del fichero Readme.

Finalizada esta implementación, tenemos el proceso de replicación unidireccional de Oracle a Postgresql completo:

Probando el proceso de replicación de Oracle a Postgresql

Llegados a este punto, lanzaremos la carga inicial y probaremos el proceso de replicación de Oracle a Postgresql.

Para ello, seguimos los pasos marcados en el apartado de pruebas del proceso unidireccional del fichero readme.

Proceso de CDC (Postgresql a Oracle)

Al igual que comentamos post sobre replicación bidireccional con Oracle Goldengate, debemos realizar unas pequeñas modificaciones de los elementos ya realizados para evitar:

Sincronizando las secuencias en las fuentes

Como se ha comentado en el apartado de diseño, para evitar que las secuencias se solapen, vamos a actuar tanto en origen (Oracle) como en destino (Postgresql), realizando una acción muy sencilla: en un lado vamos a hacer que todos los valores devueltos por la secuencia que genera el ID de los clientes sean pares, y en el otro lado, que sean impares. De este modo nunca van a coincidir.

Para realizar estos cambios, sigue los pasos indicados en el siguiente apartado del fichero readme.

Evitando el bucle de replicación

Este es otro punto que debemos tener en cuenta en la replicación bidireccional. La solución también es sencilla: vamos a modificar el extract del lado origen (Oracle), para decir que no tenga en cuenta los cambios que se hayan realizado con el usuario “oggadm1”.

Sigue los pasos mostrados en el fichero readme para realizar este cambio.

Implementando el proceso de replicación de Postgresql a Oracle

Llegados a este punto ya podemos abordar el proceso de replicación en sentido Postgresql a Oracle. La implementación es similar a la que hemos realizado en el sentido opuesto (Oracle a Postgresql).

Los detalles para abordar la implementación los puedes encontrar en el correspondiente apartado del fichero readme.

Una vez hecho esto, ya tenemos el proceso completo:

Probando el proceso de replicación bidireccional

Las pruebas que vamos a realizar son las mismas que realizamos en el post de replicación bidireccional, por lo tanto no vamos a entrar de nuevo en detalle en este post.

Para realizar estas pruebas sigue las instrucciones indicadas en el fichero readme.

Destruyendo la infraestructura

Una vez terminado el caso de uso, podemos proceder a la destrucción de la infraestructura que hemos creado en AWS. Para ello, realizamos los pasos explicados en el apartado correspondiente a la destrucción del entorno del fichero readme.

Conclusión

En este post hemos visto cómo usar Oracle GoldenGate Microservices para implementar el proceso de replicación bidireccional Oracle - Postgresql de forma completa.

Como hemos visto, el proceso contiene los mismos elementos que se han implementado en el post de replicación bidireccional, con la principal diferencia de que disponemos del mismo entorno y las mismas herramientas tanto para interactuar con Oracle como con Postgresql, facilitando así el manejo diario.

Si quieres seguir profundizando…

Como os hemos contando, este post forma parte de una serie sobre CDC (Change Data Capture) utilizando Oracle GoldenGate. Si quieres conocer más a fondo esta herramienta:

Cuéntanos qué te parece.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.

Suscríbete

Estamos comprometidos.

Tecnología, personas e impacto positivo.