Note:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse en una cuenta gratuita, consulte Introducción a la cuenta gratuita de Oracle Cloud Infrastructure.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al finalizar el laboratorio, sustituya estos valores por otros específicos de su entorno en la nube.
Sincronización entre regiones de OCI Database with PostgreSQL mediante la extensión pglogical
Introducción
La extensión pglogical permite la replicación lógica en varias instancias de Oracle Cloud Infrastructure (OCI) Database con PostgreSQL. Soporta la replicación entre versiones PostgreSQL y facilita la sincronización de datos entre las bases de datos desplegadas en los dominios de disponibilidad regional y local de OCI. Además, permite la replicación entre las bases de datos alojadas en el servicio gestionado PostgreSQL del proveedor de múltiples nubes y las instancias de comunidad PostgreSQL autogestionadas, ya sea que se ejecuten en la nube o en entornos locales, lo que ofrece una solución de replicación altamente flexible e interoperable.
Al utilizar un modelo de publicación-suscripción, pglogical permite que la replicación de flujo lógico replique los cambios en tablas, secuencias y otros objetos de un editor en un suscriptor. Esta extensión es ideal para una variedad de casos de uso, incluyendo:
-
Replicación completa de la base de datos.
-
Actualizaciones de versiones principales (con ciertas limitaciones).
-
Replicación de esquema, lenguaje de definición de datos (DDL), secuencias y datos de tabla.
-
Captura de Datos de Cambio (CDC).
-
Agregación y fusión de datos de varios servidores ascendentes.
Limitaciones
La extensión pglogica puede no ser adecuada para ciertos casos de uso debido a las siguientes limitaciones:
-
No está soportada la replicación simultánea de varias bases de datos.
-
Las tablas
UNLOGGED
yTEMPORARY
no se pueden replicar. -
La migración de metadatos de base de datos no está soportada.
-
La replicación automática de DDL no está disponible.
-
No se admite la replicación entre bases de datos con codificación diferente.
-
Los cambios de objetos grandes (LOB) no se pueden descodificar, lo que impide su replicación. Considere el uso del tipo de dato bytea para almacenar datos binarios grandes en lugar de LOB si es posible.
Para obtener más información, consulte Limitaciones y restricciones.
Objetivos
- Implante la extensión pglogical en el cruce entre dos regiones de OCI, demostrando específicamente la replicación entre Ashburn y Mumbai. Esta configuración también se puede adaptar para la replicación dentro de la región en una sola región de OCI.
Requisitos
-
Acceso a un arrendamiento de OCI.
-
Un host de OCI Bastion (imagen de OCI Compute).
-
Crear una Red Virtual en la Nube (VCN) en cada región.
-
La extensión pglogical se debe instalar tanto en la base de datos de origen como en la de destino.
-
Coherencia de Estructura de Tabla: Las tablas del proveedor y del suscriptor deben tener los mismos nombres, estar en el mismo esquema y tener columnas idénticas con tipos de dato coincidentes.
-
Compatibilidad de restricciones: las restricciones
CHECK
yNOT NULL
deben ser las mismas o más permisivas en el suscriptor que en el proveedor. -
Requisito de clave primaria: las tablas deben tener
PRIMARY KEYs
idéntico. No se recomienda agregar restriccionesUNIQUE
adicionales más allá de la clave primaria.
Tarea 1: Establecer comunicación entre bases de datos
Para conectarse al sistema de base de datos entre regiones, se debe configurar el intercambio de VCN.
Para crear un intercambio de tráfico de VCN mediante el gateway de direccionamiento dinámico (DRG), siga las subtareas:
Tarea 1.1: Conexión del DRG a las redes virtuales en la nube
-
Cree una VCN en la región de origen y la región de destino según sus necesidades.
-
Cree gateways de enrutamiento dinámico (DRG) en las regiones de origen y destino según sus necesidades.
-
Para asociar un DRG a una VCN, seleccione el DRG en la región de origen. Haga clic en Asociaciones de VCN y Crear asociación de red virtual en la nube.
-
En la página Crear asociación de VCN, introduzca el nombre de la asociación y seleccione VCN-A (VCN de región de origen) y, a continuación, haga clic en Crear asociación de VCN.
-
Repita los mismos pasos para asociar la VCN de destino.
Para obtener más información, consulte Gateways de enrutamiento dinámico.
Tarea 1.2: Crear conexión de intercambio de tráfico remoto (RPC)
-
Cree una RPC de región de origen (
SOR-RPC
). -
Vaya a la página de detalles
SOURCE DRG
y haga clic en Asociaciones de conexión de intercambio de tráfico remoto. -
Haga clic en Crear conexión de intercambio de tráfico remota,
-
En la página Crear conexión de intercambio de tráfico remoto, introduzca el nombre de la conexión y seleccione el compartimento y, a continuación, haga clic en Crear conexión de intercambio de tráfico remoto.
-
Para crear una RPC de región de destino (
TAR-RPC
), repita el mismo procedimiento realizado anteriormente para crear la RPC de región de destino.
Tarea 1.3: Establecer conexión RPC
Establezca la conexión de la región de origen a la región de destino mediante la conexión SOR-RPC
.
-
Vaya a la página de detalles
SOURCE DRG
y haga clic en Asociaciones de conexión de intercambio de tráfico remoto. -
Para ver los detalles de
SOR-RPC
, haga clic en el nombre de la conexión en la columna Conexión de intercambio de tráfico remoto. -
En la página de detalles de la conexión, haga clic en Establecer conexión, introduzca el nombre de la conexión y seleccione el compartimento.
-
En la página Establecer conexión, seleccione la región Su nombre de región de destino e introduzca el OCID de la RPC de destino (
TAR-RPC
). Cuando la conexión se establece, el estado de la RPC cambia a PEERED.Por lo tanto, el estado de intercambio de tráfico
TAR-RPC
también cambia a PEERED.
Tarea 1.4: Configuración de la tabla de rutas en las redes virtuales en la nube para enviar tráfico destinado a la asociación de DRG
-
Configure la tabla de rutas en
Source-VCN
para enviar tráfico al CIDR de la subred privadaTarget-VCN
. -
Vaya a la página de detalles
Source-VCN
y haga clic en Tablas de rutas. -
En la lista de tablas de rutas, haga clic en tabla de rutas para la subred privada-VCN de origen.
-
En la página de tabla de rutas, haga clic en Agregar reglas de ruta e introduzca la información de la regla de ruta según sus necesidades.
-
Para configurar la tabla de rutas en
Target-VCN
para enviar tráfico a CIDR de subred privada de la VCN de origen, repita los mismos pasos anteriores para configurar la tabla de rutas para la subred privada de la VCN de origen.
Tarea 1.5: Agregar regla de entrada de seguridad para permitir el tráfico entre subredes privadas de las redes virtuales en la nube a través de DRG
-
Agregar regla de entrada a la lista de seguridad para la subred privada-VCN de origen de la VCN de origen para permitir el tráfico que viene de la subred
Target-VCN-private
a la subredSource-VCN-private
-
Vaya a la página de detalles
Source-VCN
y haga clic en Lista de seguridad y Lista de seguridad para la subred privada-VCN de origen. -
En la página Lista de seguridad, haga clic en Agregar reglas de entrada e introduzca la información de la regla de entrada según sus necesidades.
-
Para agregar una regla de entrada a la lista de seguridad para la subred privada-VCN de destino de
Target-VCN
para permitir el tráfico que viene de la subredSource-VCN-private
a la subredTarget-VCN-private
, repita los mismos pasos realizados anteriormente para agregar la regla de entrada para la VCN de destino, pero utilice la regla de entrada adecuada.
Tarea 1.6: Pruebas y validación de la conectividad entre regiones de la base de datos
Conéctese a Source-VM
para verificar la conectividad con la base de datos de destino y validar simultáneamente la conectividad de la base de datos de origen desde la máquina virtual de destino para garantizar la comunicación bidireccional.
Tarea 2: Configuración de la entrada de registro A
Se debe configurar una entrada de registro A para resolver el nombre de dominio completo (FQDN) del sistema de base de datos en todas las regiones. En este tutorial, la región de Bombay sirve como región objetivo.
-
Cambie a la región de destino (Mumbai), introduzca DNS en la barra de búsqueda y seleccione Vistas privadas.
-
Se mostrará la lista de VCN de la región actual. Seleccione la VCN en la que ya está configurado el DRG.
-
Aparecerá la lista de zonas de DNS, incluido el FQDN del sistema de base de datos en Bombay.
-
Agregue una entrada para el sistema de base de datos remoto.
-
Haga clic en Crear zona.
-
En Zone Name (Nombre de zona), introduzca el FQDN del sistema de base de datos en la otra región (Ashburn).
-
Haga clic en Crear para agregar la nueva entrada de zona.
-
-
Configure la entrada de registro A.
-
Abra la zona recién creada, haga clic en Gestionar registros y seleccione Agregar registro.
-
Introduzca la siguiente información.
-
Nombre: introduzca un nombre.
-
Tipo: seleccione A (dirección IPv4).
-
TTL: introduzca 3600 segundos (modifique según los requisitos de la aplicación).
-
Modo RDATA: seleccione Básico.
-
Dirección: introduzca la dirección IP de punto final principal del sistema de base de datos en la otra región.
-
-
-
Haga clic en Guardar cambios y, a continuación, en Publicar cambios para aplicar la configuración.
Con esta configuración, el sistema de base de datos B (Mumbai) ahora puede resolver y conectarse al sistema de base de datos A (Ashburn) utilizando el FQDN, lo que permite una comunicación perfecta entre regiones de la base de datos.
Tarea 3: Creación de sistemas de base de datos en toda la región
Despliegue una base de datos PostgreSQL en todas las regiones de OCI para establecer una sólida estrategia de recuperación ante desastres (DR). Para obtener más información sobre la creación de una base de datos PostgreSQL en OCI, consulte Creación de un sistema de base de datos.
Tarea 4: Activar la extensión pglogical en toda la región
En este tutorial se muestra la implantación de la recuperación ante desastres al designar a Ashburn como región de origen y a Bombay como región de destino.
-
En la región Ashburn, conéctese a la consola de OCI, navegue a la base de datos PostgreSQL, seleccione el sistema de base de datos y modifique los valores de configuración accediendo al archivo de configuración.
-
Se le redirigirá al archivo de configuración completo. Seleccione Copiar Configuración para continuar, que mostrará la siguiente página.
-
Introduzca la información necesaria en función de sus especificaciones. A continuación, vaya a Variables de usuario (lectura/escritura), haga clic en Agregar otra variable y seleccione Nombre de variable como
wal_level
ytrack_commit_timestamp
y Valor de variable comological
y1
respectivamente. -
En Configurar extensiones, seleccione
pglogical
como extensiones PostgreSQL. -
Haga clic en Crear para generar el archivo de configuración.
-
Navegue al sistema de base de datos, seleccione Editar en Configuración y aplique la configuración creada anteriormente al sistema de base de datos.
-
El sistema de base de datos mostrará el estado Actualizando. Espere hasta que se convierta en Activo antes de continuar.
-
Una vez que esté activo, inicie sesión en el sistema de base de datos y verifique las extensiones activadas mediante la siguiente consulta.
SHOW oci.admin_enabled_extensions;
-
Cree la extensión pglogical mediante el siguiente comando.
CREATE EXTENSION pglogical;
A continuación, se muestra un ejemplo de salida de los comandos.
pglogical_source=> show oci.admin_enabled_extensions ; oci.admin_enabled_extensions ------------------------------ pglogical (1 row) pglogical_source=> create extension pglogical; CREATE EXTENSION
-
Repita el mismo procedimiento en la otra base de datos de la región (Mumbai) para activar la extensión pglogical.
Tarea 5: Configuración de la Base de Datos Origen
Ejecute la siguiente consulta para otorgar permisos en la base de datos de origen para activar la replicación lógica.
alter role psql with replication;
grant EXECUTE on FUNCTION pg_catalog.pg_replication_origin_session_reset() to psql ;
grant EXECUTE on FUNCTION pg_catalog.pg_replication_origin_session_setup to psql ;
grant all on FUNCTION pg_catalog.pg_replication_origin_session_setup to psql;
Tenga en cuenta que 'psql' es el usuario de ejemplo creado durante el proceso de configuración de la base de datos.
Tarea 6: Configuración de la replicación de extensión pglogical en la base de datos de origen
-
Cree el nodo de editor en la base de datos de origen.
SELECT pglogical.create_node(node_name := 'provider1',dsn :='host=primary.xxxxxxxxx.postgresql.us-ashburn-1.oci.oraclecloud.com port=5432 user=xxxx password=xxxxx dbname=pglogical_source');
node_name:
Especifique el nombre del editor que se va a crear en la base de datos de origen.host:
Introduzca el nombre de dominio completo (FQDN) de la base de datos origen.port_number:
Proporcione el puerto en el que se está ejecutando la base de datos origen.database_name:
Especifique la base de datos en la que se creará la publicación.
-
Incluya todas las tablas del esquema público en el juego de replicaciones por defecto.
SELECT pglogical.replication_set_add_all_tables('default', ARRAY['public']);
Tarea 7: Configurar la base de datos de destino
Ejecute la siguiente consulta para otorgar permisos en la base de datos de destino para activar la replicación lógica.
alter role psql with replication;
grant EXECUTE on FUNCTION pg_catalog.pg_replication_origin_session_reset() to psql ;
grant EXECUTE on FUNCTION pg_catalog.pg_replication_origin_session_setup to psql ;
grant all on FUNCTION pg_catalog.pg_replication_origin_session_setup to psql;
Tenga en cuenta que 'psql' es el usuario de ejemplo creado durante el proceso de configuración de la base de datos.
Después de otorgar los permisos necesarios, replique todos los objetos necesarios en la base de datos de destino para que coincidan con la estructura de la base de datos de origen.
Tarea 8: Configuración de la replicación pglogical en la base de datos de destino
-
Cree el nodo de suscriptor en la base de datos destino.
SELECT pglogical.create_node(node_name := 'subscriber1',dsn :='host=primary.xxxxxxx.postgresql.ap-mumbai-1.oci.oraclecloud.com port=5432 user=xxxx password=xxxxx dbname=pglogical_target');
node_name:
Defina el nombre del suscriptor en la base de datos destino.host:
Introduzca el nombre de dominio completo (FQDN) de la base de datos de destino.port_number:
Introduzca el puerto en el que se está ejecutando la base de datos de destino.database_name:
Proporcione el nombre de la base de datos en la que se creará la suscripción.
-
Cree la suscripción en el nodo de suscriptor, que iniciará los procesos de replicación y sincronización en segundo plano.
SELECT pglogical.create_subscription(subscription_name := 'subscription1',provider_dsn := 'host=primary.xxxxxxxx.postgresql.us-ashburn-1.oci.oraclecloud.com port=5432 user=xxxx password=xxxxxx dbname=pglogical_source sslmode=verify-full sslrootcert=/etc/opt/postgresql/ca-bundle.pem'); SELECT pglogical.wait_for_subscription_sync_complete('subscription1');
subscription_name:
Proporcione el nombre de la suscripción.host:
Proporcione el FQDN de la base de datos origen.port_number:
Proporcione el puerto en el que se está ejecutando la base de datos de destino.database_name:
Proporcione el nombre del origen de bases de datos.
Nota: Asegúrese de utilizar
sslmode=verify-full
ysslrootcert = /etc/opt/postgresql/ca-bundle.pem
en la cadena de creación de suscripciones para evitar fallos de conexión.
Tarea 9: Verificar el estado de la suscripción
Ejecute la siguiente sentencia para comprobar el estado de la suscripción en la base de datos de destino.
select * from pglogical.show_subscription_status();
Tarea 10: Verificación de que la Replicación de Datos está en Ejecución
Ejecute la siguiente sentencia para comprobar el estado de la replicación en la base de datos de origen.
SELECT * FROM pg_stat_replication;
Tarea 11: (opcional) Detener o iniciar la replicación
-
Puede desactivar la suscripción mediante el siguiente comando en la base de datos de destino.
select pglogical.alter_subscription_disable('subscription_name');
-
Puede activar la suscripción mediante el siguiente comando en la base de datos de destino.
select pglogical.alter_subscription_enable('subscription_name');
Nota: En
subscription_name
, introduzca el nombre de la suscripción creada en el destino.
Tarea 12: (opcional) borrado de la suscripción
Para borrar la suscripción en la base de datos de destino, ejecute el siguiente comando.
select pglogical.drop_subscription('subscription_name');
Nota: En
subscription_name
, introduzca el nombre de la suscripción creada en el destino.
Solución de problemas
-
Si se produce el siguiente error, indica que se deben agregar registros A en la VCN de destino. Para resolverlo, consulte la tarea 2.
ERROR: could not connect to the postgresql server: could not translate host name "primary.XXXXXXX.postgresql.xx-xxxxx-1.oci.oraclecloud.com" to address: Name or service not known
-
Para evitar cualquier fallo de certificación, especifique
sslmode=verify-full and sslrootcert=/etc/opt/postgresql/ca-bundle.pem
en la cadena al crear suscripciones.could not connect to the postgresql server: connection to server at "primary.XXXXXXX.postgresql.xx-xxxxx-1.oci.oraclecloud.com" , port 5432 failed: SSL error: certificate verify failed
Pasos Siguientes
En este tutorial se proporciona un enfoque completo para implantar una solución de recuperación ante desastres en todas las regiones de OCI Database with PostgreSQL con la extensión pglogical. Abarca el proceso de configuración, la replicación de datos y la resolución de problemas comunes.
Además, este método se puede aplicar a las actualizaciones de PostgreSQL, lo que garantiza un tiempo de inactividad mínimo y permite una migración total de la aplicación sin problemas una vez que la base de datos de destino está totalmente sincronizada con el origen.
Acuses de recibo
- Autor: Kaviya Selvaraj (personal técnico de miembros superiores)
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Cross-Region Synchronization of OCI Database with PostgreSQL using the pglogical Extension
G31229-03
Copyright ©2025, Oracle and/or its affiliates.