Remarques :
- Ce tutoriel nécessite l'accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction à Oracle Cloud Infrastructure Free Tier.
- Il utilise des exemples de valeur pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. Lorsque vous terminez votre atelier, remplacez ces valeurs par celles propres à votre environnement cloud.
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 :
-
Réplication complète de la base de données.
-
Mises à niveau de version majeures (avec certaines limitations).
-
Réplication de données de schéma, LDD (langage de définition de données), de séquences et de table.
-
Capture de données de modification (CDC).
-
Agrégation et fusion de données à partir de plusieurs serveurs en amont.
Limites
L'extension pglogique peut ne pas convenir à certains cas d'utilisation en raison des limitations suivantes :
-
La réplication simultanée de plusieurs bases de données n'est pas prise en charge.
-
Les tables
UNLOGGED
etTEMPORARY
ne peuvent pas être répliquées. -
La migration des métadonnées de base de données n'est pas prise en charge.
-
La réplication LDD automatique n'est pas disponible.
-
La réplication entre bases de données avec un codage différent n'est pas prise en charge.
-
Les modifications apportées aux objets LOB ne peuvent pas être décodées, ce qui empêche leur réplication. Envisagez d'utiliser le type de données bytea pour stocker des données binaires volumineuses au lieu de LOB si possible.
Pour plus d'informations, reportez-vous à Limites et restrictions.
Objectifs
- Implémentez l'extension pglogique inter-région entre deux régions OCI, en démontrant spécifiquement la réplication entre Ashburn et Mumbai. Cette configuration peut également être adaptée pour la réplication intra-région au sein d'une seule région OCI.
Prérequis
-
Accès à une location OCI.
-
Hôte OCI Bastion (image OCI Compute).
-
Créez un réseau cloud virtuel (VCN) dans chaque région.
-
L'extension pglogical doit être installée sur les bases de données source et cible.
-
Cohérence de structure de table : les tables du fournisseur et de l'abonné doivent avoir les mêmes noms, se trouver dans le même schéma et avoir des colonnes identiques avec des types de données correspondants.
-
Compatibilité des contraintes : les contraintes
CHECK
etNOT NULL
doivent être identiques ou plus permissives pour l'abonné que pour le fournisseur. -
Exigence de clé primaire : les tables doivent avoir la même valeur
PRIMARY KEYs
. L'ajout de contraintesUNIQUE
supplémentaires au-delà de la clé primaire n'est pas recommandé.
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
-
Créez un VCN dans la région source et la région cible selon vos besoins.
-
Créez des passerelles de routage dynamique (DRG) dans les régions source et cible selon vos besoins.
-
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.
-
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.
-
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)
-
Créez le RPC de région source (
SOR-RPC
). -
Accédez à la page de détails
SOURCE DRG
et cliquez sur Pièces jointes de connexion d'appairage à distance. -
Cliquez sur Créer une connexion d'appairage à distance,
-
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.
-
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
.
-
Accédez à la page de détails
SOURCE DRG
et cliquez sur Pièces jointes de connexion d'appairage à distance. -
Affichez les détails de
SOR-RPC
en cliquant sur le nom de la connexion dans la colonne Connexion d'appairage à distance. -
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.
-
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
-
Configurez la table de routage dans
Source-VCN
pour envoyer le trafic vers le CIDR de sous-réseau privéTarget-VCN
. -
Accédez à la page de détails
Source-VCN
et cliquez sur Tables de routage. -
Sous la liste des tables de routage, cliquez sur Table de routage pour le sous-réseau privé-Source-VCN.
-
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.
-
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
-
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éseauSource-VCN-private
-
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. -
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.
-
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éseauSource-VCN-private
vers le sous-réseauTarget-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.
-
Basculez vers la région cible (Mumbai), entrez DNS dans la barre de recherche et sélectionnez Vues privées.
-
La liste VCN de la région en cours s'affiche. Sélectionnez le VCN où DRG est déjà configuré.
-
La liste des zones DNS apparaîtra, y compris le nom de domaine qualifié complet du système de base de données à Mumbai.
-
Ajoutez une entrée pour le système de base de données distant.
-
Cliquez sur Créer une zone.
-
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).
-
Cliquez sur Créer pour ajouter la nouvelle entrée de zone.
-
-
Configurez l'entrée d'enregistrement A.
-
Ouvrez la zone que vous venez de créer, cliquez sur Gérer les enregistrements et sélectionnez Ajouter un enregistrement.
-
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.
-
-
-
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.
-
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.
-
Vous allez être redirigé vers le fichier de configuration complet. Sélectionnez Copier la configuration pour continuer, ce qui affichera la page suivante.
-
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
ettrack_commit_timestamp
et Valeur de variable commelogical
et1
respectivement. -
Dans Configurer les extensions, sélectionnez
pglogical
en tant qu'extensions PostgreSQL. -
Cliquez sur Créer pour générer le fichier de configuration.
-
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.
-
Le système de base de données affiche l'état Mise à jour. Attendez qu'il devienne actif avant de continuer.
-
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;
-
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
-
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
-
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.
-
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
-
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éé.
-
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
etsslrootcert = /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
-
Vous pouvez désactiver l'abonnement à l'aide de la commande suivante sur la base de données cible.
select pglogical.alter_subscription_disable('subscription_name');
-
Vous pouvez activer l'abonnement à l'aide de la commande suivante sur la base de données cible.
select pglogical.alter_subscription_enable('subscription_name');
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
-
Si l'erreur suivante se produit, elle indique que des enregistrements A doivent être ajoutés dans le VCN cible. Pour résoudre le problème, reportez-vous à la tâche 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
-
Pour éviter tout échec de certification, indiquez
sslmode=verify-full and sslrootcert=/etc/opt/postgresql/ca-bundle.pem
dans la chaîne lors de la création des abonnements.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
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
- Auteur - Kaviya Selvaraj (équipe technique senior)
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.
Cross-Region Synchronization of OCI Database with PostgreSQL using the pglogical Extension
G31231-03
Copyright ©2025, Oracle and/or its affiliates.