Réplication de données de PostgreSQL vers MySQL
Découvrez comment répliquer des données de PostgreSQL vers MySQL à l'aide d'OCI GoldenGate.
Avant de commencer
Pour mener à bien ce démarrage rapide, vous devez disposer des éléments suivants :
-
Installation de PostgreSQL pour servir de base de données source (voir Configuration de l'environnement)
-
Ouvrez le port 5432 dans la liste de sécurité de votre VCN
-
Base de données HeatWave servant de base de données cible.
Configuration de l'environnement : PostgreSQL
Afin de configurer l'environnement pour ce démarrage rapide, procédez comme suit :
-
Exécutez les commandes suivantes pour installer PostgreSQL.
-
Installez le serveur PostgreSQL :
sudo yum install postgresql-server -
Installez le module postgresql-contrib pour éviter cette exception SQL :
sudo yum install postgresql-contrib -
Créez un cluster de base de données PostgreSQL :
sudo postgresql-setup --initdb -
Activez le service postgresql.service :
sudo systemctl enable postgresql.service -
Démarrez postgresql.service :
sudo systemctl start postgresql.service
-
-
Par défaut, PostgreSQL n'autorise que les connexions locales. Autoriser la connectivité à distance à PostgreSQL.
-
Dans
/var/lib/pgsql/data/postgresql.conf, préparez la base de données pour la réplication. -
Localisez et supprimez le commentaire
listen_addresses = 'localhost'et remplacez localhost par un astérisque (`) :listen_addresses = '*' -
Définissez les paramètres suivants comme suit :
-
wal_level = logical -
max_replication_slots = 1 -
max_wal_senders = 1 -
track_commit_timestamp = on
Remarque :
Configurez
/var/lib/pgsql/data/pg_hba.confpour vous assurer que l'authentification client est définie de manière à 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 md5Pour plus d'informations, reportez-vous à Fichier pg_hba.conf.
- Redémarrez le serveur PostgreSQL :
sudo systemctl restart postgresql.service- 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 -
-
Ouvrez le port 5432 dans la liste de sécurité de votre VCN.
-
> sudo su - postgres > psqlRemarque : vous pouvez également saisir
sudo su - postgres psqlsi l'exemple ci-dessus ne fonctionne pas. -
Paramétrer PostgreSQL.
-
Téléchargez et exécutez seedSRCOCIGGLL_PostgreSQL.sql pour configurer la base de données et charger les données échantillon.
-
Exécutez les commandes suivantes pour configurer l'utilisateur (veillez à 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
-
Ouvrez le port 3306, via lequel OCI GoldenGate peut se connecter.
-
Dans la console Oracle Cloud, localisez le sous-réseau que la base de données HeatWave utilise.
-
Dans la liste de sécurité du sous-réseau, créez une règle d'entrée pour le Port TCP/3306.
-
-
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'; -
Créez des tables cible à l'aide de l'exemple de schéma.
Assurez-vous que les tables et l'utilisateur ont bien été créés.
Tâche 1 : création des ressources OCI GoldenGate
Cet exemple de démarrage rapide nécessite des déploiements et des connexions pour la source et la cible.
-
Créez un déploiement pour la base de données PostgreSQL source.
-
Créez un déploiement MySQL pour la base de données HeatWave cible.
-
Créez une connexion PostgreSQL.
-
Pour Type, sélectionnez Serveur PostgreSQL dans la liste déroulante.
-
Dans Nom de base de données, entrez
ociggll. -
Pour Hôte, entrez l'adresse IP publique de l'instance Compute sur laquelle PostgreSQL s'exécute.
-
Dans Port, saisissez
5432. -
Dans Nom utilisateur, entrez
ggadmin. -
Pour Mot de passe, entrez votre mot de passe.
-
Pour Protocole de sécurité, sélectionnez Plain dans la liste déroulante.
-
-
(Facultatif) Si la base de données HeatWave n'a pas d'adresse publique, créez une connexion à GoldenGate, puis affectez cette connexion au déploiement PostgreSQL source.
-
Affectez la connexion source au déploiement PostgreSQL source.
Tâche 2 : activer la journalisation supplémentaire
Pour activer la journalisation supplémentaire, procédez comme suit :
-
Lancez la console de déploiement PostgreSQL GoldenGate :
-
Sur la page Déploiements, sélectionnez le déploiement PostgreSQL pour en visualiser les détails.
-
Sur la page de détails de déploiement PostgreSQL, sélectionnez Lancement de la console.
-
Dans la page de connexion à la console de déploiement, entrez les informations d'identification d'administration GoldenGate fournies à l'étape 1 de la tâche 1.
Remarque : la connexion est requise si IAM n'a pas été sélectionné en tant que banque d'informations d'identification lors de la création d'un déploiement.
-
-
Dans la console de déploiement, sélectionnez Connexions de base de données dans la navigation de gauche, puis la base de données PostgreSQL source et Trandata.
-
Sur la page TRANDATA, en regard des informations TRANDATA, sélectionnez Ajouter TRANDATA (icône Plus).
-
Dans le panneau Trandata, dans Nom du schéma, entrez
src_ociggll, puis sélectionnez Soumettre.Remarque : utilisez le champ de recherche pour rechercher
src_ociggllet vérifier que les tables ont été ajoutées.
Tâche 3 : créer les extractions
-
Ajoutez l'extraction de capture de données de modification :
-
Dans la navigation de gauche, sélectionnez Extractions,
-
Sur la page Extractions, sélectionnez Ajouter une extraction (icône Plus), puis renseignez les champs comme suit :
-
Dans la page Extract Information :
-
Pour Type d'extraction, sélectionnez Extraction de capture de données de modification.
-
Dans Nom de processus, entrez un nom pour l'extraction, par exemple
ECDC. -
Sélectionnez Suivant.
-
-
Dans la page Extract Options :
-
Pour les informations d'identification source, sélectionnez Oracle GoldenGate dans la liste déroulante Domaine.
-
Sélectionnez la base de données PostgreSQL source dans la liste déroulante Alias.
-
Dans Nom de trace d'extraction, saisissez un nom de trace à deux caractères, tel que
C1. -
Sélectionnez Suivant.
-
-
Sur la page Paramètres d'extraction, remplacez
MAP *.*, TARGET *.*;par l'élément suivant :TABLE SRC_OCIGGLL.*;
-
-
Sélectionnez Créer et exécuter.
-
-
Ajoutez l'extraction de chargement initial :
-
Sur la page Extractions, sélectionnez Ajouter une extraction, puis remplissez le formulaire Ajouter une extraction comme suit :
-
Dans la page Extract Information :
-
Pour le type d'extraction, sélectionnez Extraction de chargement initial.
-
Dans Nom de processus, entrez un nom, tel que
EIL. -
Sélectionnez Suivant.
-
-
Dans la page Extract Options :
-
Pour les informations d'identification source, sélectionnez Oracle GoldenGate dans la liste déroulante Domaine.
-
Sélectionnez la base de données PostgreSQL dans la liste déroulante Alias.
-
Dans Nom de piste d'extraction, saisissez un nom de piste à deux caractères, tel que
I1. -
Sélectionnez Suivant.
-
-
Dans la page Extract Parameters, remplacez le contenu de la zone de texte par ce qui suit :
EXTRACT EIL USERIDALIAS PostgreSQL_Compute, DOMAIN OracleGoldenGate EXTFILE I1, PURGE TABLE src_ociggll.*;Remarque : avant de passer à l'étape suivante, veillez à enlever le paramètre
SOURCEDBdevantUSERIDALIAS.
-
-
Sélectionnez Créer et exécuter.
-
Vous revenez à la page Extractions, où vous pouvez voir le début de l'extraction.
Tâche 4 : créer le chemin de distribution pour l'extraction du chargement initial
Pour créer un chemin de distribution pour l'extraction de chargement initial, procédez comme suit :
-
Dans la console Oracle Cloud, sur la page Déploiements, sélectionnez le déploiement MySQL cible.
-
Sur la page de détails du déploiement, sélectionnez Lancer la console, puis connectez-vous en tant qu'administrateur.
-
Si vous utilisez la banque d'informations d'identification IAM, passez à l'étape Créer un chemin de distribution. Si vous utilisez la banque d'informations d'identification GoldenGate, créez un utilisateur avec lequel GoldenGate source se connecte à GoldenGate cible.
-
Dans le menu de navigation, sélectionnez Administration des utilisateurs.
-
Sélectionnez Ajouter un nouvel utilisateur (icône Plus), renseignez les champs comme suit, puis sélectionnez Soumettre :
-
Dans Nom utilisateur, entrez
ggsnet. -
Dans Rôle, sélectionnez Opérateur.
-
Indiquez le mot de passe à deux reprises pour vérification.
-
-
-
Dans la console de déploiement PostgreSQL source, créez une connexion de chemin pour l'utilisateur créé à l'étape précédente.
-
Dans le menu de navigation, sélectionnez Connexions de chemin.
-
Sélectionnez Ajouter une connexion de chemin (icône Plus), renseignez les champs comme suit, puis sélectionnez Soumettre :
-
Dans Alias d'informations d'identification, entrez
dpuser. -
Dans ID utilisateur, entrez
ggsnet. -
Dans Mot de passe, entrez le mot de passe utilisé à l'étape précédente.
-
-
-
Créer un chemin de distribution.
-
Dans la barre de menus du service, sélectionnez Chemins, puis Ajouter un chemin de distribution (icône Plus).
-
Remplissez le formulaire Ajouter un chemin comme suit :
-
Dans la page Path Information :
-
Dans Nom du chemin, saisissez un nom pour ce chemin.
-
Sélectionnez Suivant.
-
-
Dans la page Source Options :
-
Pour Extraction source, laissez ce champ vide.
-
Dans Nom de piste, saisissez le nom du suivi de l'extraction de chargement initial (
I1). -
Sélectionnez Suivant.
-
-
Dans la page Target Options :
-
Dans Cible, sélectionnez WSS.
-
Dans Hôte cible, entrez l'URL du déploiement cible, sans https :// ni barre oblique de fin.
-
Dans Numéro de port, saisissez
443. -
Dans Nom de la trace, entrez
I1. -
Dans Méthode d'authentification cible, sélectionnez Alias d'ID utilisateur.
-
Dans Domaine, entrez le nom de domaine créé à l'étape précédente.
-
Dans Alias, entrez l'alias créé à l'étape précédente (
dpuser). -
Sélectionnez Suivant.
-
-
-
Sélectionnez Créer et exécuter.
Vous revenez à la page Distribution Service où vous pouvez consulter le chemin créé.
-
-
Dans la console de déploiement cible cible, vérifiez le chemin de destinataire créé consécutifment au chemin de distribution :
-
Sélectionnez Chemins.
-
Consultez les détails du parcours.
-
Tâche 5 : ajouter une réplication pour le chargement initial
-
Dans la console de déploiement MySQL cible, ajoutez une table de points de reprise.
-
Dans le menu de navigation, sélectionnez Connexions de base de données, Base de données HeatWave cible, puis Points de reprise.
-
Sélectionnez Ajouter une adresse (icône Plus).
-
Dans le volet Point de reprise, dans Table de schéma, entrez
SRCMIRROR_OCIGGLL.CHECKTABLE. -
Sélectionnez Soumettre.
-
-
Ajoutez le processus Initial Load Replicat.
-
Dans le menu de navigation, sélectionnez Réplications, puis Ajouter une réplication (icône Plus).
-
Dans la page Replicats, renseignez les champs Ajouter une réplication comme suit :
-
Dans la page Replicat Information :
-
Pour Type de réplication, sélectionnez Parallèle ou Coordonné.
-
Dans Nom de processus, entrez un nom, tel que
RIL. -
Sélectionnez Suivant.
-
-
Dans la page Replicat Options :
-
Dans Nom de traçabilité Replicat, saisissez le nom de l'arborescence de traçabilité à partir de l'étape 2 (
I1). -
Pour Informations d'identification cible, sélectionnez le domaine et l'alias pour la connexion à la base de données HeatWave.
-
Dans Table de point de reprise, sélectionnez la table du point de reprise créée à l'étape 1.
-
Sélectionnez Suivant.
-
-
Dans la page Parameter File, ajoutez le mapping suivant :
MAP src_ociggll.*, TARGET SRCMIRROR_OCIGGLL.*;
-
-
Sélectionnez Créer et exécuter.
Vous revenez à la page Replicats, dans laquelle vous pouvez consulter les détails de la réplication.
-
-
Vérifiez la charge initiale :
-
Dans Cloud Shell, connectez-vous au VCN et au sous-réseau utilisés par votre instance HeatWave.
-
Une fois connecté, exécutez la commande suivante :
mysqlsh <user>@<MySQL DB Private IP>:3306 --sql -
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 renvoyer les données chargées dans les tables de base de données cible suite au chargement initial.
-
Tâche 6 : créer le chemin de distribution pour la capture des données de modification
-
Dans la console de déploiement PostgreSQL source, sélectionnez Service de distribution.
-
Sélectionnez Ajouter un chemin de distribution.
-
Remplissez le formulaire Ajouter un chemin comme suit :
-
Dans la page Path Information :
-
Dans Nom de chemin, entrez un nom.
-
Sélectionnez Suivant.
-
-
Dans la page Source Options :
-
Pour Extraction source, sélectionnez l'extraction de capture des données de modification (
ECDC). -
Dans Nom de la trace, sélectionnez le fichier trace de capture de données de modification (
C1). -
Sélectionnez Suivant.
-
-
Dans la page Target Options :
-
Dans Cible, sélectionnez WSS.
-
Pour Hôte cible, entrez l'URL de la console de déploiement cible (vous pouvez la trouver sur la page de détails du déploiement, sans https :// ni barre oblique de fin).
-
Dans Numéro de port, saisissez
443. -
Dans Nom de la trace, entrez
C1. -
Dans Méthode d'authentification cible, sélectionnez Alias d'ID utilisateur.
-
Dans Domaine, saisissez le nom de domaine.
-
Saisissez l'alias dans Alias.
-
-
Sélectionnez Créer un chemin et exécuter.
-
-
Dans la console de déploiement MySQL cible, sélectionnez Service de destinataire, puis vérifiez le chemin de destinataire créé.
Tâche 7 : ajouter une réplication pour la capture des données de modification
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.
-
Ajouter une réplication:
-
Dans la console de déploiement cible, sélectionnez Service d'administration, puis dans le menu de navigation, sélectionnez Réplications.
-
Sur la page Réplications, sélectionnez Ajouter une réplication (icône Plus), puis complétez le formulaire Ajouter une réplication comme suit :
- Dans la page Replicat Information :
-
Pour Type de réplication, sélectionnez Réplication non intégrée.
-
Dans Nom de processus, entrez un nom, tel que
RCDC. -
Sélectionnez Suivant.
-
- Dans la page Replicat Options :
-
Dans Nom de traces Replicat, saisissez le nom de l'arborescence de traces de l'étape 3 (
C1). -
Pour Informations d'identification cible, sélectionnez le domaine et l'alias de la connexion HeatWave.
-
Pour Table de point de reprise, sélectionnez la table de point de reprise.
-
- Dans la page Replicat Information :
-
Dans la page Paramètres de réplication, remplacez
MAP *.*, TARGET *.*;par le mapping suivant :MAP src_ociggll.*, TARGET SRCMIRROR_OCIGGLL.*; -
Sélectionnez Créer et exécuter.
Vous revenez à la page Replicats, dans laquelle vous pouvez consulter les détails de la réplication.
-
-
Vérifier la capture des données de modification :
-
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. 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); -
Dans la console de déploiement PostgreSQL source, sélectionnez le nom d'extraction de capture de données de modification (
ECDC), sélectionnez Détails, puis Statistiques. Vérifiez quesrc_ociggll.src_citycomporte 10 insertions.Remarque : si l'extraction n'a capturé aucune insertion, redémarrez l'extraction
ECDC. -
Dans le déploiement MySQL cible, sélectionnez le processus Replicat
RCDC, vérifiez ses détails et ses statistiques pour vérifier le nombre d'insertions.
-