Note :

Synchronisation inter-régions de la base de données OCI Database with PostgreSQL à l'aide de l'extension pglogique

Présentation

L'extension pglogique permet la réplication logique sur plusieurs bases de données Oracle Cloud Infrastructure (OCI) avec des instances PostgreSQL. Il prend en charge la réplication PostgreSQL entre versions et facilite la synchronisation des données entre les bases de données déployées dans 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é par plusieurs fournisseurs de nuage et les instances PostgreSQL de la communauté autogérée, qu'elles soient exécutées dans le nuage ou sur place, offrant une solution de réplication hautement flexible et interopérable.

À l'aide d'un modèle de publication-abonnement, pglogical permet la réplication en continu logique pour répliquer les modifications apportées aux tables, aux séquences et aux autres objets d'un éditeur vers un abonné. Cette extension est idéale pour une variété de cas d'utilisation, notamment :

Limitations

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

Pour plus d'informations, voir Limites et restrictions.

Objectifs

Conditions requises

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

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

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

Tâche 1.1 : Attacher une passerelle DRG à des réseaux en nuage 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 une passerelle DRG au VCN, sélectionnez votre passerelle DRG dans la région source. Cliquez sur Attachements de VCN et sur Créer un attachement de réseau en nuage virtuel.

  4. Dans la page Créer un attachement de VCN, entrez le nom de l'attachement et sélectionnez VCN-A (réseau VCN de la région source), puis cliquez sur Créer un attachement de VCN.

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

Pour plus d'informations, voir Passerelles de routage dynamique.

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

  1. Créez une connexion d'appairage distant pour la région source (SOR-RPC).

  2. Allez à la page de détails SOURCE DRG et cliquez sur Attachements de connexion d'appairage distant.

  3. Cliquez sur Créer une connexion d'appairage distant.

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

  5. Pour créer une connexion d'appairage distant pour la région cible (TAR-RPC), répétez la procédure ci-dessus pour créer la connexion d'appairage distant pour la région cible.

Tâche 1.3 : Établir une connexion RPC

Établissez la connexion de la région source à la région cible au moyen de la connexion SOR-RPC.

  1. Allez à la page de détails SOURCE DRG et cliquez sur Attachements de connexion d'appairage distant.

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

  3. Dans la page des détails de la connexion, cliquez sur Établir la connexion, entrez le nom de la connexion et sélectionnez un compartiment.

  4. Dans la page Établir la connexion, sélectionnez la région votre nom de région cible et entrez l'OCID de la connexion d'appairage distant cible (TAR-RPC). Lorsque la connexion est établie, l'état de la connexion d'appairage distant passe à PÉRÉ.

    Par conséquent, l'état d'appairage TAR-RPC passe également à PEERED.

Tâche 1.4 : Configurer la table de routage dans les réseaux en nuage virtuels pour envoyer le trafic destiné à un attachement DRG

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

  2. Allez à 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 private subnet-Source-VCN.

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

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

Tâche 1.5 : Ajouter une règle de trafic entrant de sécurité pour autoriser le trafic entre les sous-réseaux privés des réseaux en nuage virtuels au moyen de la passerelle DRG

  1. Ajouter une règle de trafic entrant à 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. Allez à la page de détails Source-VCN et cliquez sur Liste de sécurité et Liste de sécurité pour le sous-réseau privé - Source-VCN.

  3. Dans la page Liste de sécurité, cliquez sur Ajouter des règles de trafic entrant et entrez les informations sur les règles de trafic entrant selon vos besoins.

  4. Pour ajouter une règle de trafic entrant à 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 étapes ci-dessus pour ajouter la règle de trafic entrant pour le VCN cible, mais utilisez la règle de trafic entrant appropriée.

Tâche 1.6 : Test et validation de la connectivité de base 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 d'assurer une communication bidirectionnelle.

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

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

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

  2. La liste des VCN de la région courante sera affichée. Sélectionnez le VCN où la passerelle DRG est déjà configurée.

  3. La liste des zones DNS s'affiche, y compris le nom de domaine complet du système de base de données à Bombay.

  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 la zone, entrez le nom de domaine 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 A-record.

    1. Ouvrez la zone nouvellement créée, cliquez sur Gérer les enregistrements et sélectionnez Ajouter un enregistrement.

    2. Entrez les informations suivantes .

      • Nom : Entrez un nom.

      • Type : Sélectionnez A (adresse IPv4).

      • Ligne de durée de vie : Entrez 3600 secondes (modifiez-les en fonction des exigences de votre application).

      • Mode RDATA : Sélectionnez De base.

      • Adresse : Entrez l'adresse IP du point d'extrémité principal 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 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 entre 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, voir 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 montre la mise en oeuvre de la reprise 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, naviguez jusqu'à 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. Entrez les informations requises en fonction de vos spécifications. Puis, naviguez jusqu'à Variables d'utilisateur (lecture/écriture), cliquez sur Ajouter une autre variable et sélectionnez Nom de la 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 comme extensions PostgreSQL.

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

    Image

  6. Naviguez jusqu'à votre système de base de données, sélectionnez Modifier sous Configuration et appliquez la configuration créée précédemment à votre système de base de données.

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

  8. Une fois actives, connectez-vous au système de base de données et vérifiez les extensions activées à l'aide de l'interrogation suivante.

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

    CREATE EXTENSION pglogical;
    

    Voici 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 l'interrogation suivante pour accorder des autorisations sur 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 pglogique dans la base de données source

  1. Créez le noeud Publisher dans 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: Spécifiez le nom de l'éditeur à créer dans la base de données source.
    • host: Entrez le nom de domaine 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: Spécifiez 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 l'interrogation suivante pour accorder des autorisations sur 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 autorisations 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é dans 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é dans la base de données cible.
    • host: Entrez le nom de domaine 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: Indiquez le nom de la base de données dans laquelle l'abonnement sera créé.
  2. Créez l'abonnement sur le noeud d'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: Fournir le nom de domaine 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 de la base de données source.

    Note : 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'énoncé suivant pour vérifier le statut de votre abonnement dans la base de données cible.

select * from pglogical.show_subscription_status();

Tâche 10 : Vérifier que la réplication des données est en cours d'exécution

Exécutez l'instruction suivante pour vérifier le statut de votre 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

Note : Dans subscription_name, entrez le nom de l'abonnement créé à la cible.

Tâche 12 : (Facultatif) Supprimer l'abonnement

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

select pglogical.drop_subscription('subscription_name');

Note : Dans subscription_name, entrez le nom de l'abonnement créé à la cible.

Dépannage

Étapes suivantes

Ce tutoriel présente une approche complète pour mettre en oeuvre une solution de reprise après sinistre entre des régions dans OCI Database with PostgreSQL à l'aide de l'extension pglogique. Il couvre le processus de configuration, la réplication des données et le dépannage 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 une mise en service fluide de l'application une fois que la base de données cible est entièrement synchronisée avec la source.

Remerciements

Ressources d'apprentissage supplémentaires

Explorez d'autres laboratoires sur le site docs.oracle.com/learn ou accédez à plus de contenu d'apprentissage gratuit sur le canal Oracle Learning YouTube. De plus, visitez education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

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