Note:

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:

Limitaciones

La extensión pglogica puede no ser adecuada para ciertos casos de uso debido a las siguientes limitaciones:

Para obtener más información, consulte Limitaciones y restricciones.

Objetivos

Requisitos

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

  1. Cree una VCN en la región de origen y la región de destino según sus necesidades.

  2. Cree gateways de enrutamiento dinámico (DRG) en las regiones de origen y destino según sus necesidades.

  3. 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.

  4. 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.

  5. 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)

  1. Cree una RPC de región de origen (SOR-RPC).

  2. Vaya a la página de detalles SOURCE DRG y haga clic en Asociaciones de conexión de intercambio de tráfico remoto.

  3. Haga clic en Crear conexión de intercambio de tráfico remota,

  4. 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.

  5. 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.

  1. Vaya a la página de detalles SOURCE DRG y haga clic en Asociaciones de conexión de intercambio de tráfico remoto.

  2. 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.

  3. 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.

  4. 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

  1. Configure la tabla de rutas en Source-VCN para enviar tráfico al CIDR de la subred privada Target-VCN.

  2. Vaya a la página de detalles Source-VCN y haga clic en Tablas de rutas.

  3. En la lista de tablas de rutas, haga clic en tabla de rutas para la subred privada-VCN de origen.

  4. 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.

  5. 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

  1. 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 subred Source-VCN-private

  2. 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.

  3. 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.

  4. 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 subred Source-VCN-private a la subred Target-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.

  1. Cambie a la región de destino (Mumbai), introduzca DNS en la barra de búsqueda y seleccione Vistas privadas.

  2. Se mostrará la lista de VCN de la región actual. Seleccione la VCN en la que ya está configurado el DRG.

  3. Aparecerá la lista de zonas de DNS, incluido el FQDN del sistema de base de datos en Bombay.

  4. Agregue una entrada para el sistema de base de datos remoto.

    1. Haga clic en Crear zona.

      image

    2. En Zone Name (Nombre de zona), introduzca el FQDN del sistema de base de datos en la otra región (Ashburn).

    3. Haga clic en Crear para agregar la nueva entrada de zona.

  5. Configure la entrada de registro A.

    1. Abra la zona recién creada, haga clic en Gestionar registros y seleccione Agregar registro.

    2. 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.

  6. 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.

  1. 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.

    image

  2. Se le redirigirá al archivo de configuración completo. Seleccione Copiar Configuración para continuar, que mostrará la siguiente página.

    image

  3. 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 y track_commit_timestamp y Valor de variable como logical y 1 respectivamente.

  4. En Configurar extensiones, seleccione pglogical como extensiones PostgreSQL.

  5. Haga clic en Crear para generar el archivo de configuración.

    image

  6. 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.

  7. El sistema de base de datos mostrará el estado Actualizando. Espere hasta que se convierta en Activo antes de continuar.

  8. 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;
    
  9. 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
    
  10. 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

  1. 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.
  2. 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

  1. 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.
  2. 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 y sslrootcert = /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

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

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

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.