Este es el quinto (y último) post de la serie dedicada a Oracle GoldenGate. En los anteriores hemos visto conceptos teóricos y hemos solventando dos casos de uso:

Ahora vamos a basarnos en el caso de uso tratado en el post de replicación bidireccional, pero en vez de usar GoldenGate Classic para Oracle, vamos a usar GoldenGate Microservices.

¿Qué es Oracle GoldenGate Microservices?

Hasta ahora hemos estado usando la denominada versión “Classic” de GoldenGate. Si vamos a la página de descargas de GoldenGate veremos que existe una versión “Microservices”, y podemos preguntarnos a qué se refiere. Por ejemplo, ya en la versión 19.1.0.0.4, podemos encontrar los dos tipos de descargas:

Elementos

GoldenGate Microservices está implementado sobre una arquitectura diferente. Incorpora una consola de administración web que facilita la configuración y el manejo de los diferentes componentes, evitando hacer uso de la consola por línea de comandos (GGSCI) que usamos en la versión Classic. Dentro de esta arquitectura encontramos los siguientes elementos:

*En el momento de escribir este post, Oracle GoldenGate para microservicios solo soporta como origen y destino la base de datos Oracle.

API Rest

Oracle GoldenGate Microservices expone un API Rest para interactuar con los diferentes elementos enumerados en el apartado anterior y, por tanto, poder efectuar operaciones de forma relativamente sencilla.

La documentación de los diferentes endpoints la podemos encontrar en la página oficial de Oracle. En este caso, la correspondiente a la versión 19.1 la encontramos en el siguiente enlace.

Diseñando el proceso de replicación

El proceso de replicación no es diferente al proceso de replicación diseñado en el post anterior, simplemente usaremos la versión “Microservices” de GoldenGate.

¿Qué “GoldenGates” necesitaremos?

Como hemos comentado, en este post vamos a usar la versión Oracle GoldenGate Microservices y Oracle GoldenGate for Postgresql.

La arquitectura queda de la siguiente manera:

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

Durante los siguientes puntos, vamos a pasar a la práctica. 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

Lo primero que tenemos que hacer es crear la infraestructura que soportará el caso de uso. Lo haremos sobre AWS y está 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

Al igual que hemos hecho en los anteriores posts de la serie, 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

Una vez que tenemos las bases de datos preparadas y las máquinas virtuales EC2 listas, tenemos que instalar las dos versiones de Oracle GoldenGate: la versión Microservices y la correspondiente al lado destino para Postgresql.

Instalando Oracle GoldenGate Microservices para Oracle

La instalación de GoldenGate Microservices difiere un poco de la realizada hasta ahora en los anteriores posts para la versión Classic.

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

Instalando Oracle GoldenGate for Postgresql

De forma similar al apartado anterior, para instalar y configurar Oracle GoldenGate Classic 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 instalados los dos GoldenGate que vamos a necesitar, pasamos a implementar el proceso de replicación que hemos diseñado anteriormente. En el diseño 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.

Carga inicial

La etapa de carga inicial es idéntica a la implementada en el post de replicación unidireccional pero, en este caso, la tenemos que implementar usando la consola web que nos proporciona Oracle GoldenGate Microservices.

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, asociado a la replicación bidireccional. La principal diferencia es que en este caso, para los elementos asociados al origen (“ecdcora” y “pcdcora”) usaremos la consola web que proporciona GoldenGate Microservices en vez de utilizar GGSCI.

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, al igual que hemos hecho en el post anterior de replicación bidireccional, lanzaremos la carga inicial y probaremos el proceso de replicación de Oracle a Postgresql. Al igual que en la creación de los elementos, nos apoyaremos en la consola web que proporciona Oracle GoldenGate Microservices.

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

Proceso de CDC (Postgresql a Oracle)

Como ya tenemos ambas fuentes sincronizadas, podemos pasar a implementar la replicación bidireccional, permitiendo escrituras en ambas fuentes.

Dentro de la implementación de este proceso, al igual que en el post anterior, se incluyen 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 en GoldenGate Classic para 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 realizamos en el post anterior de replicación bidireccional pero, para crear el replicat, utilizaremos la consola web de Oracle GoldenGate Microservices.

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 anterior, por lo tanto no vamos a entrar de nuevo en detalle en este post. Simplemente, veremos que podemos usar la consola web para tener información del estado de los procesos y de las estadísticas.

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.

Oracle Cloud GoldenGate

No podemos terminar este post sin mencionar el servicio gestionado que proporciona Oracle Cloud. Lo podemos usar incluso en el periodo de prueba con los créditos que nos proporcionan.

Este servicio está basado en la versión Microservices y nos proporciona una manera muy sencilla de crear deployments:

Tendremos acceso a todos los detalles del deployment:

Incluso nos muestra directamente las métricas:

Con este servicio accedemos a una única consola en la que, en diferentes pestañas, tendremos acceso a los diferentes “servers” que hemos visto en el post:

Conclusión

Hemos visto cómo usar Oracle GoldenGate Microservices para implementar el proceso de replicación bidireccional Oracle - Postgresql. Esta es la versión de GoldenGate que nos encontraremos si utilizamos el servicio gestionado de Oracle Cloud.

El proceso contiene los mismos elementos que se han implementado en el post anterior. La principal diferencia con Oracle GoldenGate Classic es que, con la versión Microservices, disponemos de un entorno gráfico en el que crear y administrar los diferentes elementos.

Además, esta versión expone un API Rest al que podemos invocar para ejecutar operaciones con GoldenGate.

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.