Répliquer des données de PostgreSQL vers MySQL

Voyez comment répliquer des données de PostgreSQL vers MySQL à 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 pour pouvoir accéder à PostgreSQL sur son port par défaut.
  • HeatWave sur la base de données OCI pour servir 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 : MySQL

  1. Ouvrez le port 3306, par lequel OCI GoldenGate peut se connecter.
    1. Dans la console Oracle Cloud, localisez le sous-réseau utilisé par HeatWave sur la base de données OCI.
    2. Dans la liste de sécurité du sous-réseau, créez une règle de trafic entrant pour le port TCP/3306.
  2. Créez un utilisateur ggadmin à l'aide du script suivant. N'oubliez pas de remplacer <ggadmin-password> par un mot de passe valide :
    CREATE USER 'ggadmin' IDENTIFIED BY '<ggadmin-password>';
    GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT, CREATE,CREATE VIEW, EVENT, INSERT, UPDATE, DROP,EXECUTE, DELETE ON *.* TO 'ggadmin';
  3. 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 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 MySQL pour la cible HeatWave dans la base de données OCI.
  3. Créez une connexion PostgreSQL.
    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 adresse HeatWave sur une connexion OCI.
  5. (Facultatif) Si votre HeatWave sur la base de données OCI 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 source au déploiement PostgreSQL source.
  7. Affectez la connexion cible au déploiement MySQL 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.
      Note

      La connexion est requise si le service IAM n'a pas été sélectionné en tant que magasin de données d'identification lors de la création d'un déploiement.
  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 processus d'extraction

  1. Ajoutez Change Data Capture Extract :
    1. Dans la barre de navigation gauche, cliquez sur Extraits,
    2. Dans la page Extractions, cliquez sur Ajouter une extraction (icône plus), puis remplissez les champs comme suit :
      • Dans la page Extraction données :
        1. Pour Type d'extraction, sélectionnez Extraction de saisie de modification de données.
        2. Pour Nom du processus, entrez un nom pour le service d'extraction, par exemple ECDC.
        3. Cliquez sur Suivant.
      • Dans la page Extract Options :
        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 Nom de la piste d'extraction, entrez un nom de piste à deux caractères, par exemple C1.
        4. Cliquez sur Suivant.
      • Dans la page Paramètres d'extraction, remplacez MAP *.*, TARGET *.*; par ce qui suit :
        TABLE SRC_OCIGGLL.*;
    3. Cliquez sur Créer et exécuter.
  2. Ajoutez l'extraction de chargement initial :
    1. Dans la page Extractions, cliquez sur Ajouter une extraction, puis remplissez le formulaire Ajouter une extraction comme suit :
      • Dans la page Extraction données :
        1. Pour le type d'extraction, sélectionnez Extraction de chargement initial.
        2. Pour Nom du processus, entrez un nom, par exemple EIL.
        3. Cliquez sur Suivant.
      • Dans la page Extract Options :
        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 Nom de la piste d'extraction, entrez un nom de piste à deux caractères, par exemple I1.
        4. Cliquez sur Suivant.
      • Dans la page Extract Parameters, remplacez le contenu de la zone de texte par le texte suivant :
        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 revenez à 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, procédez comme suit :
  1. Dans la console Oracle Cloud, dans la page Déploiements, sélectionnez le déploiement MySQL cible.
  2. Dans la page des détails du déploiement, cliquez sur Lancer la console et connectez-vous à l'aide de l'administrateur détaillé créé à l'étape 2 de la tâche 1.
  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 PostgreSQL source, 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 un fichier Distribution Path.
    1. Dans la barre de menus 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 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 du 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 d'ID utilisateur.
        6. Pour Domaine, 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 MySQL cible, vérifiez Receiver path créée à la suite de Distribution Path :
    1. Cliquez sur Receiver Service.
    2. Vérifiez les détails de Distribution Path.

Tâche 5 : Ajouter Replicat pour Initial Load

  1. Dans la console de déploiement cible MySQL, ajoutez une table Checkpoint.
    1. Dans le menu de navigation, sélectionnez Connexions à la base de données, la cible HeatWave sur la base de données OCI, puis Checkpoints.
    2. Cliquez sur Ajouter Checkpoint (icône plus).
    3. Dans le volet Checkpoint, pour Table de schéma, entrez SRCMIRROR_OCIGGLL.CHECKTABLE.
    4. Cliquez sur Soumettre.
  2. Ajoutez Initial Load Replicat.
    1. Dans le menu de navigation, cliquez sur Replicats, puis sur Ajouter Replicat (icône plus).
    2. Dans la page Replicats, remplissez les champs Ajouter Replicat comme suit :
      1. Dans la page Informations sur Replicat :
        1. Pour Type Replicat, sélectionnez Parallèle ou Coordonné.
        2. Pour Nom du processus, entrez un nom, par exemple RIL.
        3. Cliquez sur Suivant.
      2. Dans la page Options Replicat :
        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 l'alias pour HeatWave sur la connexion à la base de données OCI.
        3. Pour Checkpoint Table, sélectionnez la table Checkpoint que vous avez créée à l'étape 1.
        4. Cliquez sur Suivant.
      3. Dans la page Parameter File, ajoutez le mapping suivant :
        MAP src_ociggll.*, TARGET SRCMIRROR_OCIGGLL.*;
    3. Cliquez sur Créer et exécuter.

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

  3. Vérifiez Initial Load :
    1. Dans Cloud Shell, connectez-vous au VCN et au sous-réseau utilisés par votre HeatWave sur l'instance OCI.
    2. Une fois connecté, exécutez la commande suivante :
      mysqlsh <user>@<MySQL DB Private IP>:3306 --sql
    3. Exécutez le script suivant pour vérifier les données :
      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, procédez comme suit :
  1. Dans la console de 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 Integrated Extract (ECDC)).
      2. Pour Nom de la piste, sélectionnez le fichier de piste Integrated Extract (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 d'ID utilisateur.
      6. Pour Domaine, entrez le nom du domaine.
      7. Pour Alias, entrez l'alias.
    4. Cliquez sur Créer un chemin et l'exécuter.
  4. Dans la console de déploiement cible MySQL, cliquez sur Service récepteur, puis sur Receiver Path créé.

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 la base de données HeatWave cible sur la base de données OCI.
  1. Ajoutez Replicat :
    1. Dans la console de déploiement 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 Informations sur Replicat :
        1. Pour Type Replicat, sélectionnez Nonintegrated Replicat.
        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 pour HeatWave sur la connexion OCI.
        3. Pour Table de points de vérification, sélectionnez la table de points de vérification.
    3. Dans la page Paramètres Replicat, remplacez MAP *.*, TARGET *.*; par le mappage suivant :
      MAP src_ociggll.*, TARGET SRCMIRROR_OCIGGLL.*;
    4. 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 la base de données HeatWave cible sur la base de données OCI. Exécutez le script suivant pour effectuer des insertions 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 source PostgreSQL, sélectionnez le nom Change Data Capture Extract (ECDC), cliquez sur Détails, puis 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 le déploiement MySQL de la cible, sélectionnez RCDC Replicat, vérifiez ses détails et ses statistiques pour vérifier le nombre d'insertions.

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