Provisionner OCI Database with PostgreSQL et migrer à partir d'un environnement sur place avec un temps d'arrêt minimal à l'aide d'OCI GoldenGate

Présentation

Oracle Cloud Infrastructure Database avec PostgreSQL (OCI Database with PostgreSQL) est un service entièrement géré compatible avec PostgreSQL, qui offre une performance 3 fois plus élevée grâce à un stockage optimisé pour les bases de données, un coût deux fois inférieur à celui d'Amazon Web Service (AWS), qui fournit des sauvegardes automatisées, une haute disponibilité, une maintenance programmée, une évolutivité dynamique du stockage, une évolutivité verticale, etc.

Exemple : Continuité des activités

Le service OCI Database with PostgreSQL offre un contrat de niveau de service (CNS) de temps de disponibilité de 99,99 %, un objectif de temps de récupération (ODR) de moins de 2 minutes pour les systèmes de base de données multinoeud et un objectif de point de récupération (OPR) de 0 sans perte de données. Pour les systèmes de base de données à noeud unique dans les régions de domaines de disponibilité uniques, le service offre un CNS de temps de disponibilité de 99,9 %, un temps de reprise sur commande de moins de 20 minutes et un point de reprise de 0.

OCI Database with PostgreSQL exploite OCI Block Volumes pour stocker des données d'utilisateur. Les mêmes garanties de durabilité, de sécurité et de performance s'appliquent. Pour plus d'informations, voir Aperçu de OCI Database with PostgreSQL et Premiers principes : Optimisation de PostgreSQL pour le nuage.

Entrer une description d'image ici

Ce tutoriel porte sur la migration d'une base de données PostgreSQL sur place vers une base de données OCI Database with PostgreSQL à l'aide d'OCI GoldenGate avec un temps d'arrêt minimal.

Détails de l'environnement :

  Source sur place 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 base de données 15.12 15.6

Objectifs

  1. Créer une base de données OCI Database with PostgreSQL avec le système de base de données PostgreSQL.

  2. Provisionnez le déploiement OCI GoldenGate.

  3. Créer une base de données sur place et une connexion à la base de données OCI lors du déploiement et affecter des connexions.

  4. Préparer le serveur et la base de données source.

  5. Créer une extraction de chargement initial.

  6. Sauvegardez les métadonnées de la base de données source à l'aide de l'utilitaire pg_dump.

  7. Importer les métadonnées dans OCI Database with PostgreSQL avec PostgreSQL.

  8. Créez le processus Replicat de chargement initial à l'aide du fichier trace.

  9. Créer une extraction en ligne ou de capture des données de modification (CDC) en commençant par le numéro de séquence de journal (LSN) pour la capture.

  10. Créer un processus de réplication en ligne donnant un fichier de piste d'extraction CDC.

Tâche 1 : Provisionner la base de données OCI Database with PostgreSQL avec le système de base de données PostgreSQL

Cette tâche explique comment créer un système de base de données et les politiques suivantes sont requises avant le provisionnement. Pour plus d'informations, voir Gestion d'un système de base de données.

  1. Ajoutez les politiques 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
    
  2. Créez ou sélectionnez une chambre forte pour le mot de passe de l'administrateur de base de données. Pour plus d'informations, voir Gestion des chambres fortes.

  3. Créez une clé pour le mot de passe de la base de données. Pour plus d'informations, voir Gestion des clés.

  4. Créer une clé secrète pour le mot de passe de la base de données. Pour plus d'informations, voir Gestion des clés secrètes du service de chambre forte.

  5. Connectez-vous à la console OCI, naviguez jusqu'à Base de données, PostgreSQL, Systèmes de base de données, Créer un nouveau système de base de données et cliquez sur Suivant.

    Entrer une description d'image ici

    Entrer une description d'image ici

  6. Sélectionnez Configuration du matériel.

    Entrer une description d'image ici

  7. Sélectionnez Réseau en nuage virtuel et Sous-réseau et entrez Données d'identification de l'administrateur de système de base de données. Dans cet exemple, le nom d'utilisateur sera admin.

    Entrer une description d'image ici

    Une fois la création terminée, le système de base de données affiche l'état Actif.

    Entrer une description d'image ici

  8. 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éer un déploiement OCI GoldenGate pour la migration

  1. Allez à la console OCI, naviguez jusqu'à Oracle Database, GoldenGate, Déploiements et cliquez sur Créer un déploiement.

  2. Entrez les informations requises spécifiées dans les images suivantes et sélectionnez PostgreSQL comme Sélectionner une technologie.

    Entrer une description d'image ici

    Entrer une description d'image ici

  3. Dans Configurer votre déploiement, utilisez oggadmin en tant que nom d'utilisateur pour vous connecter à la console OCI GoldenGate en tant qu'administrateur.

    Entrer une description d'image ici

    Entrer une description d'image ici

  4. Cliquez sur Créer pour lancer la création et le déploiement. Une fois l'opération terminée, l'état Actif s'affiche.

    Entrer une description d'image ici

Tâche 3 : Créer une connexion à la base de données sur place, Connexions à la base de données OCI lors du déploiement et affecter des connexions

OCI GoldenGate nécessite la connexion à la base de données source et cible et affecte les deux connexions au déploiement.

  1. Créer une connexion à la base de données source.

    1. Cliquez sur le nom du déploiement (PG_Mig_deployment), sélectionnez Connections (Connexions) et cliquez sur Create Connection (Créer une connexion). Entrez les informations requises comme indiqué dans les images suivantes.

      Entrer une description d'image ici

    2. Sélectionnez Type PostgreSQL Server, Security Protocol Plain et cliquez sur Create (Créer).

      Entrer une description d'image ici

  2. Créer une connexion à la base de données cible.

    1. Cliquez sur le nom du déploiement, sélectionnez Connections (Connexions) et cliquez sur Create Connection (Créer une connexion). Entrez les informations requises comme indiqué dans les images suivantes.

      Entrer une description d'image ici

    2. Sélectionnez Type comme OCI PostgreSQL.

      Entrer une description d'image ici

    3. Sélectionnez Protocole de sécurité comme TLS et Mode SSL comme Require.

      Entrer une description d'image ici

  3. Affectez les connexions de base de données au déploiement.

    1. Allez à Déploiements, cliquez sur le nom du déploiement (PG_Mig_deployment), sélectionnez Affecter des connexions et cliquez sur Affecter une connexion.

      Entrer une description d'image ici

    2. Entrez les informations requises comme indiqué dans les images suivantes.

      Entrer une description d'image ici

      Vous verrez l'état Actif une fois l'affectation de connexion terminée.

      Entrer une description d'image ici

Tâche 4 : Préparer le serveur et la base de données source

  1. Installez l'ensemble postgresql15-contrib.

    OCI GoldenGate nécessite l'ensemble postgresql14-contrib sur le serveur de base de données source pour effectuer une extraction à partir de la base de données du serveur PostgreSQL. L'ensemble peut être installé à l'aide de la commande sudo yum install postgresql15-contrib (la version de la base de données source est 15).

    Note : Il est recommandé que la version des bibliothèques client corresponde à la version de la base de données PostgreSQL. Les versions de client inférieures à 10 ne sont pas prises en charge.

  2. Préparer la création des utilisateurs de base de données dans 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, voir Préparer les utilisateurs et les privilèges de base de données pour PostgreSQL.

  3. Voici les paramètres du fichier de configuration de base de données PostgreSQL. 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)
    

    Note :

    • Après avoir effectué l'une des modifications précédentes, redémarrez la base de données.
    • Les types de données PostgreSQL pris en charge pour la réplication OCI GoldenGate et la limitation des types de données, des objets et des opérations pris en charge peuvent être vérifiés dans la documentation. Pour plus d'informations, voir Préparer des bases de données.

Tâche 5 : Créer une extraction de chargement initial

Nous devons créer l'extraction de chargement initial, ce qui fournira le LSN dans la section de rapport d'extraction OCI GoldenGate.

  1. Allez à la console OCI, naviguez jusqu'à Base de données, GoldenGate, Déploiements et cliquez sur le nom du déploiement créé dans la tâche 2.

    Entrer une description d'image ici

  2. Cliquez sur Lancer la console et entrez les données d'identification de connexion.

    Entrer une description d'image ici

  3. Allez à Connexions à la base de données et cela devrait afficher la source affectée et la base de données OCI Database with PostgreSQL avec des connexions à la base de données PostgreSQL et vérifier la vérification de la connectivité.

    Entrer une description d'image ici

    Une connexion réussie permet de démarrer le chargement initial à ce stade.

  4. Allez à la console OCI GoldenGate, naviguez jusqu'à Extraire et cliquez sur +.

    Entrer une description d'image ici

    Entrer une description d'image ici

    Entrer une description d'image ici

    Une fois l'extraction du chargement initial arrêtée, vérifiez les fichiers de rapport OCI GoldenGate et notez les détails LSN et gardez-le à portée de main pour l'utiliser dans la tâche 9.

    Entrer une description d'image ici

Tâche 6 : Sauvegarder les métadonnées de base de données source à l'aide de la commande pg_dump

La commande pg_dump est utilisée pour 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 les métadonnées dans la base de données OCI Database with PostgreSQL

Utilisez le fichier binaire pg_restore pour l'importation dans la base de données OCI Database with PostgreSQL. Ici, le nom de la base de données OCI est targetdb.

Exécutez la commande de restauration à partir du noeud de calcul OCI dans lequel nous avons exécuté avec succès la commande de connexion à 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)

Note : Utilisez l'interrogation 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'importation des métadonnées sur la cible.

Tâche 8 : Créer une réplication de chargement initial à l'aide du fichier trace

  1. Allez à la console OCI GoldenGate, naviguez jusqu'à Réplicats et cliquez sur + pour créer le processus de réplication.

    Entrer une description d'image ici

    Entrer une description d'image ici

    Entrer une description d'image ici

  2. Cliquez sur Créer et exécuter pour démarrer le chargement initial. Une fois le chargement terminé, vérifiez le nombre de rangées de la table.

  3. Allez à Rapports et vérifiez le chargement initial des rapports de réplication. Vérifier le nombre de lignes de table dans les deux bases.

    Entrer une description d'image ici

    Entrer une description d'image ici

Tâche 9 : Créer une extraction CDC en modifiant le LSN de début pour Capture

L'extraction CDC est une extraction en ligne utilisée pour capturer les modifications en cours sur la base de données existante et l'extraction CDC commence à capturer à partir du numéro LSN collecté.

  1. Allez à la console OCI GoldenGate, naviguez jusqu'à Extractions, cliquez sur + et entrez les informations requises, comme indiqué dans les images suivantes.

    Entrer une description d'image ici

    Entrer une description d'image ici

    Entrer une description d'image ici

    Entrer une description d'image ici

  2. Une fois le CDC enregistré et créé, cliquez sur Commencer par les options pour indiquer la lecture à partir d'un LSN spécifique collecté dans la tâche 5.

    Entrer une description d'image ici

    Entrer une description d'image ici

    Nous pouvons voir un décalage de zéro seconde sur l'extraction CDC après un certain temps.

    Entrer une description d'image ici

Tâche 10 : Créer une réplication en ligne donnant un fichier de piste d'extraction CDC

  1. Allez à la console OCI GoldenGate, naviguez jusqu'à Réplications, cliquez sur + et entrez les informations requises, comme indiqué dans les images suivantes.

    Entrer une description d'image ici

    Entrer une description d'image ici

  2. Cliquez sur Créer et exécuter après avoir modifié la commande MAP.

    Entrer une description d'image ici

    Nous pouvons voir un décalage de zéro seconde sur le processus de réplication en ligne après un certain temps.

    Entrer une description d'image ici

Vérification

Exécutez les interrogations suivantes pour insérer dans la table source data_analyze.table3 se réplique dans la table data_analyze.table3 de la base de données cible.

Entrer une description d'image ici

Nombre et données de la table de vérification côté cible.

Entrer une description d'image ici

Reconnaissance

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.