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.

entrer la description de l'image ici

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:

  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

  1. Créez OCI Database with PostgreSQL.

  2. Provisionner le déploiement OCI GoldenGate.

  3. 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.

  4. Préparez 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. Importez des métadonnées dans OCI Database with 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) qui passe au numéro de séquence de journal (LSN) de début pour la capture.

  10. 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.

  1. 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
    
  2. 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.

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

  4. 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.

  5. Connectez-vous à la console OCI, accédez à Database, PostgreSQL, DB systems, Create new database system, puis cliquez sur Next.

    entrer la description de l'image ici

    entrer la description de l'image ici

  6. Sélectionnez Configuration matérielle.

    entrer la description de l'image ici

  7. 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.

    entrer la description de l'image ici

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

    entrer la description de l'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éation d'un déploiement OCI GoldenGate pour la migration

  1. Accédez à la console OCI, accédez à 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 la description de l'image ici

    entrer la description de l'image ici

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

    entrer la description de l'image ici

    entrer la description de l'image ici

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

    entrer la description de l'image ici

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.

  1. Créez une connexion de base de données d'origine.

    1. 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.

      entrer la description de l'image ici

    2. Sélectionnez Type en tant que serveur PostgreSQL, protocole de sécurité en tant que plain et cliquez sur Créer.

      entrer la description de l'image ici

  2. Créez une connexion de base de données de cible.

    1. 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.

      entrer la description de l'image ici

    2. Sélectionnez Type comme OCI PostgreSQL.

      entrer la description de l'image ici

    3. Sélectionnez Protocole de sécurité en tant que TLS et Mode SSL en tant que requis.

      entrer la description de l'image ici

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

    1. 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.

      entrer la description de l'image ici

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

      entrer la description de l'image ici

      L'état Actif s'affiche une fois la connexion affectée terminée.

      entrer la description de l'image ici

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

  1. 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 commande sudo 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.

  2. 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.

  3. 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.

  1. 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.

    entrer la description de l'image ici

  2. Cliquez sur Lancer la console et entrez les informations d'identification de connexion.

    entrer la description de l'image ici

  3. 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é.

    entrer la description de l'image ici

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

  4. Accédez à la console OCI GoldenGate, accédez à Extraire et cliquez sur +.

    entrer la description de l'image ici

    entrer la description de l'image ici

    entrer la description de l'image ici

    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.

    entrer la description de l'image ici

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

  1. Accédez à la console OCI GoldenGate, accédez à Réplications et cliquez sur + pour créer une réplication.

    entrer la description de l'image ici

    entrer la description de l'image ici

    entrer la description de l'image ici

  2. 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.

  3. 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.

    entrer la description de l'image ici

    entrer la description de l'image ici

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é.

  1. Accédez à la console OCI GoldenGate, accédez à Extractions, cliquez sur + et entrez les informations requises comme indiqué dans les images suivantes.

    entrer la description de l'image ici

    entrer la description de l'image ici

    entrer la description de l'image ici

    entrer la description de l'image ici

  2. 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.

    entrer la description de l'image ici

    entrer la description de l'image ici

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

    entrer la description de l'image ici

Tâche 10 : Créer une réplication en ligne donnant le fichier trace d'extraction CDC

  1. Accédez à la console OCI GoldenGate, accédez à Réplications, cliquez sur + et entrez les informations requises comme indiqué dans les images suivantes.

    entrer la description de l'image ici

    entrer la description de l'image ici

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

    entrer la description de l'image ici

    Après un certain temps, nous pouvons constater un décalage de zéro seconde sur la réplication en ligne.

    entrer la description de l'image ici

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.

entrer la description de l'image ici

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

entrer la description de l'image ici

Accusé de réception

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.