Replicación de datos de PostgreSQL a MySQL

Descubra cómo replicar datos de PostgreSQL a MySQL mediante OCI GoldenGate.

Antes de empezar

Para completar correctamente este inicio rápido, debe tener lo siguiente:

  • Instalación de PostgreSQL para que sirva como base de datos de origen (se siguen las instrucciones de instalación en la configuración del entorno).
  • Abra el puerto 5432 en la lista de seguridad de la VCN para poder acceder a PostgreSQL en su puerto por defecto.
  • Una base de datos HeatWave para que sirva como base de datos de destino.

Configuración del entorno: PostgreSQL

Para configurar el entorno para este inicio rápido:
  1. Ejecute los siguientes comandos para instalar PostgreSQL.
    1. Instale el servidor PostgreSQL:
      sudo yum install postgresql-server
    2. Instale el módulo postgresql-contrib para evitar esta excepción SQL:
      sudo yum install postgresql-contrib
    3. Cree un nuevo cluster de base de datos PostgreSQL:
      sudo postgresql-setup --initdb
    4. Active postgresql.service:
      sudo systemctl enable postgresql.service
    5. Inicie postgresql.service:
      sudo systemctl start postgresql.service
  2. Por defecto, PostgreSQL solo permite conexiones locales. Permita la conectividad remota a PostgreSQL.
    1. En /var/lib/pgsql/data/postgresql.conf, prepare la base de datos para la replicación.
    2. Busque y elimine los comentarios de listen_addresses = 'localhost' y cambie localhost a un asterisco (*):
      listen_addresses = '*'
    3. Defina los siguientes parámetros de la siguiente forma:
      • wal_level = logical
      • max_replication_slots = 1
      • max_wal_senders = 1
      • track_commit_timestamp = on

      Note:

      Configure /var/lib/pgsql/data/pg_hba.conf para asegurarse de que la autenticación de cliente está definida para permitir conexiones desde un host de Oracle GoldenGate. Por ejemplo, agregue lo siguiente:
      #Allow connections from remote hosts
      host    all    all    0.0.0.0/0    md5
      Consulte The pg_hba.conf File para obtener más información.
    4. Reinicie el servidor PostgreSQL:
      sudo systemctl restart postgresql.service
  3. Si utiliza Oracle Cloud Compute para alojar PostgreSQL, abra el puerto 5432:
    sudo firewall-cmd --permanent --add-port=5432/tcp
    sudo firewall-cmd --reload
    sudo firewall-cmd --list-all
  4. Abra el puerto 5432 en la lista de seguridad de la VCN.
  5. Conectar a PostgreSQL.
    > sudo su - postgres
    > psql

    Note:

    También puede introducir sudo su - postgres psql si el ejemplo anterior no funciona.
  6. Configure PostgreSQL.
    1. Descargue y ejecute seedSRCOCIGGLL_PostgreSQL.sql para configurar la base de datos y cargar los datos de ejemplo.
    2. Ejecute los siguientes comandos para configurar el usuario (asegúrese de sustituir <password> por una contraseña real):
      create user ggadmin with password '<password>';
      alter user ggadmin with SUPERUSER;
      GRANT ALL PRIVILEGES ON DATABASE ociggll TO ggadmin;

Configuración del entorno: MySQL

  1. Abra el puerto 3306, a través del cual se puede conectar OCI GoldenGate.
    1. En la consola de Oracle Cloud, localice la subred que utiliza la base de datos HeatWave.
    2. En la lista de seguridad de la subred, cree una regla de entrada para el puerto TCP/3306.
  2. Cree un usuario ggadmin con el siguiente script. Recuerde sustituir <ggadmin-password> por una contraseña válida:
    CREATE USER 'ggadmin' IDENTIFIED BY '<ggadmin-password>';
    GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT, CREATE,CREATE VIEW, EVENT, INSERT, UPDATE, DROP,EXECUTE, DELETE ON *.* TO 'ggadmin';
  3. Cree tablas de destino mediante el esquema de ejemplo.

Asegúrese de que las tablas y el usuario se han creado correctamente.

Tarea 1: Creación de recursos de OCI GoldenGate

En este ejemplo de inicio rápido se necesitan despliegues y conexiones tanto para el origen como para el destino.
  1. Cree un despliegue para la base de datos PostgreSQL de origen.
  2. Cree un despliegue MySQL para la base de datos HeatWave de destino.
  3. Crear una conexión PostgreSQL.
    1. En Tipo, seleccione Servidor PostgreSQL en la lista desplegable.
    2. En Nombre de base de datos, introduzca ociggll.
    3. En Host, introduzca la IP pública de la instancia informática en la que se ejecuta PostgreSQL.
    4. En Puerto, introduzca 5432.
    5. En Nombre de usuario, introduzca ggadmin.
    6. En Contraseña, introduzca su contraseña.
    7. En Protocolo de seguridad, seleccione Sin formato en la lista desplegable.
  4. Crear una conexión HeatWave.
  5. (Opcional) Si la base de datos HeatWave no tiene un punto final público, cree una conexión a GoldenGate y, a continuación, asigne esta conexión al despliegue PostgreSQL de origen.
  6. Active la conexión de origen al despliegue de origen PostgreSQL.
  7. Asigne la conexión de destino al despliegue de destino MySQL.

Tarea 2: Activar el registro complementario

Para activar el registro complementario:
  1. Inicie la consola de despliegue de PostgreSQL GoldenGate:
    1. En la página Despliegues, seleccione el despliegue de PostgreSQL para ver los detalles.
    2. En la página de detalles del despliegue PostgreSQL, haga clic en Iniciar consola.
    3. En la página de conexión de la consola de despliegue, introduzca las credenciales de administrador de GoldenGate proporcionadas en la tarea 1, paso 1.
  2. En GoldenGate 23ai, haga clic en Conexiones de base de datos en la navegación izquierda, a continuación, en la base de datos PostgreSQL de origen y, por último, en Trandata.
  3. En la página TRANDATA, junto a Información de TRANDATA, haga clic en Agregar TRANDATA (icono de signo más).
  4. En el panel Trandata, en Nombre de esquema, introduzca src_ociggll.* y, a continuación, haga clic en Enviar.

    Note:

    Utilice el campo de búsqueda para buscar src_ociggll y verificar que se han agregado las tablas.

Tarea 3: Creación de Extracts

  1. Agregue Change Data Capture Extract:
    1. En la navegación izquierda, haga clic en Extractos.
    2. En la página Extractos, haga clic en Agregar extracción (icono más) y, a continuación, complete los campos de la siguiente manera:
      • En la página Información de Extracción:
        1. Para el tipo Extraer, seleccione Captura de cambios en los datos Extraer.
        2. En Nombre de proceso, introduzca un nombre para Extraer, como ECDC.
        3. Haga clic en Siguiente.
      • En la página Opciones de extracción:
        1. Para las credenciales de origen, seleccione Oracle GoldenGate en la lista desplegable Dominio.
        2. Seleccione la base de datos PostgreSQL de origen en la lista desplegable Alias.
        3. En Extraer nombre de pista, introduzca un nombre de pista de dos caracteres, como C1.
        4. Haga clic en Siguiente.
      • En la página Parámetros de extracción, reemplace MAP *.*, TARGET *.*; por lo siguiente:
        TABLE SRC_OCIGGLL.*;
    3. Haga clic en Crear y ejecutar.
  2. Agregue la extracción de carga inicial:
    1. En la página Extracts, haga clic en Agregar extracción y, a continuación, complete el formulario Agregar extracción de la siguiente manera:
      • En la página Información de extracción:
        1. Para el tipo Extraer, seleccione Carga inicial Extraer.
        2. En Nombre de proceso, introduzca un nombre, como EIL.
        3. Haga clic en Siguiente.
      • En la página Opciones de extracción:
        1. Para las credenciales de origen, seleccione Oracle GoldenGate en la lista desplegable Dominio.
        2. Seleccione la base de datos PostgreSQL en la lista desplegable Alias.
        3. En Nombre de pista de extracción, introduzca un nombre de pista de dos caracteres, como I1.
        4. Haga clic en Siguiente.
      • En la página Parámetros de extracción, sustituya el contenido del área de texto por lo siguiente:
        EXTRACT EIL
        USERIDALIAS PostgreSQL_Compute, DOMAIN OracleGoldenGate
        EXTFILE I1, PURGE
        TABLE src_ociggll.*;

        Note:

        Asegúrese de eliminar el parámetro SOURCEDB delante de USERIDALIAS antes de continuar.
    2. Haga clic en Crear y ejecutar.
Vuelva a la página Extractos, donde puede observar el inicio de Extract.

Tarea 4: Creación de Distribution Path para Initial Load Extract

Para crear un Distribution Path para Initial Load Extract, complete lo siguiente:
  1. En la consola de Oracle Cloud, en la página Despliegues, seleccione el despliegue de destino MySQL.
  2. En la página de detalles del despliegue, haga clic en Iniciar consola y conéctese mediante el administrador detallado creado en la tarea 1, paso 2.
  3. Si utiliza el almacén de credenciales de IAM, continúe con el paso Crear Distribution Path. Si utiliza el almacén de credenciales GoldenGate, cree un usuario con el que el origen GoldenGate utilice para conectarse al destino GoldenGate.
    1. En el menú de navegación, haga clic en Administración de usuarios.
    2. Haga clic en Agregar nuevo usuario (icono de más), complete los campos de la siguiente manera y, luego, haga clic en Enviar:
      • En Nombre de usuario, introduzca ggsnet.
      • En Rol, seleccione Operador.
      • Introduzca la contraseña dos veces para su verificación.
  4. En la consola de despliegue de PostgreSQL de origen, cree una conexión de ruta para el usuario creado en el paso anterior.
    1. En el menú de navegación, haga clic en Conexiones de ruta.
    2. Haga clic en Agregar conexión de ruta (icono de signo más), complete los campos como se indica a continuación y, después, haga clic en Enviar:
      • En Alias de credencial, introduzca dpuser.
      • En ID de usuario, introduzca ggsnet
      • En Contraseña, introduzca la misma contraseña utilizada en el paso anterior.
  5. Crear Distribution Path.
    1. En la barra de menús del servicio, haga clic en Distribution Service y, a continuación, en Agregar Distribution Path (icono de signo más).
    2. Complete la pantalla Agregar ruta de la siguiente manera:
      • En la página Path Information:
        1. En Nombre de ruta, introduzca un nombre para esta ruta.
        2. Haga clic en Siguiente.
      • En la página Opciones de Origen:
        1. En Source Extract (Origen), deje el campo en blanco.
        2. En Nombre de pista, introduzca el nombre de pista Initial Load Extract (I1).
        3. Haga clic en Siguiente.
      • En la página Opciones de Destino:
        1. En Destino, seleccione wss.
        2. En Host de destino, introduzca la URL de despliegue de destino, sin https:// ni barras inclinadas finales.
        3. En Número de puerto, introduzca 443.
        4. En Nombre de pista, introduzca I1.
        5. En Método de autenticación del destino, seleccione UserID Alias.
        6. En Dominio, introduzca el nombre de dominio creado en el paso anterior.
        7. En Alias, introduzca el alias creado en el paso anterior (dpuser).
        8. Haga clic en Siguiente.
    3. Haga clic en Crear y ejecutar.
    Vuelva a la página Distribution Service, donde puede revisar la ruta creada.
  6. En la consola de despliegue MySQL de destino, consulte Receiver path creado como resultado de Distribution Path:
    1. Haga clic en Receiver Service.
    2. Consulte los detalles de Distribution Path.

Tarea 5: Adición de Replicat para Initial Load

  1. En la consola de despliegue MySQL de destino, agregue una tabla Checkpoint.
    1. En el menú de navegación, seleccione Conexiones de base de datos, la base de datos HeatWave de destino y, a continuación, Checkpoints.
    2. Haga clic en Agregar Checkpoint (icono de signo más).
    3. En el panel Checkpoint, en Tabla de esquemas, introduzca SRCMIRROR_OCIGGLL.CHECKTABLE.
    4. Haga clic en Enviar.
  2. Agregue Initial Load Replicat.
    1. En el menú de navegación, haga clic en Replicats y, a continuación, en Agregar Replicat (icono más).
    2. En la página Replicats, complete los campos Agregar Replicat de la siguiente forma:
      1. En la página Información de Replicat:
        1. Para tipo Replicat, seleccione Paralelo o Coordinado.
        2. En Nombre de proceso, introduzca un nombre, como RIL.
        3. Haga clic en Siguiente.
      2. En la página Opciones de Replicat:
        1. En Nombre de pista de replicación, introduzca el nombre de la pista de la tarea 2 (I1).
        2. En Credenciales de destino, seleccione el Dominio y el Alias para la conexión de base de datos HeatWave.
        3. En Tabla Checkpoint, seleccione la tabla Checkpoint que ha creado en el paso 1.
        4. Haga clic en Siguiente.
      3. En la página Archivo de parámetros, agregue la siguiente asignación:
        MAP src_ociggll.*, TARGET SRCMIRROR_OCIGGLL.*;
    3. Haga clic en Crear y ejecutar.

    Vuelva a la página Replicats, donde puede revisar los detalles de Replicat.

  3. Verifique Initial Load:
    1. En Cloud Shell, conéctese a la VCN y la subred que utiliza la instancia de HeatWave.
    2. Una vez conectado, ejecute el siguiente comando:
      mysqlsh <user>@<MySQL DB Private IP>:3306 --sql
    3. Ejecute el siguiente script para verificar los datos:
      select * from SRCMIRROR_OCIGGLL.SRC_CITY;
      select * from SRCMIRROR_OCIGGLL.SRC_CUSTOMER;

      La salida debe devolver los datos que se han cargado en las tablas de la base de datos de destino como resultado de Initial Load.

Tarea 6: Creación de Distribution Path para Change Data Capture

Para crear un Distribution Path para Change Data Capture, complete lo siguiente:
  1. En la consola de despliegue de origen PostgreSQL, haga clic en Servicio de distribución.
  2. Haga clic en Agregar Distribution Path.
  3. Complete la pantalla Agregar ruta de la siguiente manera:
    1. En la página Path Information:
      1. En Nombre de ruta, introduzca un nombre.
      2. Haga clic en Siguiente.
    2. En la página Opciones de Origen:
      1. En Origen Extract, seleccione Change Data Capture Extract (ECDC)).
      2. En Nombre de pista, seleccione el archivo de pista Change Data Capture (C1).
      3. Haga clic en Siguiente.
    3. En la página Opciones de Destino:
      1. En Destino, seleccione wss.
      2. En Host de Destino, introduzca la URL de la consola de despliegue de destino (puede encontrarla en la página de detalles del despliegue, sin https:// ni barras inclinadas finales.
      3. En Número de puerto, introduzca 443.
      4. En Trail Name, introduzca C1.
      5. En Método de autenticación del destino, seleccione UserID Alias.
      6. En Dominio, introduzca el nombre de dominio.
      7. En Alias, introduzca el alias.
    4. Haga clic en Crear ruta y ejecutar.
  4. En la consola de despliegue de destino MySQL, haga clic en Servicio de receptor y, a continuación, revise el Receiver Path creado.

Tarea 7: adición de Replicat para Change Data Capture

Realice actualizaciones en la base de datos PostgreSQL de origen para verificar la replicación en la base de datos HeatWave de destino.
  1. Agregue Replicat:
    1. En la consola de despliegue de destino, haga clic en Administration Service y, a continuación, en el menú de navegación, haga clic en Replicats.
    2. En la página Replicats, haga clic en Agregar Replicat (icono más) y, a continuación, complete el formulario Agregar Replicat de la siguiente manera:
      • En la página Información de Replicat:
        1. Para tipo Replicat, seleccione Nonintegrated Replicat.
        2. En Nombre de proceso, introduzca un nombre, como RCDC.
        3. Haga clic en Siguiente.
      • En la página Opciones de Replicat:
        1. En Replicat Nombre de pista, introduzca el nombre de la pista de la tarea 3 (C1).
        2. Para Credenciales de destino, seleccione el dominio y el alias para la conexión HeatWave.
        3. En Tabla de puntos de control, seleccione la tabla de puntos de control.
    3. En la página Replicat Parámetros, sustituya MAP *.*, TARGET *.*; por la siguiente asignación:
      MAP src_ociggll.*, TARGET SRCMIRROR_OCIGGLL.*;
    4. Haga clic en Crear y ejecutar.

      Vuelva a la página Replicats, donde puede revisar los detalles de Replicat.

  2. Verifique Change Data Capture:
    1. Realice actualizaciones en la base de datos PostgreSQL de origen para verificar la replicación en la base de datos HeatWave de destino. Ejecute el siguiente script para realizar inserciones en la base de datos PostgreSQL:
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1000,'Houston',20,743113);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1001,'Dallas',20,822416);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1002,'San Francisco',21,157574);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1003,'Los Angeles',21,743878);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1004,'San Diego',21,840689);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1005,'Chicago',23,616472);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1006,'Memphis',23,580075);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1007,'New York City',22,124434);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1008,'Boston',22,275581);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1009,'Washington D.C.',22,688002);
    2. En la consola de despliegue de origen PostgreSQL, seleccione el nombre Change Data Capture Extract (ECDC), haga clic en Detalles y, a continuación, en Statistics. Verifique que src_ociggll.src_city tenga 10 inserciones.

      Note:

      Si Extract no ha capturado ninguna inserción, reinicie ECDC Extract.
    3. En el despliegue de destino MySQL, seleccione RCDC Replicat, revise sus detalles y estadísticas para verificar el número de inserciones.

Tarea 8: Supervisión y mantenimiento de procesos

  1. Supervise el rendimiento.
  2. Gestione los archivos de pista.