Remarques :

Synchronisation inter-région d'OCI Database with PostgreSQL à l'aide de l'extension pglogical

Introduction

L'extension pglogical permet la réplication logique sur plusieurs instances Oracle Cloud Infrastructure (OCI) Database with PostgreSQL. Il prend en charge la réplication PostgreSQL entre plusieurs versions et facilite la synchronisation des données entre les bases de données déployées sur les domaines de disponibilité régionaux et locaux au sein d'OCI. En outre, il permet la réplication entre les bases de données hébergées sur le service PostgreSQL géré d'un fournisseur multicloud et les instances PostgreSQL de communauté autogérées, qu'elles soient exécutées dans le cloud ou sur site, offrant une solution de réplication hautement flexible et interopérable.

Grâce à un modèle de publication/souscription, pglogical permet à la réplication de diffusion en continu logique de répliquer les modifications apportées aux tables, séquences et autres objets d'un éditeur vers un abonné. Cette extension est idéale pour divers cas d'utilisation, notamment :

Limites

L'extension pglogique peut ne pas convenir à certains cas d'utilisation en raison des limitations suivantes :

Pour plus d'informations, reportez-vous à Limites et restrictions.

Objectifs

Prérequis

Tâche 1 : établir la communication entre les bases de données

Pour vous connecter au système de base de données entre les régions, l'appairage VCN doit être configuré.

Pour créer un appairage VCN à l'aide de la passerelle de routage dynamique (DRG), suivez les sous-tâches suivantes :

Tâche 1.1 : attachement de DRG aux réseaux cloud virtuels

  1. Créez un VCN dans la région source et la région cible selon vos besoins.

  2. Créez des passerelles de routage dynamique (DRG) dans les régions source et cible selon vos besoins.

  3. Pour attacher le DRG au VCN, sélectionnez votre DRG dans la région source. Cliquez sur Pièces jointes VCN et sur Créer un attachement de réseau cloud virtuel.

  4. Sur la page Créer une pièce jointe VCN, entrez le nom de la pièce jointe et sélectionnez VCN-A (VCN de région source), puis cliquez sur Créer une pièce jointe VCN.

  5. Répétez les mêmes étapes pour attacher votre VCN cible.

Pour plus d'informations, reportez-vous à Passerelles d'acheminement dynamique.

Tâche 1.2 : Créer une connexion d'appairage à distance (RPC)

  1. Créez le RPC de région source (SOR-RPC).

  2. Accédez à la page de détails SOURCE DRG et cliquez sur Pièces jointes de connexion d'appairage à distance.

  3. Cliquez sur Créer une connexion d'appairage à distance,

  4. Sur la page Créer une connexion d'appairage distant, entrez le nom de la connexion et sélectionnez le compartiment, puis cliquez sur Créer une connexion d'appairage distant.

  5. Pour créer un RPC de région cible (TAR-RPC), répétez la procédure ci-dessus pour créer le RPC de région cible.

Tâche 1.3 : Etablir une connexion RPC

Etablissez la connexion entre la région Source et la région Cible via la connexion SOR-RPC.

  1. Accédez à la page de détails SOURCE DRG et cliquez sur Pièces jointes de connexion d'appairage à distance.

  2. Affichez les détails de SOR-RPC en cliquant sur le nom de la connexion dans la colonne Connexion d'appairage à distance.

  3. Sur la page de détails de la connexion, cliquez sur Etablir une connexion, entrez le nom de la connexion et sélectionnez le compartiment.

  4. Sur la page Etablir une connexion, sélectionnez la région Nom de votre région cible et entrez l'OCID du RPC cible (TAR-RPC). Une fois la connexion établie, l'état du RPC devient PEERED.

    Par conséquent, l'état de l'appairage TAR-RPC devient également PEERED.

Tâche 1.4 : configuration de la table de routage dans les réseaux cloud virtuels pour envoyer le trafic destiné à la pièce jointe DRG

  1. Configurez la table de routage dans Source-VCN pour envoyer le trafic vers le CIDR de sous-réseau privé Target-VCN.

  2. Accédez à la page de détails Source-VCN et cliquez sur Tables de routage.

  3. Sous la liste des tables de routage, cliquez sur Table de routage pour le sous-réseau privé-Source-VCN.

  4. Sur la page de la table de routage, cliquez sur Ajouter des règles de routage et entrez les informations de règle de routage en fonction de vos besoins.

  5. Pour configurer la table de routage dans Target-VCN afin d'envoyer le trafic vers le CIDR de sous-réseau privé du VCN source, répétez les étapes ci-dessus pour configurer la table de routage pour le sous-réseau privé du VCN source.

Tâche 1.5 : ajout d'une règle entrante de sécurité pour autoriser le trafic entre les sous-réseaux privés des réseaux cloud virtuels via DRG

  1. Ajout d'une règle entrante à la liste de sécurité pour le sous-réseau privé-source-VCN du VCN source pour autoriser le trafic provenant du sous-réseau Target-VCN-private vers le sous-réseau Source-VCN-private

  2. Accédez à la page de détails Source-VCN, puis cliquez sur Liste de sécurité et Liste de sécurité pour le sous-réseau privé-Source-VCN.

  3. Sur la page Liste de sécurité, cliquez sur Ajouter des règles entrantes et entrez les informations de règle entrante en fonction de vos besoins.

  4. Pour ajouter une règle entrante à la liste de sécurité pour le sous-réseau privé-Cible-VCN de Target-VCN afin d'autoriser le trafic provenant du sous-réseau Source-VCN-private vers le sous-réseau Target-VCN-private, répétez les mêmes étapes que celles effectuées ci-dessus pour ajouter la règle entrante pour le VCN cible, mais utilisez la règle entrante appropriée.

Tâche 1.6 : Tests et validation de la connectivité des bases de données inter-région

Connectez-vous à Source-VM pour vérifier la connectivité à la base de données cible et validez simultanément la connectivité de la base de données source à partir de la machine virtuelle cible afin de garantir une communication bidirectionnelle.

Tâche 2 : configuration de l'entrée d'enregistrement A

Une entrée d'enregistrement A doit être configurée pour résoudre le nom de domaine qualifié complet (FQDN) du système de base de données entre les régions. Dans ce tutoriel, la région de Mumbai sert de région cible.

  1. Basculez vers la région cible (Mumbai), entrez DNS dans la barre de recherche et sélectionnez Vues privées.

  2. La liste VCN de la région en cours s'affiche. Sélectionnez le VCN où DRG est déjà configuré.

  3. La liste des zones DNS apparaîtra, y compris le nom de domaine qualifié complet du système de base de données à Mumbai.

  4. Ajoutez une entrée pour le système de base de données distant.

    1. Cliquez sur Créer une zone.

      image

    2. Dans Nom de zone, entrez le nom de domaine qualifié complet du système de base de données dans l'autre région (Ashburn).

    3. Cliquez sur Créer pour ajouter la nouvelle entrée de zone.

  5. Configurez l'entrée d'enregistrement A.

    1. Ouvrez la zone que vous venez de créer, cliquez sur Gérer les enregistrements et sélectionnez Ajouter un enregistrement.

    2. Saisissez les informations suivantes .

      • Nom : entrez un nom.

      • Type : sélectionnez A (IPv4 Address).

      • TTL : entrez 3600 secondes (modifiez en fonction des besoins de votre application).

      • Mode RDATA : sélectionnez De base.

      • Adresse : entrez l'adresse IP de l'adresse principale du système de base de données dans l'autre région.

  6. Cliquez sur Enregistrer les modifications, puis sur Publier les modifications pour appliquer la configuration.

    Grâce à cette configuration, le système de base de données B (Mumbai) peut désormais résoudre et se connecter au système de base de données A (Ashburn) à l'aide du nom de domaine qualifié complet, ce qui permet une communication de base de données inter-région transparente.

Tâche 3 : créer des systèmes de base de données dans toute la région

Déployez une base de données PostgreSQL dans les régions d'OCI pour établir une stratégie robuste de récupération après sinistre. Pour plus d'informations sur la création d'une base de données PostgreSQL dans OCI, reportez-vous à Création d'un système de base de données.

Tâche 4 : activer l'extension pglogique dans toute la région

Ce tutoriel illustre l'implémentation de la récupération après sinistre en désignant Ashburn comme région source et Mumbai comme région cible.

  1. Dans la région Ashburn, connectez-vous à la console OCI, accédez à la base de données PostgreSQL, sélectionnez votre système de base de données et modifiez les paramètres de configuration en accédant au fichier de configuration.

    image

  2. Vous allez être redirigé vers le fichier de configuration complet. Sélectionnez Copier la configuration pour continuer, ce qui affichera la page suivante.

    image

  3. Saisissez les informations requises en fonction de vos spécifications. Ensuite, accédez à Variables utilisateur (lecture/écriture), cliquez sur Ajouter une autre variable, puis sélectionnez Nom de variable comme wal_level et track_commit_timestamp et Valeur de variable comme logical et 1 respectivement.

  4. Dans Configurer les extensions, sélectionnez pglogical en tant qu'extensions PostgreSQL.

  5. Cliquez sur Créer pour générer le fichier de configuration.

    image

  6. Accédez à votre système de base de données, sélectionnez Modifier sous Configuration, puis appliquez la configuration précédemment créée au système de base de données.

  7. Le système de base de données affiche l'état Mise à jour. Attendez qu'il devienne actif avant de continuer.

  8. Une fois actif, connectez-vous à votre système de base de données et vérifiez les extensions activées à l'aide de la requête suivante.

    SHOW oci.admin_enabled_extensions;
    
  9. Créez l'extension pglogical à l'aide de la commande suivante.

    CREATE EXTENSION pglogical;
    

    Ci-dessous figure un exemple de sortie des commandes.

    pglogical_source=> show oci.admin_enabled_extensions ;
    oci.admin_enabled_extensions
    ------------------------------
    pglogical
    (1 row)
    
    pglogical_source=> create extension pglogical;
    CREATE EXTENSION
    
  10. Répétez la même procédure dans l'autre base de données de région (Mumbai) pour activer l'extension pglogique.

Tâche 5 : configurer la base de données source

Exécutez la requête suivante pour accorder des droits d'accès à la base de données source afin d'activer la réplication logique.

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;

Veuillez noter que 'psql' est l'exemple d'utilisateur créé lors du processus de configuration de la base de données.

Tâche 6 : configurer la réplication d'extension pglogical dans la base de données source

  1. Créez le noeud d'éditeur sur la base de données source.

    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: Indiquez le nom de l'éditeur à créer sur la base de données source.
    • host: Entrez le nom de domaine qualifié complet de la base de données source.
    • port_number: Indiquez le port sur lequel la base de données source est exécutée.
    • database_name: Indiquez la base de données dans laquelle la publication sera créée.
  2. Incluez toutes les tables du schéma public dans le jeu de réplication par défaut.

    SELECT pglogical.replication_set_add_all_tables('default', ARRAY['public']);
    

Tâche 7 : Configurer la base de données cible

Exécutez la requête suivante pour accorder des droits d'accès à la base de données cible afin d'activer la réplication logique.

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;

Veuillez noter que 'psql' est l'exemple d'utilisateur créé lors du processus de configuration de la base de données.

Après avoir accordé les droits d'accès nécessaires, répliquez tous les objets requis dans la base de données cible pour qu'ils correspondent à la structure de la base de données source.

Tâche 8 : configurer la réplication pglogique dans la base de données cible

  1. Créez le noeud d'abonné sur la base de données cible.

    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: Définissez le nom de l'abonné sur la base de données cible.
    • host: Entrez le nom de domaine qualifié complet de la base de données cible.
    • port_number: Entrez le port sur lequel la base de données cible est exécutée.
    • database_name: Fournissez le nom de la base de données dans laquelle l'abonnement sera créé.
  2. Créez l'abonnement sur le noeud de l'abonné, qui lancera les processus de synchronisation et de réplication en arrière-plan.

    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: Indiquez le nom de l'abonnement.
    • host: Indiquez le nom de domaine qualifié complet de la base de données source.
    • port_number: Indiquez le port sur lequel la base de données cible est exécutée.
    • database_name: Indiquez le nom des bases de données source.

    Remarque : veillez à utiliser sslmode=verify-full et sslrootcert = /etc/opt/postgresql/ca-bundle.pem dans la chaîne de création d'abonnement pour éviter tout échec de connexion.

Tâche 9 : vérifier le statut de l'abonnement

Exécutez l'instruction suivante pour vérifier le statut de votre abonnement sur la base de données cible.

select * from pglogical.show_subscription_status();

Tâche 10 : vérifier que la duplication de données est en cours d'exécution

Exécutez l'instruction suivante pour vérifier le statut de la réplication sur la base de données source.

SELECT * FROM pg_stat_replication;

Tâche 11 : (facultatif) arrêter ou démarrer la réplication

Remarque : dans subscription_name, entrez le nom de l'abonnement créé sur la cible.

Tâche 12 : (Facultatif) Suppression de l'abonnement

Pour supprimer l'abonnement sur la base de données cible, exécutez la commande suivante.

select pglogical.drop_subscription('subscription_name');

Remarque : dans subscription_name, entrez le nom de l'abonnement créé sur la cible.

Dépannage

Etapes suivantes

Ce tutoriel fournit une approche complète de l'implémentation d'une solution de récupération après sinistre entre les régions dans OCI Database with PostgreSQL à l'aide de l'extension pglogical. Il traite du processus de configuration, de la réplication des données et de la résolution des problèmes courants.

En outre, cette méthode peut être appliquée aux mises à niveau PostgreSQL, ce qui garantit un temps d'arrêt minimal et permet un basculement fluide des applications une fois que la base de données cible est entièrement synchronisée avec la source.

Accusés de réception

Ressources de formation supplémentaires

Explorez d'autres ateliers sur le site docs.oracle.com/learn ou accédez à d'autres contenus d'apprentissage gratuits sur le canal Oracle Learning YouTube. En outre, visitez le site education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

Pour obtenir de la documentation sur le produit, consultez Oracle Help Center.