Remarques :
- Ce tutoriel nécessite un accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction au niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeur pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. A la fin de l'exercice, remplacez ces valeurs par des valeurs propres à votre environnement cloud.
Automatiser la permutation et le basculement pour la base de données PostgreSQL avec Oracle Cloud Infrastructure Full Stack Disaster Recovery
Introduction
Oracle Cloud Infrastructure Full Stack Disaster Recovery (OCI Full Stack DR) orchestre la transition du calcul, de la base de données et des applications entre les régions Oracle Cloud Infrastructure (OCI) du monde entier en un seul clic. Les clients peuvent automatiser les étapes nécessaires pour récupérer un ou plusieurs systèmes d'entreprise sans repenser ou modifier l'architecture de l'infrastructure, des bases de données ou des applications existantes et sans avoir besoin de serveurs de gestion ou de conversion spécialisés.
OCI Full Stack DR est un service hautement flexible. Nous pouvons tirer parti des groupes de plans définis par l'utilisateur dans le plan de récupération après sinistre pour gérer les opérations de récupération après sinistre de bucket OCI Object Storage.
Architecture de déploiement
Remarque : la région principale est Francfort et la région de récupération après sinistre est Londres.
Objectifs
- Automatisez la permutation et le basculement de la base de données PostgreSQL avec OCI Full Stack DR.
Prérequis
-
Privilèges d'administrateur ou configuration des stratégies Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) requises pour la récupération après sinistre de la pile complète OCI. Pour plus d'informations, reportez-vous à Configuration de stratégies Identity and Access Management (IAM) pour utiliser la récupération après sinistre OCI Full Stack et à Stratégies pour la récupération après sinistre OCI Full Stack.
-
Vous devez activer le module d'extension Exécuter la commande de l'instance de calcul dans la base de données principale et de secours car OCI Full Stack DR exécutera les commandes
sudo
pour monter et démonter les commandes lors de la permutation. Pour plus d'informations sur l'exécution de commandes sur l'instance OCI Compute, reportez-vous à Exécution de commandes sur l'instance OCI Compute. -
Utilisez la commande d'exécution avec OCI Full Stack DR. Pour plus d'informations, reportez-vous à Appel de scripts personnalisés à l'aide de la commande d'exécution avec Oracle Cloud Infrastructure Full Stack Disaster Recovery.
-
Etablissez une connexion d'appairage à distance (RPC) entre deux passerelles de routage dynamique (DRG) situées dans les mêmes locations. Pour plus d'informations, reportez-vous à Appairage VCN à distance via un DRG mis à niveau.
-
Assurez-vous que les deux ordinateurs peuvent communiquer sur le port PostgreSQL
5432
pour la réplication de base de données, en configurant la liste de sécurité ou le groupe de sécurité réseau correspondant. -
Utilisez Bastion en tant que service ou bastion pour vous connecter aux serveurs PostegreSQL.
-
Bucket OCI Object Storage (un dans chaque région).
Tâche 1 : installer et configurer PostgreSQL
-
Pour installer PostgreSQL, connectez-vous à l'hôte à l'aide de votre client SSH favori et exécutez la commande suivante.
sudo dnf install -y postgresql postgresql-server postgresql-contrib sudo /usr/bin/postgresql-setup initdb sudo systemctl enable postgresql sudo systemctl start postgresql
-
Activez le pare-feu Linux pour recevoir les connexions.
sudo firewall-cmd --zone=public --add-port=5432/tcp --permanent sudo firewall-cmd --reload
-
Modifiez le fichier
postgresql.conf
(qui se trouve à xxxxx) pour autoriser la connexion et modifiez les paramètreswal
comme suit.... listen_addresses = '*' ... wal_level = logical wal_log_hints = on ...
-
Connectez-vous à la base de données, puis créez l'utilisateur de réplication.
sudo su postgres psql
CREATE ROLE replica_user WITH REPLICATION LOGIN PASSWORD 'YourUserPassword';
-
Ajoutez cet utilisateur au fichier
pg_hba.conf
(qui se trouve à xxxxx).host all all all md5 host replication replica_user <IP Host 1> md5 host replication replica_user <IP Host 2> md5
-
Redémarrez la base de données PostgreSQL pour appliquer les modifications.
sudo systemctl restart postgresql
-
Répétez ce processus sur le deuxième serveur.
Tâche 2 : répliquer la base de données PostgreSQL
Dans cette tâche, nous allons configurer la réplication de base de données PostgreSQL native.
-
Connectez-vous à la base de données principale et créez l'emplacement de réplique.
sudo su postgres psql
select pg_create_physical_replication_slot('replica_0');
-
Connectez-vous à la base de données secondaire et exécutez les commandes suivantes pour créer la réplication.
sudo systemctl stop postgresql sudo rm -rv /var/lib/pgsql/data/ sudo pg_basebackup -d "host=<IP Host 1> port=5432 user=replica_user password=YourUserPassword" -w -X stream -S replica_0 -v -R -W -D /var/lib/pgsql/data/ --no-password sudo chown postgres -R /var/lib/pgsql/data/ sudo systemctl start postgresql
-
Vérifiez que la réplication circule sur la base de données principale.
select * from pg_stat_replication;
Vous devriez être en mesure de voir une ligne avec le processus de streaming.
Tâche 3 : créer le plan de permutation
Tâche 3.1 : créer et associer des groupes de protection de récupération après sinistre (DRPG)
-
Dans la région principale (Francfort), cliquez sur le menu Hamburger, accédez à Migration et récupération après sinistre, à Récupération après sinistre, à Groupe de protection de récupération après sinistre et à Créer un groupe de protection de récupération après sinistre.
-
Dans la région de secours (Londres), cliquez sur le menu Hamburger, accédez à Migration et récupération après sinistre, à Récupération après sinistre, à Groupe de protection de récupération après sinistre et à Créer un groupe de protection de récupération après sinistre.
-
Dans la région principale (Francfort), entrez les informations suivantes et cliquez sur Associer.
- Rôle :
Primary
. - Région homologue :
UK South (London)
. - Groupe de protection de récupération après sinistre homologue :
postgresql-lon
.
- Rôle :
Tâche 3.2 : Ajouter des membres au DRPG principal et de secours
-
Dans le DRPG principal (
postgresql-fra
), sélectionnez Membres et ajoutez la machine virtuelle de calcul (postgresql01
) en tant que membre.Remarque : lors de l'ajout du calcul en tant que membre, sélectionnez Instance sans déplacement dans le type d'instance de calcul, car nous disposons d'une configuration actif-passif pour la base de données PostgreSQL.
-
Dans le DRPG de secours (
postgresql-lon
), sélectionnez Membres et ajoutez la machine virtuelle de calcul (postgresql02
) en tant que membre.Remarque : lors de l'ajout de Compute en tant que membres, sélectionnez Instance sans déplacement dans le type d'instance de calcul, car nous disposons d'une configuration actif-passif pour la base de données PostgreSQL.
Tâche 3.3 : créer un plan de permutation dans le DRPG de secours (Londres)
Plan de permutation : type de plan de récupération après sinistre qui effectue une transition planifiée des services du DRPG principal vers le DRPG de secours.
-
Créez un plan de permutation dans le DRPG de secours
postgresql-lon
. -
Sélectionnez Plans et cliquez sur Créer un plan.
-
Entrez
postgresql-switchover-frankfurt-london
dans le champ Nom et sélectionnezSwitchover (planned)
dans le champ Type de plan. -
Cliquez sur Créer.
Remarque : veillez à créer le plan de permutation à partir du DRPG de secours (Londres).
Tâche 3.4 : Personnaliser le plan de permutation avec différents groupes de plans définis par l'utilisateur
Nous avons ajouté Compute (instance non mobile) en tant que membres dans les deux groupes de protection de récupération après sinistre. Nous devons personnaliser le plan de permutation avec d'autres groupes de plans définis par l'utilisateur. Nous devons également créer les scripts bash suivants et les télécharger vers OCI Object Storage afin de pouvoir les appeler lors de la permutation.
-
stop_postgresql.sh
.#!/bin/bash sudo systemctl stop postgresql
-
promote_postgresql.sh
.#!/bin/bash sudo -u postgres /usr/bin/pg_ctl promote -D /var/lib/pgsql/data/ sudo -u postgres psql -c "select pg_create_physical_replication_slot('replica_1');"
-
change_replication_direction.sh
.#!/bin/bash sudo rm -rv /var/lib/pgsql/data/ sudo sudo pg_basebackup -d "host=<IP Host 2> port=5432 user=replica_user password=YourUserPassword" -w -X stream -S replica_1 -v -R -W -D /var/lib/pgsql/data/ --no-password sudo chown postgres -R /var/lib/pgsql/data/ sudo systemctl start postgresql sudo -u postgres psql -c "select pg_create_physical_replication_slot('replica_0');"
Remarque : ces scripts doivent être téléchargés vers le bucket dans la région de Londres.
Un workflow standard pour la permutation de récupération après sinistre est le suivant :
-
Arrêter la base de données PostgreSQL dans la région Francfort : le groupe de plans comporte des étapes permettant d'arrêter la base de données PostgreSQL dans la région Francfort.
-
Promouvoir la base de données PostgreSQL dans la région de Londres : le groupe de plans comporte des étapes permettant de promouvoir la base de données PostgreSQL dans la région de Londres.
-
Modifier le sens de réplication de base de données PostgreSQL : le groupe de plans disposera des étapes permettant de modifier le sens de réplication de base de données PostgreSQL (LON-FRA).
Remarque : assurez-vous que les étapes sont exécutées dans le même ordre.
Créez le groupe de plans défini par l'utilisateur suivant.
-
Créez un groupe de plans Arrêter la base de données PostgreSQL dans la région Francfort.
-
Sous Groupes de plans, cliquez sur Ajouter un groupe pour créer un groupe de plans personnalisé afin d'arrêter la base de données PostgreSQL dans la région Francfort. Entrez le nom de groupe
Stop PostgreSQL Database at Frankfurt Region
. -
Cliquez sur Ajouter une étape et entrez les informations suivantes. Nous ajouterons une étape au groupe de plans.
-
Veillez à choisir la région en tant que
Frankfurt
et l'instance cible en tant quepostgresql01
. Sélectionnez le script d'exécution de stockage d'objet et l'emplacement du script choisit le bucket de stockage d'objet OCIposgres-dr-lon
. -
Entrez les détails du script
stop_postgresql.sh
avec l'emplacement du script. Le script arrête la base de données PostgreSQL dans la région FRA. -
Cliquez sur Ajouter une étape et vérifiez l'étape ajoutée.
-
-
-
Créez un groupe de plans Promouvoir la base de données PostgreSQL dans la région de Londres.
-
Sous Groupes de plans, cliquez sur Ajouter un groupe pour créer un groupe de plans personnalisé afin de promouvoir la base de données PostgreSQL à Londres. Entrez le nom de groupe
Promote PostgreSQL Database at London Region
. -
Cliquez sur Ajouter une étape et entrez les détails suivants. Nous ajouterons une étape au groupe de plans.
-
Veillez à choisir la région comme
London
, et l'instance cible commepostgresql02
. Sélectionnez le script d'exécution de stockage d'objet et l'emplacement du script choisit le bucket OCI Object Storageposgres-dr-lon
. -
Entrez les détails du script
promote_postgresql.sh
avec l'emplacement du script. Le script arrête la base de données PostgreSQL dans la région FRA. -
Cliquez sur Ajouter une étape et vérifiez l'étape ajoutée.
-
-
-
Créez le groupe de plans Modifier le sens de réplication de base de données PostgreSQL.
-
Sous Groupes de plans, cliquez sur Ajouter un groupe pour créer un groupe de plans personnalisé afin de modifier le sens de réplication de la base de données PostgreSQL. Entrez le nom de groupe
Promote PostgreSQL Database at London Region
. -
Cliquez sur Ajouter une étape et entrez les informations suivantes. Nous ajouterons une étape au groupe de plans.
-
Veillez à choisir la région en tant que
Frankfurt
et l'instance cible en tant quepostgresql01
. Sélectionnez le script d'exécution de stockage d'objet et l'emplacement du script, choisissez le bucket OCI Object Storageposgres-dr-lon
. -
Entrez les détails du script
change_replication_direction.sh
avec l'emplacement du script. Le script arrête la base de données PostgreSQL dans la région FRA. -
Cliquez sur Ajouter une étape et vérifiez l'étape ajoutée.
-
-
Tâche 4 : exécuter les prévérifications et exécuter le plan de permutation
L'option Exécuter les prévérifications effectue une validation rapide de toutes les étapes d'un plan de récupération après sinistre et des membres qui y sont associés.
-
Dans le plan de permutation
postgresql-switchover-frankfurt-london
, cliquez sur Exécuter les prévérifications pour exécuter les prévérifications.Vérifiez que l'opération s'est déroulée avec succès.
-
Dans le plan de permutation
postgresql-switchover-frankfurt-london
, cliquez sur Exécuter le plan de récupération après sinistre pour l'exécuter. -
Vérifiez le statut du plan et assurez-vous que toutes les étapes du plan ont abouti.
-
Le plan de permutation exécute tous les groupes de plans dans un ordre spécifique. Une fois le plan exécuté, la base de données PostgreSQL est promue comme maître dans la région de Londres.
-
Le rôle change automatiquement dans le DRPG. Maintenant, Londres aura le rôle principal et Francfort aura le rôle de secours.
-
Vérifiez la base de données PostgreSQL à Londres.
Tâche 5 : créer un plan de permutation dans le DRPG de secours (Francfort) pour la permutation
Tâche 5.1 : créer un plan de permutation dans le DRPG de secours (Londres)
-
Créez un plan de permutation dans le DRPG de secours
postgresql-fran
. -
Sélectionnez Plans et cliquez sur Créer un plan.
-
Entrez
postgresql-switchover-london-frankfurt
dans le champ Nom et sélectionnezSwitchover (planned)
dans le champ Type de plan. -
Cliquez sur Créer.
Remarque : veillez à créer le plan de permutation à partir du DRPG de secours (Francfort).
Tâche 5.2 : Personnaliser le plan de permutation avec différents groupes de plans définis par l'utilisateur
Nous devons personnaliser le plan de permutation avec d'autres groupes de plans définis par l'utilisateur. Nous devons également créer les scripts bash suivants et les télécharger vers OCI Object Storage. Nous pouvons donc les appeler lors de la permutation.
-
rewind_postgresql.sh
.#!/bin/bash sudo systemctl stop postgresql sudo rm -rv /var/lib/pgsql/data/ sudo -u postgres pg_basebackup -d "host=<IP Host 2> port=5432 user=replica_user password=YourUserPassword" -v -R -D /var/lib/pgsql/data/ --no-password sudo chown postgres -R /var/lib/pgsql/data/ sudo systemctl start postgresql sudo -u postgres /usr/bin/pg_ctl promote -D /var/lib/pgsql/data/ sudo -u postgres psql -c "select pg_create_physical_replication_slot('replica_0');"
-
replicate_postgresql.sh
.#!/bin/bash sudo systemctl stop postgresql sudo rm -rv /var/lib/pgsql/data/ sudo pg_basebackup -d "host=<IP Host 2> port=5432 user=replica_user password=YourUserPassword" -w -X stream -S replica_0 -v -R -W -D /var/lib/pgsql/data/ --no-password sudo chown postgres -R /var/lib/pgsql/data/ sudo systemctl start postgresql
Remarque : ces scripts doivent être téléchargés vers le bucket de la région Francfort.
Un workflow standard pour la permutation de récupération après sinistre est le suivant :
-
Rembobiner les bases de données PostgreSQL : groupe de plans pour rembobiner la base de données. Francfort synchronisera le contenu de la base de données de Londres.
-
Rétablir la réplication de base de données PostgreSQL vers Londres : le groupe de plans aura une étape pour commencer à répliquer la base de données PostgreSQL de Francfort vers la région de Londres.
Remarque : assurez-vous que les étapes sont exécutées dans le même ordre.
Créez les deux groupes de plans définis par l'utilisateur suivants :
-
Créez le groupe de plans Rembobiner les bases de données PostgreSQL.
-
Sous Groupes de plans, cliquez sur Ajouter un groupe pour créer un groupe de plans personnalisé afin de rembobiner la base de données PostgreSQL dans la région Francfort. Entrez le nom de groupe
Rewind PostgreSQL Databases at Frankfurt Region
. -
Cliquez sur Ajouter une étape et entrez les informations suivantes. Nous ajouterons une étape au groupe de plans.
-
Veillez à choisir la région en tant que
Frankfurt
et l'instance cible en tant quepostgresql01
. Sélectionnez le script d'exécution de stockage d'objet et l'emplacement du script choisit le bucket OCI Object Storageposgres-dr-lon
. -
Entrez les détails du script
rewind_postgresql.sh
avec l'emplacement du script. Le script arrête la base de données PostgreSQL dans la région FRA. -
Cliquez sur Ajouter une étape et vérifiez l'étape ajoutée.
-
-
-
Créez le groupe de plans Rétablir la réplication de base de données PostgreSQL vers Londres.
-
Sous Groupes de plans, cliquez sur Ajouter un groupe pour créer un groupe de plans personnalisé afin de rétablir la réplication de base de données PostgreSQL vers Londres. Entrez le nom de groupe
Promote PostgreSQL Database at London Region
. -
Cliquez sur Ajouter une étape et entrez les informations suivantes. Nous ajouterons une étape au groupe de plans.
-
Veillez à choisir la région en tant que
London
et l'instance cible en tant quepostgresql02
. Sélectionnez le script d'exécution de stockage d'objet et l'emplacement du script choisit le bucket OCI Object Storageposgres-dr-lon
. -
Entrez les détails du script
replicate_postgresql.sh
avec l'emplacement du script. Le script arrête la base de données PostgreSQL dans la région FRA. -
Cliquez sur Ajouter une étape et vérifiez l'étape ajoutée.
-
-
Tâche 6 : exécuter des prévérifications et exécuter le plan de permutation
L'option Exécuter les prévérifications effectue une validation rapide de toutes les étapes d'un plan de récupération après sinistre et des membres qui y sont associés.
-
Dans le plan de permutation
postgresql-switchover-london-frankfurt
, cliquez sur Exécuter les prévérifications pour exécuter les prévérifications.Vérifiez que l'opération s'est déroulée avec succès.
-
Dans le plan de permutation
postgresql-switchover-london-frankfurt
, cliquez sur Exécuter le plan de récupération après sinistre pour l'exécuter. -
Vérifiez le statut du plan et assurez-vous que toutes les étapes du plan ont abouti.
-
Le plan de permutation exécute tous les groupes de plans dans un ordre spécifique. Une fois le plan exécuté, la base de données PostgreSQL est promue maître dans la région de Francfort.
-
Le rôle change automatiquement dans le DRPG. Maintenant, Francfort aura le rôle principal et Londres aura le rôle de secours.
-
Vérifiez la base de données PostgreSQL à Francfort.
Etapes suivantes
Vous avez appris à effectuer automatiquement la permutation de base de données PostgreSQL et à annuler les opérations de récupération après sinistre à l'aide de la récupération après sinistre OCI Full Stack. Pour plus d'informations, reportez-vous à la documentation relative à la récupération après sinistre de la pile complète OCI dans la section Liens associés.
Liens connexes
Remerciements
-
Auteur - Raphael Teixeira (membre principal du personnel technique de la FSDR)
-
Contributeurs - Ricardo Malhado (Hyperscaler au spécialiste OCI), Suraj Ramesh (chef de produit principal pour MAA)
Ressources de formation supplémentaires
Parcourez d'autres ateliers sur docs.oracle.com/learn ou accédez à davantage de contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, rendez-vous sur education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir de la documentation sur le produit, visitez Oracle Help Center.
Automate Switchover and Failover for PostgreSQL Database with Oracle Cloud Infrastructure Full Stack Disaster Recovery
F96163-01
April 2024