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.
-
Connectez-vous au déploiement à partir du client Admin :
CONNECT https://source:srvmgrport DEPLOYMENT *deployment_name* AS *deployment_user* PASSWORD *deployment_password* -
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 commandeALTER CREDENTIALSTOREdu client d'administration.DBLOGIN USERIDALIAS *alias*Par exemple, si l'alias est ggeast, la commande serait la suivante :
DBLOGIN USERIDALIAS ggeast -
Ajoutez une table de points de contrôle à la base de données source.
ADD CHECKPOINTTABLE *owner.table_name*Exemple :
ADD CHECKPOINTTABLE ggs.checkpoint -
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 -
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 :-
Connectez-vous à la base de données PostgreSQL en utilisant
psqlen tant qu'utilisateur doté du rôle replication. -
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) -
Notez le `snapshot_name` et le `consistent_point`.
-
-
Créez le cliché à l'aide de
pg_dump(oupg_dumpallpour 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
nohuppour é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_dumpallutilise le fichiersnapshot_namereçu de la sortie à l'étape 5c. Dans l'exemple donné, l'optionpg_dumpsuppose 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. -
Ajoutez l'extraction à l'aide de la commande
ADD EXTRACT. L'extraction doit être positionnée au niveauconsistent_pointsuivi à l'étape 5c :ADD EXTRACT *extract_name*, TRANLOG, LSN *lsn_value*Exemple :
ADD EXTRACT *extecdc*, TRANLOG, LSN 1/42332A6B0En plaçant l'extraction à cette valeur LSN, assurez-vous que l'extraction ne capturera aucune donnée incluse dans le dump.
-
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* -
Démarrez l'extraction.
START EXTRACT *extract_name* -
(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* -
Restaurez la base de données sur le serveur cible à l'aide de la commande
pg_restore. Comme danspg_dump, si la session est perdue, la restauration échoue. Il est donc recommandé d'utiliser l'optionnohup. 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 & -
(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
CONNECTdu client d'administration pour vous connecter au déploiement cible.CONNECT https://*target:srvmgrport* *DEPLOYMENT* *deployment_name* AS *deployment_user* PASSWORD *deployment_password* -
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 commandeALTER CREDENTIALSTOREdu client d'administration. -
Ajoutez une table de points de reprise à la base de données cible.
ADD CHECKPOINTTABLE ggs.chkpoint -
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 -
Démarrez le processus Replicat une fois la restauration terminée, comme indiqué dans l'exemple suivant :
START REPLICAT *repecdc*