Répliquer des données de PostgreSQL vers Snowflake

Voyez comment répliquer des données de PostgreSQL vers Snowflake à l'aide d'OCI GoldenGate.

Avant de commencer

Pour terminer ce démarrage rapide, vous devez disposer des éléments suivants :

  • Une installation PostgreSQL pour servir de base de données source (les instructions d'installation suivent la configuration de l'environnement).
  • Ouvrez le port 5432 dans la liste de sécurité de votre VCN.
  • Une base de données Snowflake servant de base de données cible.

Configuration de l'environnement : PostgreSQL

Pour configurer l'environnement pour ce démarrage rapide :
  1. Exécutez les commandes suivantes pour installer PostgreSQL.
    1. Installez le serveur PostgreSQL :
      sudo yum install postgresql-server
    2. Installez le module postgresql-contrib pour éviter cette exception SQL :
      sudo yum install postgresql-contrib
    3. Créez une grappe de base de données PostgreSQL :
      sudo postgresql-setup --initdb
    4. Activez postgresql.service :
      sudo systemctl enable postgresql.service
    5. Démarrez postgresql.service :
      sudo systemctl start postgresql.service
  2. Par défaut, PostgreSQL autorise uniquement les connexions locales. Autoriser la connectivité distante à PostgreSQL.
    1. Dans /var/lib/pgsql/data/postgresql.conf, préparez la base de données pour la réplication.
    2. Localisez et décompressez listen_addresses = 'localhost' et remplacez localhost par un astérisque (*) :
      listen_addresses = '*'
    3. Définissez les paramètres suivants :
      • wal_level = logical
      • max_replication_slots = 1
      • max_wal_senders = 1
      • track_commit_timestamp = on

      Note :

      Configurez /var/lib/pgsql/data/pg_hba.conf pour vous assurer que l'authentification de client est définie pour autoriser les connexions à partir d'un hôte Oracle GoldenGate. Par exemple, ajoutez ce qui suit :
      #Allow connections from remote hosts
      host    all    all    0.0.0.0/0    md5
      Pour plus d'informations, voir Fichier pg_hba.conf.
    4. Redémarrez le serveur PostgreSQL :
      sudo systemctl restart postgresql.service
  3. Si vous utilisez Oracle Cloud Compute pour héberger PostgreSQL, ouvrez le port 5432 :
    sudo firewall-cmd --permanent --add-port=5432/tcp
    sudo firewall-cmd --reload
    sudo firewall-cmd --list-all
  4. Ouvrez le port 5432 dans la liste de sécurité de votre VCN.
  5. Connectez-vous à PostgreSQL.
    > sudo su - postgres
    > psql

    Note :

    Vous pouvez également entrer sudo su - postgres psql si l'exemple ci-dessus ne fonctionne pas.
  6. Configurez PostgreSQL.
    1. Téléchargez et exécutez seedSRCOCIGGLL_PostgreSQL.sql pour configurer la base de données et charger les données-échantillons.
    2. Exécutez les commandes suivantes pour configurer l'utilisateur (assurez-vous de remplacer <password> par un mot de passe réel) :
      create user ggadmin with password '<password>';
      alter user ggadmin with SUPERUSER;
      GRANT ALL PRIVILEGES ON DATABASE ociggll TO ggadmin;

Configuration de l'environnement : Snowflake

  1. Créez un utilisateur GoldenGate dans Snowflake avec des privilèges appropriés.
  2. Créez des tables cibles à l'aide d'exemples de schéma.

Assurez-vous que les tables et l'utilisateur ont été créés.

Tâche 1 : Créer des ressources GoldenGate pour OCI

Cet exemple de démarrage rapide nécessite des déploiements et des connexions pour la source et la cible.
  1. Créez un déploiement pour la base de données PostgreSQL source.
  2. Créez un déploiement du service de mégadonnées pour la base de données Snowflake cible.
  3. Créez une connexion PostgreSQL avec les valeurs suivantes :
    1. Pour Type, sélectionnez PostgreSQL Server dans la liste déroulante.
    2. Pour Nom de la base de données, entrez ociggll.
    3. Pour Hôte, entrez l'adresse IP publique de l'instance de calcul sur laquelle PostgreSQL s'exécute.
    4. Pour Port, entrez 5432.
    5. Pour Nom d'utilisateur, entrez ggadmin.
    6. Pour Mot de passe, entrez votre mot de passe.
    7. Pour Protocole de sécurité, sélectionnez Plaine dans la liste déroulante.
  4. Créez une connexion Snowflake avec les valeurs suivantes :
    1. Pour URL de connexion, entrez jdbc:snowflake://<account_identifier>.snowflakecomputing.com/?warehouse=<warehouse name>&db=OCIGGLL.

      Note :

      Assurez-vous de remplacer <account_identifier> et <warehouse name> par les valeurs appropriées.
    2. Pour Type d'authentification, sélectionnez Authentification de base dans la liste déroulante.
    3. Pour Nom d'utilisateur, entrez un nom.
    4. Pour Mot de passe, entrez un mot de passe.
  5. (Facultatif) Si votre déploiement du service de mégadonnées n'a pas de point d'extrémité public, créez une connexion à GoldenGate, puis affectez cette connexion au déploiement PostgreSQL source.
  6. Affectez la connexion PostgreSQL source au déploiement PostgreSQL.
  7. Affectez la connexion Snowflake au déploiement du service de mégadonnées cible.

Tâche 2 : Activer la journalisation supplémentaire

Pour activer la journalisation supplémentaire :
  1. Lancez la console de déploiement de GoldenGate pour PostgreSQL :
    1. Dans la page Déploiements, sélectionnez le déploiement PostgreSQL pour en afficher les détails.
    2. Dans la page des détails du déploiement PostgreSQL, cliquez sur Lancer la console.
    3. Dans la page de connexion à la console de déploiement, entrez les données d'identification de l'administrateur GoldenGate fournies à l'étape 1 de la tâche 1.
  2. Dans GoldenGate 23ai, cliquez sur Connexions à la base de données dans la barre de navigation de gauche, puis sur la base de données PostgreSQL source, puis sur Trandata.
  3. Dans la page TRANDATA, à côté de Données TRANDATA, cliquez sur Ajouter TRANDATA (icône plus).
  4. Dans le panneau Trandata, pour Nom du schéma, entrez src_ociggll.*, puis cliquez sur Soumettre.

    Note :

    Utilisez le champ de recherche pour rechercher src_ociggll et vérifier que les tables ont été ajoutées.

Tâche 3 : Créer les extraits

  1. Ajoutez Change Data Capture Extract :
    1. Dans la barre de navigation gauche, cliquez sur Extractions,
    2. Dans la page Extractions, cliquez sur Ajouter Extraire (icône plus), puis remplissez les champs comme suit :
      • Dans la page Extraction données :
        1. Pour le type Extraire, sélectionnez Saisie de modification de données Extraire.
        2. Pour Nom du processus, entrez un nom pour Extraire, par exemple ECDC.
        3. Cliquez sur Suivant.
      • Dans la page Options d'extraction :
        1. Pour les données d'identification sources, sélectionnez Oracle GoldenGate dans la liste déroulante Domaine.
        2. Sélectionnez la base de données PostgreSQL source dans la liste déroulante Alias.
        3. Pour Extraire le nom de la piste, entrez un nom de piste à deux caractères, par exemple C1.
        4. Cliquez sur Suivant.
      • Dans la page Extraire les paramètres, remplacez MAP *.*, TARGET *.*; par ce qui suit :
        TABLE SRC_OCIGGLL.*;
    3. Cliquez sur Créer et exécuter.
  2. Ajoutez le chargement initial Extraire :
    1. Dans la page Extractions, cliquez sur Ajouter Extraire, puis remplissez le formulaire Ajouter Extraire comme suit :
      • Dans la page Extraire les informations :
        1. Pour le type Extraire, sélectionnez Chargement initial Extraire.
        2. Pour Nom du processus, entrez un nom, par exemple EIL.
        3. Cliquez sur Suivant.
      • Dans la page Options d'extraction :
        1. Pour les données d'identification sources, sélectionnez Oracle GoldenGate dans la liste déroulante Domaine.
        2. Sélectionnez la base de données PostgreSQL dans la liste déroulante Alias.
        3. Pour Extraire le nom de la piste, entrez un nom de piste à deux caractères, par exemple I1.
        4. Cliquez sur Suivant.
      • Dans la page Paramètres d'extraction, remplacez le contenu de la zone de texte par les éléments suivants :
        EXTRACT EIL
        USERIDALIAS PostgreSQL_Compute, DOMAIN OracleGoldenGate
        EXTFILE I1, PURGE
        TABLE src_ociggll.*;

        Note :

        Assurez-vous de supprimer le paramètre SOURCEDB devant USERIDALIAS avant de passer à autre chose.
    2. Cliquez sur Créer et exécuter.
Vous retournez à la page Extractions, où vous pouvez observer le démarrage de l'extraction.

Tâche 4 : Créer Distribution Path pour Initial Load Extract

Pour créer une valeur Distribution Path pour Initial Load Extract :
  1. Dans la console Oracle Cloud, dans la page Déploiements, sélectionnez le déploiement de mégadonnées cible.
  2. Dans la page des détails du déploiement, cliquez sur Lancer la console. Connectez-vous avec les détails de l'utilisateur administrateur créés à la tâche 1, étape 2.
  3. Si vous utilisez le magasin de données d'identification IAM, passez à l'étape Créer une adresse Distribution Path. Si vous utilisez le magasin de données d'identification GoldenGate, créez un utilisateur avec lequel la source GoldenGate utilise pour se connecter à la cible GoldenGate.
    1. Dans le menu de navigation, cliquez sur Administration des utilisateurs.
    2. Cliquez sur Ajouter un utilisateur (icône plus), remplissez les champs comme suit, puis cliquez sur Soumettre :
      • Pour Nom d'utilisateur, entrez ggsnet.
      • Pour Rôle, sélectionnez Opérateur.
      • Entrez deux fois le mot de passe pour vérification.
  4. Dans la console du déploiement source PostgreSQL, créez une connexion de chemin pour l'utilisateur créé à l'étape précédente.
    1. Dans le menu de navigation, cliquez sur Connexions de chemin.
    2. Cliquez sur Ajouter une connexion de chemin (icône plus), remplissez les champs comme suit, puis cliquez sur Soumettre :
      • Pour l'alias de données d'identification, entrez dpuser.
      • Pour l'ID utilisateur, entrez ggsnet
      • Pour Mot de passe, entrez le même mot de passe que celui utilisé à l'étape précédente.
  5. Créez une valeur pour Distribution Path.
    1. Dans la barre de menu du service, cliquez sur Distribution Service, puis sur Ajouter Distribution Path (icône plus).
    2. Remplissez le formulaire Add Path comme suit :
      • Dans la page Path Information :
        1. Dans Nom du chemin, entrez un nom pour le chemin.
        2. Cliquez sur Suivant.
      • Dans la page Options sources :
        1. Laissez le champ Source Extract vide.
        2. Pour Nom de la piste, entrez le nom de la piste Initial Load Extract (I1).
        3. Cliquez sur Suivant.
      • Dans la page Target Options :
        1. Pour Cible, sélectionnez wss.
        2. Pour Hôte cible, entrez l'URL de déploiement cible, sans https :// ni les barres obliques de fin.
        3. Pour Numéro de port, entrez 443.
        4. Pour Nom de la piste, entrez I1.
        5. Pour Méthode d'authentification cible, sélectionnez alias UserID.
        6. Pour Nom, entrez le nom du domaine créé à l'étape précédente.
        7. Pour Alias, entrez l'alias créé à l'étape précédente (dpuser).
        8. Cliquez sur Suivant.
    3. Cliquez sur Créer et exécuter.
    Vous retournez à la page Distribution Service, où vous pouvez vérifier le chemin créé.
  6. Dans la console de déploiement du service de mégadonnées cible, vérifiez la valeur Receiver Path créée à la suite de Distribution path :
    1. Cliquez sur Receiver Service.
    2. Vérifiez les détails de Receiver Path.

Tâche 5 : Ajouter Replicat pour Initial Load

  1. Dans la console de déploiement du service de mégadonnées cible, ajoutez Initial Load Replicat.
    1. Dans le menu de navigation, cliquez sur Réplicats, puis sur Ajouter un processus de réplication (icône plus).
    2. Dans la page Replicats, remplissez les champs Ajouter Replicat comme suit :
      1. Dans la page Replication Information :
        1. Pour Type Replicat, sélectionnez Classique ou Coordonné.
        2. Pour Nom du processus, entrez un nom, par exemple RIL.
        3. Cliquez sur Suivant.
      2. Dans la page Replicat Options :
        1. Pour Nom de la piste de réplication, entrez le nom de la piste de la tâche 2 (I1).
        2. Pour Données d'identification cibles, sélectionnez le domaine et les alias pour la connexion Snowflake.
        3. Pour Alias disponibles, sélectionnez un alias dans la liste déroulante, tel que Snowflake.
        4. (Facultatif) Activer le stockage externe pour sélectionner un emplacement temporaire disponible dans la liste déroulante.
        5. Cliquez sur Suivant.
      3. Dans la page Parameter File, ajoutez le mapping suivant :
        INSERTALLRECORDS
        MAP src_ociggll.src_city, TARGET SRCMIRROR_OCIGGLL.SRC_CITY;
        MAP src_ociggll.src_region, TARGET SRCMIRROR_OCIGGLL.SRC_REGION;
        MAP src_ociggll.src_customer, TARGET SRCMIRROR_OCIGGLL.SRC_CUSTOMER;
        MAP src_ociggll.src_orders, TARGET SRCMIRROR_OCIGGLL.SRC_ORDERS;
        MAP src_ociggll.src_order_lines, TARGET SRCMIRROR_OCIGGLL.SRC_ORDER_LINES;
        MAP src_ociggll.src_product, TARGET SRCMIRROR_OCIGGLL.SRC_PRODUCT;
      4. Dans la page Propriétés, vérifiez les propriétés, puis cliquez sur Créer et exécuter.

    Vous retournez à la page Replicats, où vous pouvez consulter les détails de Replicat.

  2. Pour vérifier Initial Load, connectez-vous à la base de données Snowflake et exécutez les interrogations suivantes :
    select * from SRCMIRROR_OCIGGLL.SRC_CITY;
    select * from SRCMIRROR_OCIGGLL.SRC_CUSTOMER;

    La sortie doit retourner les données chargées dans les tables de la base de données cible à la suite de Initial Load.

Tâche 6 : Créez Distribution Path pour Change Data Capture

Pour créer une valeur Distribution Path pour Change Data Capture :
  1. Dans la console du déploiement source PostgreSQL, cliquez sur Service de répartition.
  2. Cliquez sur Ajouter Distribution Path.
  3. Remplissez le formulaire Add Path comme suit :
    1. Dans la page Path Information :
      1. Pour Nom du chemin, entrez un nom.
      2. Cliquez sur Suivant.
    2. Dans la page Options sources :
      1. Pour Source Extract, sélectionnez Change Data Capture Extract (ECDC)).
      2. Pour Nom de la piste, sélectionnez le fichier de piste Change Data Capture (C1).
      3. Cliquez sur Suivant.
    3. Dans la page Target Options :
      1. Pour Cible, sélectionnez wss.
      2. Pour Hôte cible, entrez l'URL de la console de déploiement cible (vous pouvez le trouver dans la page des détails du déploiement, sans https :// ni les barres obliques de fin.
      3. Pour Numéro de port, entrez 443.
      4. Pour Nom de la piste, entrez C1.
      5. Pour Méthode d'authentification cible, sélectionnez alias UserID.
      6. Pour Domaine, entrez le nom du domaine.
      7. Pour Alias, entrez l'alias.
    4. Cliquez sur Créer un chemin et exécuter.
  4. Dans la console de déploiement du service de mégadonnées cible, cliquez sur Receiver Service, puis vérifiez la valeur Receiver path créée.

Tâche 7 : Ajouter une valeur Replicat pour Change Data Capture

Effectuez des mises à jour de la base de données PostgreSQL source pour vérifier la réplication vers Snowflake.
  1. Ajoutez Replicat.
    1. Dans la console de déploiement du service de mégadonnées cible, cliquez sur Administration Service, puis dans le menu de navigation, cliquez sur Replicats.
    2. Dans la page Replicats, cliquez sur Ajouter Replicat (icône plus), puis remplissez le formulaire Ajouter Replicat comme suit :
      • Dans la page Replicat Information :
        1. Pour Type Replicat, sélectionnez Classic ou Coordinated.
        2. Pour Nom du processus, entrez un nom, par exemple RCDC.
        3. Cliquez sur Suivant.
      • Dans la page Options Replicat :
        1. Pour Replicat Nom de la piste, entrez le nom de la piste de la tâche 3 (C1).
        2. Pour Données d'identification cibles, sélectionnez le domaine et l'alias de la connexion Snowflake.
        3. (Facultatif) Activer le stockage externe pour sélectionner un emplacement temporaire disponible dans la liste déroulante.
      • Dans la page Fichiers de paramètres, ajoutez le mappage suivant, puis cliquez sur Suivant :
        MAP src_ociggll.src_city, TARGET SRCMIRROR_OCIGGLL.SRC_CITY;
        MAP src_ociggll.src_region, TARGET SRCMIRROR_OCIGGLL.SRC_REGION;
        MAP src_ociggll.src_customer, TARGET SRCMIRROR_OCIGGLL.SRC_CUSTOMER;
        MAP src_ociggll.src_orders, TARGET SRCMIRROR_OCIGGLL.SRC_ORDERS;
        MAP src_ociggll.src_order_lines, TARGET SRCMIRROR_OCIGGLL.SRC_ORDER_LINES;
        MAP src_ociggll.src_product, TARGET SRCMIRROR_OCIGGLL.SRC_PRODUCT;
      • Dans la page Propriétés, vérifiez les propriétés, puis cliquez sur Créer et exécuter.

    Vous retournez à la page Replicats, où vous pouvez consulter les détails de Replicat.

  2. Vérifiez Change Data Capture :
    1. Effectuez des mises à jour de la base de données PostgreSQL source pour vérifier la réplication vers Snowflake. Exécutez le script suivant pour insérer des données dans la base de données PostgreSQL :
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1000,'Houston',20,743113);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1001,'Dallas',20,822416);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1002,'San Francisco',21,157574);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1003,'Los Angeles',21,743878);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1004,'San Diego',21,840689);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1005,'Chicago',23,616472);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1006,'Memphis',23,580075);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1007,'New York City',22,124434);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1008,'Boston',22,275581);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1009,'Washington D.C.',22,688002);
    2. Dans la console de déploiement PostgreSQL source, sélectionnez RCDC, puis cliquez sur Statistiques. Vérifiez que src_ociggll.src_city comporte 10 insertions.

      Note :

      Si Extract n'a saisi aucune insertion, redémarrez ECDC Extract.
    3. Dans la console de déploiement du service de mégadonnées cible, sélectionnez RCDC, consultez ses détails et ses statistiques pour vérifier le nombre d'insertions.

Tâche 8 : Surveiller et tenir à jour les processus

  1. Surveillez la performance.
  2. Gérez les fichiers de piste.