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:
-
Una instalación de PostgreSQL para servir como base de datos de origen (consulte Configuración del entorno)
-
Abra el puerto 5432 en la lista de seguridad de la VCN
-
Una base de datos de HeatWave que sirve como base de datos de destino.
Configuración del entorno: PostgreSQL
Para configurar el entorno para este inicio rápido:
-
Ejecute los siguientes comandos para instalar PostgreSQL.
-
Instale el servidor PostgreSQL:
sudo yum install postgresql-server -
Instale el módulo postgresql-contrib para evitar esta excepción SQL:
sudo yum install postgresql-contrib -
Cree un nuevo cluster de base de datos PostgreSQL:
sudo postgresql-setup --initdb -
Active postgresql.service:
sudo systemctl enable postgresql.service -
Inicie postgresql.service:
sudo systemctl start postgresql.service
-
-
Por defecto, PostgreSQL solo permite conexiones locales. Permitir conectividad remota a PostgreSQL.
-
En
/var/lib/pgsql/data/postgresql.conf, prepare la base de datos para la replicación. -
Localice y quite el comentario de
listen_addresses = 'localhost'y cambie localhost a un asterisco ("):listen_addresses = '*' -
Defina los siguientes parámetros de la siguiente manera:
-
wal_level = logical -
max_replication_slots = 1 -
max_wal_senders = 1 -
track_commit_timestamp = on
Nota:
Configure
/var/lib/pgsql/data/pg_hba.confpara 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 md5Consulte The pg_hba.conf File para obtener más información.
- Reinicie el servidor de PostgreSQL:
sudo systemctl restart postgresql.service- 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 -
-
Abra el puerto 5432 en la lista de seguridad de la VCN.
-
> sudo su - postgres > psqlNota: También puede introducir
sudo su - postgres psqlsi el ejemplo anterior no funciona. -
Definición de PostgreSQL.
-
Descargue y ejecute seedSRCOCIGGLL_PostgreSQL.sql para configurar la base de datos y cargar los datos de ejemplo.
-
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
-
Abra el puerto 3306, a través del cual se puede conectar OCI GoldenGate.
-
En la consola de Oracle Cloud, localice la subred que utiliza la base de datos de HeatWave.
-
En la lista de seguridad de la subred, cree una regla de entrada para el Puerto TCP/3306.
-
-
Cree un usuario
ggadmincon 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'; -
Crear tablas de destino mediante esquema de ejemplo.
Asegúrese de que las tablas y el usuario se han creado correctamente.
Tarea 1: Creación de los Recursos de OCI GoldenGate
En este ejemplo de inicio rápido se necesitan despliegues y conexiones tanto para el origen como para el destino.
-
Cree un despliegue para la base de datos PostgreSQL de origen.
-
Cree un despliegue de MySQL para la base de datos de HeatWave de destino.
-
Crear una conexión PostgreSQL.
-
En Tipo, seleccione Servidor PostgreSQL en la lista desplegable.
-
En Nombre de base de datos, introduzca
ociggll. -
En Host, introduzca la IP pública de la instancia informática en la que se ejecuta PostgreSQL.
-
En Puerto, introduzca
5432. -
En Nombre de usuario, introduzca
ggadmin. -
Para Password (Contraseña), introduzca la contraseña.
-
En Protocolo de seguridad, seleccione Plain en la lista desplegable.
-
-
(Opcional) Si la base de datos de HeatWave no tiene un punto final público, cree una conexión a GoldenGate y, a continuación, asigne esta conexión al despliegue de PostgreSQL de origen.
-
Asigne la conexión de origen al despliegue de PostgreSQL de destino.
-
Asigne la conexión de destino al despliegue de destino de MySQL.
Tarea 2: Activar el registro complementario
Para activar el registro complementario:
-
Inicie la consola de despliegue de PostgreSQL GoldenGate:
-
En la página Despliegues, seleccione el despliegue de PostgreSQL para ver los detalles.
-
En la página del despliegue de PostgreSQL, seleccione Iniciar consola.
-
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.
Nota: La conexión es necesaria si IAM no se ha seleccionado como almacén de credenciales al crear un despliegue.
-
-
En la consola de despliegue, seleccione Conexiones de base de datos en la navegación izquierda, la base de datos PostgreSQL de origen y, a continuación, Trandata.
-
En la página Datos de Transacción, junto a Información de TRANDATA, seleccione Agregar Datos de Transacción (icono más).
-
En el panel Datos de transacción, en Nombre de esquema, introduzca
src_ocigglly, a continuación, seleccione Enviar.Nota: Utilice el campo de búsqueda para buscar
src_ocigglly verificar que se han agregado las tablas.
Tarea 3: Creación de los Extracts
-
Agregue la extracción de captura de cambios en datos:
-
En la navegación izquierda, seleccione Extracts.
-
En la página Extracts, seleccione Add Extract (icono más) y, a continuación, complete los campos de la siguiente manera:
-
En la página Información de extracción:
-
En Tipo de extracción, seleccione Cambiar extracción de captura de datos.
-
En Nombre de proceso, introduzca un nombre para el Extract, como
ECDC. -
Seleccione Next (Siguiente).
-
-
En la página Opciones de Extracción:
-
Para las credenciales de origen, seleccione Oracle GoldenGate en la lista desplegable Dominio
-
Seleccione la base de datos PostgreSQL de origen en la lista desplegable Alias.
-
En Nombre de pista de extracción, introduzca un nombre de pista de dos caracteres, como
C1. -
Seleccione Next (Siguiente).
-
-
En la página Parámetros de Extract, sustituya
MAP *.*, TARGET *.*;por lo siguiente:TABLE SRC_OCIGGLL.*;
-
-
Seleccione Crear y ejecutar.
-
-
Agregue el Extract de carga inicial:
-
En la página Extracts, seleccione Agregar Extract y, a continuación, complete el formulario Add Extract de la siguiente manera:
-
En la página Información de extracción:
-
Para el tipo de extracción, seleccione Extracción de carga inicial.
-
En Nombre de proceso, introduzca un nombre, como
EIL. -
Seleccione Next (Siguiente).
-
-
En la página Opciones de Extracción:
-
Para las credenciales de origen, seleccione Oracle GoldenGate en la lista desplegable Dominio.
-
Seleccione la base de datos PostgreSQL en la lista desplegable Alias.
-
En Nombre de Pista de Extracción, introduzca un nombre de ruta de dos caracteres, como
I1. -
Seleccione Next (Siguiente).
-
-
En la página Parámetros de Extract, sustituya el contenido del área de texto por lo siguiente:
EXTRACT EIL USERIDALIAS PostgreSQL_Compute, DOMAIN OracleGoldenGate EXTFILE I1, PURGE TABLE src_ociggll.*;Nota: Asegúrese de eliminar el parámetro
SOURCEDBdelante deUSERIDALIASantes de continuar.
-
-
Seleccione Crear y ejecutar.
-
Vuelva a la página Extracts, donde puede observar el inicio de Extract.
Tarea 4: Creación de la ruta de distribución para el Extract de carga inicial
Para crear una ruta de distribución para la extracción de carga inicial, complete lo siguiente:
-
En la consola de Oracle Cloud, en la página Despliegues, seleccione Despliegue de MySQL de destino.
-
En la página de detalles del despliegue, seleccione Iniciar consola y, a continuación, conéctese como usuario administrador.
-
Si utiliza el almacén de credenciales de IAM, continúe con el paso Crear una ruta de distribución. Si utiliza el almacén de credenciales de GoldenGate, cree un usuario con el que GoldenGate de origen utilice para conectarse al GoldenGate de destino.
-
En el menú de navegación, seleccione User Administration (Administración de usuarios).
-
Seleccione Agregar nuevo usuario (icono con signo más), complete los campos como se indica a continuación y, a continuación, seleccione Enviar:
-
En Nombre de usuario, introduzca
ggsnet. -
En Rol, seleccione Operador.
-
Introduzca la contraseña dos veces para su verificación.
-
-
-
En la consola de despliegue de PostgreSQL de origen, cree una conexión de ruta para el usuario creado en el paso anterior.
-
En el menú de navegación, seleccione Path Connections (Conexiones de ruta).
-
Seleccione Agregar conexión de ruta de acceso (icono más), complete los campos de la siguiente manera y, a continuación, seleccione 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.
-
-
-
Crear una ruta de distribución.
-
En la barra de menús del servicio, seleccione Rutas y, a continuación, seleccione Agregar ruta de distribución (icono más).
-
Complete el formulario Agregar ruta de la siguiente manera:
-
En la página Path Information:
-
En Nombre de la ruta, introduzca un nombre para esta ruta.
-
Seleccione Next (Siguiente).
-
-
En la página Source Options:
-
En Extracción de origen, deje en blanco.
-
En Nombre de pista, introduzca el nombre de pista de Extract de carga inicial (
I1). -
Seleccione Next (Siguiente).
-
-
En la página Opciones de Destino:
-
En Destino, seleccione wss.
-
En Host de Destino, introduzca la URL de despliegue de origen, sin https:// ni barras inclinadas finales.
-
En Número de puerto, introduzca
443. -
En Nombre de la pista, introduzca
I1. -
En Método de autenticación del destino, seleccione Alias de ID de Usuario.
-
En Dominio, introduzca el nombre de dominio creado en el paso anterior.
-
En Alias, introduzca el alias creado en el paso anterior (
dpuser). -
Seleccione Next (Siguiente).
-
-
-
Seleccione Crear y ejecutar.
Volverá a la página Servicio de distribución, donde podrá revisar la ruta de acceso creada.
-
-
En la consola de despliegue de destino, revise la ruta del receptor creada como resultado de la ruta del distribuidor:
-
Seleccione Paths (Rutas).
-
Revise los detalles de ruta.
-
Tarea 5: Adición de Un Replicat para la carga inicial
-
En la consola de despliegue de MySQL de destino, agregue una tabla de puntos de control.
-
En el menú de navegación, seleccione Conexiones de base de datos, Base de datos de HeatWave de destino y, a continuación, Puntos de control.
-
Seleccione Agregar punto de control (icono con signo más).
-
En el panel Punto de Control, en Tabla de Esquema, introduzca
SRCMIRROR_OCIGGLL.CHECKTABLE. -
Seleccione Enviar.
-
-
Agregue el Replicat de carga inicial.
-
En el menú de navegación, seleccione Replicats y, a continuación, seleccione Add Replicat (icono más).
-
En la página Replicats, complete los campos Add Replicat de la siguiente manera:
-
En la página Replicat Information:
-
En Tipo de replicación, seleccione Paralelo o Coordinado.
-
En Nombre de proceso, introduzca un nombre, como
RIL. -
Seleccione Next (Siguiente).
-
-
En la página Replicat Options:
-
En Nombre de Pista de Replicat, introduzca el nombre de las pistas desde la tarea 2 (
I1). -
En Credenciales de destino, seleccione el dominio y alias para la conexión a la base de datos de HeatWave.
-
En Tabla de puntos de Control, seleccione la tabla que ha creado en el paso 1.
-
Seleccione Next (Siguiente).
-
-
En la página Archivo de parámetros, agregue la siguiente asignación:
MAP src_ociggll.*, TARGET SRCMIRROR_OCIGGLL.*;
-
-
Seleccione Crear y ejecutar.
Volverá a la página Replicats, donde podrá revisar los detalles de Replicat.
-
-
Verificación de la Carga Inicial:
-
En Cloud Shell, conéctese a la VCN y la subred que utiliza la instancia de HeatWave.
-
Una vez conectado, ejecute el siguiente comando:
mysqlsh <user>@<MySQL DB Private IP>:3306 --sql -
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 la carga inicial.
-
Tarea 6: Creación de la Ruta de Distribución para la Captura de Cambios en los Datos
-
En la consola de despliegue de PostgreSQL de origen, seleccione Servicio de distribución.
-
Seleccione Agregar ruta de distribución.
-
Complete el formulario Agregar ruta de la siguiente manera:
-
En la página Path Information:
-
En Nombre de ruta, introduzca un nombre.
-
Seleccione Next (Siguiente).
-
-
En la página Source Options:
-
En Extracción de origen, seleccione la extracción de captura de datos de cambio (
ECDC). -
En Nombre de la pista, seleccione el archivo del registro de captura del cambio de datos (
C1). -
Seleccione Next (Siguiente).
-
-
En la página Opciones de Destino:
-
En Destino, seleccione wss.
-
En Host de destino, introduzca la URL de la consola de despliegue de destino (puede encontrarlo en la página de detalles del despliegue, sin https:// ni barras finales).
-
En Número de puerto, introduzca
443. -
En Nombre de la pista, introduzca
C1. -
En Método de autenticación del destino, seleccione Alias de ID de Usuario.
-
En Dominio, introduzca el nombre de dominio.
-
En Alias, introduzca el alias.
-
-
Seleccione Create Path and Run.
-
-
En la consola de despliegue de MySQL de destino, seleccione Servicio de receptor y, a continuación, revise la ruta de receptor creada.
Tarea 7: Adición de un Replicat para la captura de cambios en los datos
Realice actualizaciones en la base de datos PostgreSQL de origen para verificar la replicación en la base de datos HeatWave de destino.
-
Agregar Replicado:
-
En la consola de despliegue de destino, seleccione Servicio de administración y, a continuación, en el menú de navegación, seleccione Replicats.
-
En la página Replicats, seleccione Agregar Replicat (icono más) y, a continuación, complete el formulario Agregar Replicat de la siguiente manera:
- En la página Replicat Information:
-
En Tipo de replicación, seleccione Replicato no integrado.
-
En Nombre de proceso, introduzca un nombre, como
RCDC. -
Seleccione Next (Siguiente).
-
- En la página Replicat Options:
-
En Nombre de Pista de Replicat, introduzca el nombre de las pistas desde la tarea 3 (
C1). -
En Credenciales de destino, seleccione el dominio y el alias para la conexión de HeatWave.
-
En Tabla de puntos de control, seleccione la tabla de puntos de control.
-
- En la página Replicat Information:
-
En la página Parámetros de Replicat, sustituya
MAP *.*, TARGET *.*;por la siguiente asignación:MAP src_ociggll.*, TARGET SRCMIRROR_OCIGGLL.*; -
Seleccione Crear y ejecutar.
Volverá a la página Replicats, donde podrá revisar los detalles de Replicat.
-
-
Verificar captura de cambios en los datos:
-
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); -
En la consola de despliegue de PostgreSQL de origen, seleccione el nombre de extracción de captura de cambio de datos (
ECDC), seleccione Detalles y, a continuación, seleccione Estadísticas. Verifique quesrc_ociggll.src_citytenga 10 inserciones.Nota: Si el Extract no capturó ninguna inserción, reinicie el Extract
ECDC. -
En el despliegue de MySQL del destino, seleccione el Replicat
RCDC, revise sus Detalles y Estadísticas para verificar el número de inserciones.
-