Provisionner OCI Database with PostgreSQL et migrer à partir d'un site avec un temps d'arrêt minimal à l'aide d'OCI GoldenGate
Introduction
Oracle Cloud Infrastructure Database avec PostgreSQL (OCI Database with PostgreSQL) est un service entièrement géré compatible avec PostgreSQL qui offre des performances 3 fois supérieures grâce à un stockage optimisé pour les bases de données, un demi-coût par rapport à Amazon Web Service (AWS), fournit des sauvegardes automatisées, une haute disponibilité, une maintenance programmée, une évolutivité dynamique du stockage, une mise à l'échelle verticale, etc.
Exemple : continuité des activités
Le service OCI Database with PostgreSQL offre un contrat de niveau de service (SLA) de disponibilité de 99,99 %, un objectif de temps de récupération (RTO) de moins de 2 minutes pour les systèmes de base de données à plusieurs noeuds et un objectif de point de récupération (RPO) de 0 sans perte de données. Pour les systèmes de base de données à noeud unique dans des régions à domaine de disponibilité unique, le service offre un contrat de niveau de service de 99,9 %, un RTO de moins de 20 minutes et un RPO de 0.
OCI Database with PostgreSQL tire parti d'OCI Block Volumes pour stocker les données utilisateur. Les mêmes garanties de durabilité, de sécurité et de performances s'appliquent. Pour plus d'informations, reportez-vous à Présentation d'OCI Database with PostgreSQL et à Premiers principes : optimisation de PostgreSQL pour le cloud.
Ce tutoriel se concentre sur la migration d'une base de données PostgreSQL sur site vers OCI Database with PostgreSQL à l'aide d'OCI GoldenGate avec un temps d'arrêt minimal.
Détails d'environnement:
- Nom utilisateur de la console OCI GoldenGate :
oggadmin
. - Version d'OCI GoldenGate :
23ai
. - OCI Database with PostgreSQL :
admin
.
Source sur site | OCI cible | |
---|---|---|
Nom de la base de données | product_inventory | base de données cible |
Utilisateur | gestionnaire de commandes | admin |
Schéma | data_analyze | data_analyze |
Version de la base de données | 15,12 | 15,6 |
Objectifs
-
Créez OCI Database with PostgreSQL.
-
Provisionner le déploiement OCI GoldenGate.
-
Créer une connexion à la base de données sur site et à la base de données OCI lors du déploiement et affecter des connexions.
-
Préparez le serveur et la base de données source.
-
Créer une extraction de chargement initial.
-
Sauvegardez les métadonnées de la base de données source à l'aide de l'utilitaire
pg_dump
. -
Importez des métadonnées dans OCI Database with PostgreSQL.
-
Créez le processus Replicat de chargement initial à l'aide du fichier trace.
-
Créer une extraction en ligne ou de capture des données de modification (CDC) qui passe au numéro de séquence de journal (LSN) de début pour la capture.
-
Créez une réplication en ligne donnant le fichier trace d'extraction CDC.
Tâche 1 : provisionnement d'OCI Database with PostgreSQL
Ces tâches expliquent comment créer un système de base de données et les stratégies suivantes sont requises avant le provisionnement. Pour plus d'informations, voir Gestion d'un système de base de données.
-
Ajoutez les stratégies Oracle Cloud Infrastructure Identity and Access Management (IAM) suivantes.
Allow group <postgresql-admin-group> to read compartments in tenancy Allow group <postgresql-admin-group> to manage postgres-db-systems in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ] Allow group <postgresql-admin-group> to manage postgres-backups in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ] Allow group <postgresql-admin-group> to read postgres-work-requests in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ] Allow group <postgresql-admin-group> to manage postgres-configuration in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ] Allow group <postgresql-admin-group> to manage virtual-network-family in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ] Allow group <postgresql-admin-group> to read secret-family in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ] Allow group <postgresql-admin-group> to read vaults in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ] Allow group <postgresql-admin-group> to read metrics in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ] Allow group <postgresql-admin-group> to use tag-namespaces in tenancy
-
Créez ou sélectionnez un coffre pour le mot de passe de l'administrateur de base de données. Pour plus d'informations, reportez-vous à Gestion des coffres.
-
Créez une clé pour le mot de passe de base de données. Pour plus d'informations, reportez-vous à Gestion des clés.
-
Créez une clé secrète pour le mot de passe de base de données. Pour plus d'informations, reportez-vous à Gestion des clés secrètes de coffre.
-
Connectez-vous à la console OCI, accédez à Database, PostgreSQL, DB systems, Create new database system, puis cliquez sur Next.
-
Sélectionnez Configuration matérielle.
-
Sélectionnez Réseau cloud virtuel et Sous-réseau, puis entrez les informations d'identification de l'administrateur système de base de données. Dans cet exemple, Username sera admin.
Une fois la création terminée, le système de base de données affiche l'état Actif.
-
Exécutez la commande suivante pour vérifier la connexion à OCI Database with PostgreSQL à partir du noeud de calcul.
-bash-4.2$ psql "sslmode=verify-full sslrootcert=c.pub host=<OCI DB server ip address> user=admin dbname=postgres" Password for user admin: psql (15.12, server 15.6) SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, compression: off) Type "help" for help. postgres=>
Tâche 2 : création d'un déploiement OCI GoldenGate pour la migration
-
Accédez à la console OCI, accédez à Oracle Database, GoldenGate, Déploiements et cliquez sur Créer un déploiement.
-
Entrez les informations requises spécifiées dans les images suivantes et sélectionnez PostgreSQL comme Sélectionner une technologie.
-
Dans Configurer le déploiement, utilisez
oggadmin
en tant que nom utilisateur pour vous connecter à la console OCI GoldenGate en tant qu'administrateur. -
Cliquez sur Créer pour démarrer la création et le déploiement. Une fois terminé, l'état Actif s'affiche.
Tâche 3 : créer une connexion de base de données sur site, des connexions de base de données OCI sur le déploiement et affecter des connexions
OCI GoldenGate requiert la connexion de base de données source et cible et affecte les deux connexions au déploiement.
-
Créez une connexion de base de données d'origine.
-
Cliquez sur le nom du déploiement (
PG_Mig_deployment
), sélectionnez Connexions et cliquez sur Créer une connexion. Saisissez les informations requises comme indiqué dans les images suivantes. -
Sélectionnez Type en tant que serveur PostgreSQL, protocole de sécurité en tant que plain et cliquez sur Créer.
-
-
Créez une connexion de base de données de cible.
-
Cliquez sur le nom du déploiement, sélectionnez Connexions, puis cliquez sur Créer une connexion. Saisissez les informations requises comme indiqué dans les images suivantes.
-
Sélectionnez Type comme OCI PostgreSQL.
-
Sélectionnez Protocole de sécurité en tant que TLS et Mode SSL en tant que requis.
-
-
Affectez les connexions de base de données au déploiement.
-
Accédez à Déploiements, cliquez sur le nom du déploiement (
PG_Mig_deployment
), sélectionnez Affecter des connexions et cliquez sur Affecter une connexion. -
Saisissez les informations requises comme indiqué dans les images suivantes.
L'état Actif s'affiche une fois la connexion affectée terminée.
-
Tâche 4 : Préparer le serveur et la base de données source
-
Installez le package
postgresql15-contrib
.OCI GoldenGate requiert le package
postgresql14-contrib
sur le serveur de base de données source afin d'extraire de la base de données du serveur PostgreSQL. Le package peut être installé à l'aide de la commandesudo yum install postgresql15-contrib
(la version de la base de données source est 15).Remarque : il est recommandé que la version des bibliothèques client corresponde à la version de la base de données PostgreSQL. Les versions client inférieures à 10 ne sont pas prises en charge.
-
Préparez la création des utilisateurs de base de données sur la base de données source et les privilèges requis.
product_inventory=# create user ggreplication with password 'abc1234'; ERROR: role "ggreplication" already exists product_inventory=# product_inventory=# select current_database(); current_database ------------------- product_inventory (1 row) product_inventory=# GRANT CONNECT ON DATABASE product_inventory TO ggreplication; GRANT product_inventory=# ALTER USER ggreplication WITH REPLICATION; ALTER ROLE product_inventory=# ALTER USER ggreplication WITH SUPERUSER; ALTER ROLE product_inventory=# GRANT USAGE ON SCHEMA ordermanager TO ggreplication; GRANT product_inventory=# GRANT USAGE ON SCHEMA data_analyze TO ggreplication; GRANT product_inventory=# GRANT SELECT ON ALL TABLES IN SCHEMA ordermanager TO ggreplication; GRANT product_inventory=# GRANT SELECT ON ALL TABLES IN SCHEMA data_analyze TO ggreplication; GRANT product_inventory=# GRANT CREATE ON DATABASE product_inventory TO ggreplication; GRANT product_inventory=# GRANT CREATE, USAGE ON SCHEMA ordermanager TO ggreplication; GRANT product_inventory=# GRANT CREATE, USAGE ON SCHEMA data_analyze TO ggreplication; GRANT product_inventory=# GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA ordermanager TO ggreplication; GRANT product_inventory=# GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA data_analyze TO ggreplication; GRANT product_inventory=# GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA ordermanager TO ggreplication; GRANT product_inventory=# GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA data_analyze TO ggreplication; GRANT product_inventory=#
Pour plus d'informations sur l'objectif spécifique de chaque privilège, reportez-vous à Préparation des utilisateurs et des privilèges de base de données pour PostgreSQL.
-
Les paramètres du fichier de configuration de la base de données PostgreSQL sont les suivants. L'emplacement du fichier de configuration est
$PGDATA/postgresql.conf
.wal_level = logical **# set to logical for Capture** max_replication_slots = 1 **# max number of replication and one slot for Extract/Client** max_wal_senders = 1 **# one sender per max repl slot** track_commit_timestamp = on **# optional, correlates tx commit time** with begin tx log record (useful for # timestamp- based positioning)
Remarque :
- Une fois les modifications apportées, redémarrez la base de données.
- La réplication OCI GoldenGate prend en charge les types de données PostgreSQL et les limites sur les types de données pris en charge, les objets et les opérations pris en charge peuvent être vérifiés à partir de la documentation. Pour plus d'informations, reportez-vous à Préparation des bases de données.
Tâche 5 : Créer une extraction de chargement initial
Nous devons créer une extraction de chargement initial, ce qui fournira le LSN sur la section de rapport d'extraction OCI GoldenGate.
-
Accédez à la console OCI, accédez à Base de données, GoldenGate, Déploiements et cliquez sur le nom du déploiement créé dans la tâche 2.
-
Cliquez sur Lancer la console et entrez les informations d'identification de connexion.
-
Accédez à Connexions de base de données et cela doit afficher la source affectée et OCI Database with PostgreSQL et vérifier la vérification de connectivité.
Une connexion réussie permet de démarrer le chargement initial à ce stade.
-
Accédez à la console OCI GoldenGate, accédez à Extraire et cliquez sur +.
Une fois le processus Extract de chargement initial arrêté, vérifiez les fichiers de rapport OCI GoldenGate, notez les détails du LSN et gardez-le pratique à utiliser dans la tâche 9.
Tâche 6 : sauvegarder les métadonnées de la base de données source à l'aide de la commande pg_dump
La commande pg_dump
permet de vider uniquement les métadonnées product_inventory
de la base de données source.
pg_dump -h localhost -U ggreplication -d product_inventory -F c -v -s --file=/tmp/exp_source_db.dump
Tâche 7 : importer des métadonnées dans OCI Database with PostgreSQL
Utilisez le binaire pg_restore pour importer dans la base de données OCI Database with PostgreSQL. Le nom de la base de données OCI est ici targetdb
.
Exécutez la commande de restauration à partir du noeud OCI Compute dans lequel la commande de connexion a été exécutée avec succès dans la tâche 1.8.
pg_restore -h <OCI IP address> -U admin -d targetdb -v exp_source_db.dump
postgres=> \c targetdb
psql (15.12, server 15.6)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, compression: off)
You are now connected to database "targetdb" as user "admin".
targetdb=> \dn
List of schemas
Name | Owner
--------------+-------------------
data_analyze | admin
ordermanager | admin
public | pg_database_owner
(3 rows)
Remarque : utilisez la requête
select table_name,table_schema from information_schema.tables where table_type='BASE TABLE' and table_schema in ('data_analyze','ordermanager') order by table_schema,table_name;
pour vérifier les noms de table après l'import des métadonnées sur la cible.
Tâche 8 : créer une réplication de chargement initial à l'aide du fichier trace
-
Accédez à la console OCI GoldenGate, accédez à Réplications et cliquez sur + pour créer une réplication.
-
Cliquez sur Créer et exécuter pour lancer le chargement initial. Une fois le chargement terminé, vérifiez le nombre de lignes de la table.
-
Accédez à Reports et vérifiez le chargement initial des rapports de réplication. Vérifier le nombre de lignes de table dans les deux bases de données.
Tâche 9 : création d'une extraction CDC modifiant le LSN de début pour la capture
L'extraction CDC est une extraction en ligne utilisée pour capturer les modifications en cours dans la base de données existante et l'extraction CDC commence à capturer à partir du numéro LSN collecté.
-
Accédez à la console OCI GoldenGate, accédez à Extractions, cliquez sur + et entrez les informations requises comme indiqué dans les images suivantes.
-
Une fois le CDC enregistré et créé, cliquez sur Démarrer avec les options pour indiquer la lecture à partir d'un LSN spécifique collecté dans la tâche 5.
Nous pouvons voir un décalage de zéro seconde sur l'extraction CDC après un certain temps.
Tâche 10 : Créer une réplication en ligne donnant le fichier trace d'extraction CDC
-
Accédez à la console OCI GoldenGate, accédez à Réplications, cliquez sur + et entrez les informations requises comme indiqué dans les images suivantes.
-
Cliquez sur Créer et exécuter après avoir modifié la commande
MAP
.Après un certain temps, nous pouvons constater un décalage de zéro seconde sur la réplication en ligne.
Vérification
Exécutez les requêtes suivantes pour les insérer dans la table source data_analyze.table3
réplique vers la table data_analyze.table3
de la base de données cible.
Nombre de tables et données de vérification côté cible.
Liens connexes
-
Préparation des utilisateurs et des privilèges de base de données pour PostgreSQL
-
Instanciation précise entre les environnements PostgreSQL à l'aide de pg_dump
Accusé de réception
- Auteur - Sivakrishna Burle (ingénieur cloud senior, services cloud Oracle Amérique du Nord - NACIE)
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.
Provision OCI Database with PostgreSQL and Migrate from On-Premises with Minimum Downtime using OCI GoldenGate
G39913-02
Copyright ©2025, Oracle and/or its affiliates.