Instanciation précise entre les environnements PostgreSQL à l'aide de l'utilitaire pg_dump

Lorsque vous utilisez Oracle GoldenGate pour effectuer une réplication entre deux bases de données compatibles PostgreSQL ou plus, vous pouvez utiliser l'utilitaire de sauvegarde pg_dump (pg_dumpall)/pg_restore inclus dans PostgreSQL. Cette opération crée une sauvegarde ou un cliché de la base de données source, qui sera restauré sur le système cible.

Reportez-vous à pg_dump (pg_dumpall) et à pg_restore dans la documentation PostgreSQL.

Les étapes suivantes décrivent comment utiliser cette sauvegarde conjointement avec Oracle GoldenGate pour garantir une instanciation initiale précise, qui ne nécessite pas que la source soit mise hors ligne, ni l'utilisation de HANDLECOLLISIONS.

Ces étapes utilisent le client d'administration, mais vous pouvez effectuer les mêmes étapes à partir de l'interface Web des microservices Oracle GoldenGate et des adresses de service de l'API Rest.

Avant de commencer ces étapes, vérifiez que vous avez terminé la préparation de PostgreSQL pour Oracle GoldenGate. Pour plus d'informations, reportez-vous à la section Préparer PostgreSQL.

  1. Connectez-vous au déploiement à partir du client Admin :

    CONNECT https://source:srvmgrport DEPLOYMENT *deployment_name* AS *deployment_user* PASSWORD *deployment_password*
  2. Connexion à la base de données PostgreSQL source à l'aide de la commande DBLOGIN. Si vous n'avez pas configuré de connexion de base de données à la base de données source, vous pouvez la configurer en suivant les étapes de l'ajout de connexions de base de données ou en utilisant la commande ALTER CREDENTIALSTORE du client d'administration.

    DBLOGIN USERIDALIAS *alias*

    Par exemple, si l'alias est ggeast, la commande serait la suivante :

    DBLOGIN USERIDALIAS ggeast
  3. Ajoutez une table de points de contrôle à la base de données source.

    ADD CHECKPOINTTABLE *owner.table_name*

    Exemple :

    ADD CHECKPOINTTABLE ggs.checkpoint
  4. Créez le fichier de paramètres Extract pour capturer les tables à répliquer, et inscrivez un nouveau processus Extract dans la base de données PostgreSQL source à l'aide de la commande REGISTER EXTRACT, mais n'ajoutez pas ce processus.

    REGISTER EXTRACT *extract_name*

    Exemple :

    REGISTER EXTRACT extcdc
  5. Créez un emplacement de réplication temporaire qui sera utilisé pour créer un point de départ pour le processus d'extraction et pour positionner le cliché PostgreSQL. Pour ce faire, utilisez la commande CREATE_REPLICATION_SLOT. Pour configurer l'emplacement de réplication temporaire, procédez comme suit :

    1. Connectez-vous à la base de données PostgreSQL en utilisant psql en tant qu'utilisateur doté du rôle replication.

    2. Utilisez l'option replication=database. Il s'agit du même utilisateur que vous avez créé à l'étape 2.

      Exemple :

      $ psql "dbname=pgsource replication=database user=ggeast"
      Password for user ggadmin: psql (16.3)
      
      Type "help" for help.
      pgsource=# CREATE_REPLICATION_SLOT tslot TEMPORARY LOGICAL test_decoding EXPORT_SNAPSHOT;
      
      slot_name | consistent_point | snapshot_name | output_plugin
      
      ----------+------------------+---------------------+---------------
      tslot | 1/4232A6B0 | 00000007-00001142-1 | test_decoding
      (1 row)
    3. Notez le `snapshot_name` et le `consistent_point`.
  6. Créez le cliché à l'aide de pg_dump (ou pg_dumpall pour les bases de données en cluster), comme indiqué dans l'exemple suivant :

    Remarque :

    Cette commande peut prendre un certain temps. Il est recommandé d'exécuter cette commande à l'aide d'une option nohup pour éviter que la commande ne s'arrête si la session se ferme.

    $ nohup /u01/pgsql-16/bin/pg_dump -h pgsource -p 5432 -U ggeast -snapshot=00000007-00001142-1 -F c -b -v -f latestdump.db pgsource &

    Le fichier pg_dump /pg_dumpall utilise le fichier snapshot_name reçu de la sortie à l'étape 5c. Dans l'exemple donné, l'option pg_dump suppose que la base de données entière sera répliquée. Toutefois, si vous répliquez un sous-ensemble de la base de données, vous pouvez vider uniquement ces objets.

  7. Ajoutez l'extraction à l'aide de la commande ADD EXTRACT. L'extraction doit être positionnée au niveau consistent_point suivi à l'étape 5c :

    ADD EXTRACT *extract_name*, TRANLOG, LSN *lsn_value*

    Exemple :

    ADD EXTRACT *extecdc*, TRANLOG, LSN 1/42332A6B0

    En plaçant l'extraction à cette valeur LSN, assurez-vous que l'extraction ne capturera aucune donnée incluse dans le dump.

  8. Ajoutez la trace d'extraction à l'aide de la commande ADD EXTTRAIL.

    ADD EXTTRAIL *trail_name*, EXTRACT *extract_name*

    Exemple :

    ADD EXTTRAIL *east/ea*, EXTRACT *extecdc*
  9. Démarrez l'extraction.

    START EXTRACT *extract_name*
  10. (Facultatif) Si vous devez configurer un chemin de distribution pour envoyer les fichiers trace à un autre serveur, utilisez la commande ADD DISTPATH.

    ADD DISTPATH *name* SOURCE *source_uri* TARGET *target_uri*

    Exemple :

    ADD DISTPATH *dpecdc* SOURCE *trail://localhost:9002/services/v2/sources?trail=ea* TARGET *wss://localhost:9003/services/v2/targets?trail=ea*
  11. Restaurez la base de données sur le serveur cible à l'aide de la commande pg_restore. Comme dans pg_dump, si la session est perdue, la restauration échoue. Il est donc recommandé d'utiliser l'option nohup. Dans cet exemple, les options suivantes ont été utilisées :

    $ nohup /u01/pgsql-16/bin/pg_restore -h pgtarget -p 6432 -U ggadmin -d pgtarget -v
    latestdump.db &
  12. (Facultatif) Si vous avez créé un chemin de distribution vers un service de destinataire dans un autre déploiement, vous devrez peut-être utiliser la commande CONNECT du client d'administration pour vous connecter au déploiement cible.

    CONNECT https://*target:srvmgrport* *DEPLOYMENT* *deployment_name* AS *deployment_user* PASSWORD *deployment_password*
  13. Connexion à la base de données PostgreSQL cible à l'aide de la commande DBLOGIN USERIDALIAS. Si vous n'avez pas configuré de connexion de base de données à la base de données source, vous pouvez la configurer en suivant les étapes de l'ajout de connexions de base de données ou en utilisant la commande ALTER CREDENTIALSTORE du client d'administration.

  14. Ajoutez une table de points de reprise à la base de données cible.

    ADD CHECKPOINTTABLE ggs.chkpoint
  15. Ajoutez une réplication qui appliquera les modifications à la base de données cible une fois la restauration de la base de données terminée.

    ADD REPLICAT *replicat_name*

    Exemple :

    ADD REPLICAT repecdc
  16. Démarrez le processus Replicat une fois la restauration terminée, comme indiqué dans l'exemple suivant :

    START REPLICAT *repecdc*