Remarques :
- Ce tutoriel nécessite un accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction à Oracle Cloud Infrastructure Free Tier.
- Il utilise des exemples de valeurs pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. Lorsque vous terminez votre atelier, remplacez ces valeurs par celles propres à votre environnement cloud.
Migration d'une base de données MongoDB exécutée sur MongoDB Atlas ou sur site vers Oracle Autonomous JSON Database
Introduction
MongoDB est l'une des bases de données open source les plus populaires utilisées pour créer et stocker des données dans des documents flexibles de type JSON, ce qui signifie que les champs peuvent varier d'un document à l'autre et que la structure des données peut être modifiée au fil du temps.
Oracle, l'une des principales bases de données relationnelles et multimodèles de renommée mondiale, appelée base de données convergée, est capable de gérer JSON. Oracle a introduit la prise en charge de JSON à partir de v12c, des données JSON stockées sous la forme varchar2 ou de LOB (Large Object de caractère (CLOB)/Large Object binaire (BLOB)).
Défis liés à MongoDB :
-
MongoDB est rapide à démarrer, mais il manque des fonctionnalités clés pour les déploiements d'entreprise.
-
La prise en charge limitée des transactions entraîne des problèmes de cohérence des données.
-
Requêtes analytiques difficiles et inefficaces (et aucune requête parallèle).
-
Fonctionnalités de sécurité immatures.
-
Fonctionnalité ANSI SQL (Structured Query Language) de l'American National Standards Institute.
Avantages de l'utilisation du type de données JSON dans Oracle :
-
A partir de la version 21c d'Oracle, JSON est stocké au format natif afin que les utilisateurs puissent interroger les documents JSON à l'aide du langage SQL standard qui permet de créer des applications avec la flexibilité d'un modèle de conception sans schéma avec toute la puissance d'Oracle Database, comme la réplication, le partitionnement, l'indexation avec toutes les fonctionnalités dont Oracle Database est capable.
-
JSON peut être manipulé via une requête SQL.
-
Stocké en tant qu'OSON (représentation binaire native optimisée de JSON).
Remarque : assurez-vous que la connectivité est établie entre le déploiement Big Data GoldenGate d'Oracle Cloud Infrastructure (OCI), les bases de données source et cible.
Objectifs
- Configurez MongoDB et Oracle Autonomous JSON Database à l'aide du déploiement Big Data d'OCI GoldenGate.
Prérequis
-
Provisionnez les ressources suivantes :
-
Environnement OCI tel que (compartiment, réseau cloud virtuel (VCN), sous-réseau, etc.).
-
Oracle Autonomous JSON Database.
-
Machine virtuelle de calcul OCI pour l'ensemble de répliques MongoDB.
-
Déploiement Big Data OCI GoldenGate.
-
Tâche 1 : installer le fichier binaire MongoDB et démarrer les services MongoDB
-
Créez trois instances OCI Compute pour la configuration de la réplication et attachez un volume de blocs pour le répertoire de données.
-
Mettez à jour les référentiels
yum
pour télécharger le fichier binaire MongoDB à l'aide de la commande suivante.vi /etc/yum.repos.d/mongodb-enterprise-8.0.repo [mongodb-enterprise-8.0] name=MongoDB Enterprise Repository baseurl=https://repo.mongodb.com/yum/redhat/8/mongodb-enterprise/8.0/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://pgp.mongodb.com/server-8.0.asc sudo yum install -y mongodb-enterprise
-
Créez le répertoire de données et accordez les droits d'accès requis à l'aide de la commande suivante.
cd /data ls chmod 755 mongo cd chmod 755 -R /data/mongo chown mongod:mongod -R /data/mongo chmod 400 /etc/mongod.Keyfile chown mongod:mongod -R /etc/mongod.Keyfile
Remarque : le fichier de clés est nécessaire pour une authentification sécurisée. A des fins de test, le fichier de clés peut être généré à l'aide de la commande
open-ssl
. -
Créez le fichier de configuration à l'aide de la commande suivante.
cat /etc/mongod.conf
-
Désactivez
selinux
et démarrez les servicesmongod
à l'aide des commandes suivantes.setenforce 0 getenforce systemctl start mongod systemctl status mongod
-
Effectuez les mêmes opérations sur les deux noeuds restants qui feront office de noeud secondaire.
Tâche 2 : créer un ensemble de répliques MongoDB
-
Connectez-vous au premier noeud et à la base de données d'administration.
-
Exécutez les commandes suivantes pour lancer la réplication et créer le premier administrateur. Cet utilisateur de réplication sera utilisé pour la configuration et la gestion de la réplication.
mongosh use admin
rs.initiate() db.createUser({ ... user: "admin", ... pwd: "password", ... roles: [ ... { role: "root", db: "admin" } ... ] ... })
db.auth("admin","password") rs.conf()
-
Ajoutez les deux noeuds restants à l'aide des commandes suivantes. Ceux-ci seront ajoutés en tant que noeuds secondaires.
rs.add("10.0.1.163;27017")
rs.add("10.0.1.51:27017")
-
Vérifiez la configuration et le statut de l'ensemble de répliques à l'aide des commandes suivantes.
db.auth("admin","password") rs.conf()
rs.status()
rs.printReplicationInfo()
Tâche 3 : chargement des données dans l'ensemble de répliques MongoDB
-
Restaurez le vidage dans l'ensemble de répliques MongoDB à l'aide de la commande
mongorestore
.mongorestore --username admin --password password dump/
Remarque : le vidage ci-dessus a été obtenu à partir d'un autre ensemble de répliques MongoDB à l'aide de la commande
mongodump
pour toutes les bases de données exécutées sous cet ensemble de répliques. -
Exécutez la commande suivante pour vérifier si toutes les bases de données et leurs collections respectives ont été restaurées dans l'ensemble de répliques MongoDB.
mongosh use admin db.auth("admin","password") show dbs
Tâche 4 : configuration d'Oracle Autonomous JSON Database dans OCI
-
Connectez-vous à la console OCI, accédez à Oracle Database, à Autonomous Database et entrez les informations suivantes, comme indiqué dans les images pour créer une base de données autonome.
Remarque : pour la compatibilité MongoDB, l'accès réseau doit être défini de manière à sécuriser l'accès à partir des adresses IP et des réseaux cloud virtuels autorisés uniquement ou de l'accès à l'adresse privée uniquement.
-
Cliquez sur Modifier la configuration de l'outil, activez l'API MongoDB et copiez l'URL.
Remarque : vous devez modifier le nom utilisateur et le mot de passe dans la chaîne de connexion ci-dessus.
Tâche 5 : création d'une machine client de base de données pour accéder à Oracle Autonomous JSON Database et installation des outils MongoDB requis
-
Téléchargez le fichier de portefeuille et configurez la connectivité pour Oracle Autonomous JSON Database à l'aide des commandes suivantes.
cat tnsnames.Oracle
cat sqlnet.Ora
-
Téléchargez les outils MongoDB pour la connectivité à l'aide des commandes suivantes.
wget https://fastdl.mongodb.org/tools/db/mongodb-database-tools-rhel70-x86_64-100.5.2.tgz
tar -xvf mongodb-database-toosl-rhel70-x86_64-100.5.2.tgz
wget https://downloads.mongodb.com/compass/mongosh-1.3.1-linux-x64.tgz
tar -xvf mongosh-1.3.1-linux-x64.tgz
-
Définissez Chemin et URI (adresse Oracle Autonomous Transaction Processing (ATP)) en tant que variable d'environnement à l'aide des commandes suivantes.
cd export PATH=/home/oracle/mongosh-1.3.1-linux-x64/bin/:$PATH export PATH=$PATH:/home/oracle/mongodb-database-tools-rhel70-x86_64-100.5.2/bin echo $path
-
Vérifiez si vous pouvez vous connecter à Oracle Autonomous JSON Database à l'aide de la commande suivante.
export URI='mongodb://admin:xxxx@xxxxxx-ADBJ.adb.us-ashburn-1.oraclecloudapps.com:27017/admin?authMechanism=PLAIN&authSource=$external&ssl=true&retryWrites=false&loadBalanced=true' mongosh $URI
Tâche 6 : télécharger le vidage vers le bucket OCI Object Storage et l'importer dans ATP
-
Effectuez le vidage d'une collection à l'aide de la commande
mongoexport
.mongoexport --host=mrep1 --port 27017 --username=admin --authicationDatabase=admin --collection=data --db=sample_weatherdata --out=wheather_data.Json
-
Cliquez sur Télécharger vers le serveur pour télécharger le vidage d'une seule collection de bases de données qui a été effectuée à l'aide de la commande
mongoexport
sur l'ensemble de répliques MongoDB. -
Cliquez sur Visualiser les détails d'objet pour obtenir les détails d'adresse d'objet.
-
Exécutez la commande
curl
pour lire les données de cet objet et la commandemongoimport
vers ATP à l'aide de l'adresse.curl -X GET https://objectstorage.us-ashburn-1.oraclecloud.com/p/ujXv8Pmhxt9EyLlA9ogm_X524pDRGEymJwbDVyUExAACra1VpAql32U0XaRnaxLt/n/orasenatdoracledigital01/b/jsonbucket/o/wheather_data.json | mongoimport --collection data --uri $URI
-
Vérifiez si la collecte a été importée dans la base de données ATP.
-
Vérification croisée si le nombre de documents est identique à la source.
Test réussi. Désormais, nous devons déplacer toutes les données exécutées sous plusieurs bases de données dans l'ensemble de répliques MongoDB source vers Oracle Autonomous JSON Database cible et déployer les services OCI GoldenGate pour une migration quasiment sans temps d'inactivité.
-
Pour le déplacement de données, vous pouvez utiliser la commande
mongodump
afin de copier les données de la base de données source vers la base de données cible en tant que chargement unique.export URI="mongodb://mrep1:27017 --username admin --authenticationDatabase admin" mongodump --uri=$URI
-
Copiez ce fichier dump vers le système cible à partir duquel vous pouvez exécuter la commande
mongorestore
(déjà expliqué dans la tâche 3 pour le chargement dans Oracle Autonomous JSON Database cible).Remarque : veillez à créer le même nom de schéma dans Oracle Autonomous JSON Database pour les collections de bases de données à migrer.
create user sample_airbnb identified by <password>; grant connect, resource to sample_airbnb; grant unlimited tablespace to sample_airbnb; BEGIN ORDS_ADMIN.ENABLE_SCHEMA(p_schema => 'SAMPLE_AIRBNB'); commit; END; /
Tâche 7 : déploiement d'OCI GoldenGate
-
Accédez à la console OCI, accédez à Oracle Database, à GoldenGate, à Déploiements et cliquez sur Créer un déploiement.
Pour MongoDB vers Oracle Autonomous JSON Database, nous devons sélectionner Technologie en tant que Big Data et Type de déploiement en tant que Réplication de données.
-
Créez une clé secrète à l'avance à partir de la console OCI pour la connexion et la gestion des utilisateurs administrateurs.
Tâche 8 : création d'une connexion pour MongoDB et Oracle Autonomous JSON Database
-
Accédez à la console OCI, accédez à Oracle Database, à GoldenGate, à Connexions et cliquez sur Créer une connexion.
-
Entrez les informations suivantes, comme indiqué dans l'image, pour créer une connexion à la base de données source.
-
Répétez l'étape 1 et entrez les informations suivantes, comme illustré dans l'image, pour créer une connexion à la base de données cible.
Tâche 9 : affecter et tester la connexion au déploiement OCI GoldenGate
-
Accédez à la console OCI, accédez à Oracle Database, à GoldenGate, à Connexions et cliquez sur la connexion créée dans la tâche 8.
-
Cliquez sur Déploiements affectés et sur Affecter un déploiement.
-
Sélectionnez le déploiement et cliquez sur Affecter un déploiement.
-
Cliquez sur les trois points et sur Tester la connexion pour vous assurer qu'elle a réussi.
Tâche 10 : Créer des processus d'extraction et de réplication
-
Accédez à la console OCI, accédez à Oracle Database, à GoldenGate, à Déploiements et cliquez sur le déploiement créé dans la tâche 7.
Cliquez sur Lancer la console pour ouvrir la console de configuration OCI GoldenGate.
-
Entrez le nom utilisateur et le mot de passe créés lors du déploiement.
Une fois connecté à la page de console, vous pouvez voir toutes les options requises pour la configuration Extraire et Répliquer. Vous pouvez créer des services d'extraction et de réplication comme indiqué dans les étapes suivantes.
-
Configurer le traitement d'extraction.
Sélectionnez Alias de connexion qui a été créé pour la base de données MongoDB source.
Dans Fichier de paramètres,
sample_airbnb
est une base de données dans MongoDB et*
représente toutes les collections de cette base de données. -
Configurez le processus de réplication.
-
Sélectionnez Réplication classique dans Type de réplication.
-
Entrez les informations obligatoires suivantes.
Vous devez sélectionner le même nom de fichier trace, qui a été nommé lors de la création du processus d'extraction. Sélectionnez Cible comme Oracle Autonomous JSON Database et entrez l'alias de connexion créé dans la tâche 8.
Le processus de réplication réplique toutes les transactions de la base de données
sample_airbnb
dans les schémas MongoDB verssample_airbnb
dans Oracle Autonomous JSON Database.
Remarque : vous devez modifier respectivement le nom de la base de données source et cible et le nom du schéma dans la configuration.
-
-
Une fois la configuration du processus d'extraction et de réplication terminée, démarrez le processus en conséquence.
Remarque : Oracle Autonomous JSON Database doit être configuré avec une adresse privée. Si le certificat n'est pas utilisé, vous pouvez modifier l'authentification comme sans TLS mutuel (mTLS).
Si la certification correcte n'est pas disponible, vous pouvez obtenir l'erreur suivante dans le fichier journal de réplication :
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Tâche 11 : démarrer les processus d'extraction et de réplication et valider
Cliquez sur Service d'administration pour vérifier le statut des processus, ainsi que leurs rapports et fichiers journaux respectifs, en cas de problème.
-
Statut du traitement d'extraction :
-
Statut du processus de réplication :
Tâche 12 : Tester la synchronisation des données
-
Dans la source et la cible, vérifiez le nombre de documents dans les détails de collecte avant d'insérer des données à l'aide des commandes suivantes.
-
Base de données source :
show dbs use sample_airbnb show collections db.emp.countDocuments()
-
Base de données cible:
show dbs use Sample_airbnb show collections db.emp.countDocuments()
-
-
Vérifiez les données des bases de données source et cible à l'aide des commandes suivantes.
-
Base de données source :
db.emp.find({"name":"joe"}) db.emp.find({"name":"John"})
-
Base de données cible:
db.emp.find({"name":"joe"}) db.emp.find({"name":"John"})
-
-
Insérez des données sur la source et vérifiez si elles ont été répliquées sur la cible à l'aide des commandes suivantes.
-
Base de données source :
dm.emp.insertOne( { "name":"John","job":"Data Analyst","Salary":7000}) db.emp.countDocuments() db.emp.find({"name":"John"})
-
Base de données cible:
show DBs show collections db.emp.find({"name":"John"})
-
Tâche 13 : Connexion à MongoDB Atlas
La connexion à MongoDB Atlas est différente de la connexion à une base de données MongoDB sur site.
-
La chaîne de connexion par défaut MongoDB Atlas suivante n'est pas prise en charge.
mongodb+srv://<db_username>:<db_password>@cluster0.xxxxx.mongodb.net/
-
Pour une connexion réussie, nous devons utiliser la chaîne de connexion suivante.
mongodb://cluster0-shard-00-00.xxxx.mongodb.net:27017,cluster0-shard-00-01.xxxx.mongodb.net:27017,cluster0-shard-00-02.xxxx.mongodb.net:27017/?ssl=true&replicaSet=xxxx&authSource=admin&retryWrites=true&w=majority&appName=Cluster0
Remarque : veillez à créer une passerelle NAT et à l'attacher avec un sous-réseau privé utilisé par le déploiement OCI GoldenGate, ainsi que si la connexion doit être établie dans un réseau public.
Erreurs courantes dues à des problèmes de connectivité
Un problème de connectivité avec Oracle Autonomous JSON Database cible peut entraîner des erreurs diverses lors du démarrage du processus de réplication :
-
Erreur 1:
ERROR OGG-01091 Unable to open file "/u02/Deployment/var/lib/data/a1000000000" (error 2, No such file or directory).
-
Erreur 2:
ERROR OGG-15051 Java or JNI exception: java.lang.NoClassDefFoundError: oracle/goldengate/datasource/UserExitMain. oracle.goldengate.util.GGException: Error detected handling transaction commit event. Exception in thread "main" oracle.goldengate.util.GGException: Error detected handling transaction commit event. at oracle.goldengate.datasource.UserExitDataSource.commitTransaction(UserExitDataSource.java:261 at oracle.goldengate.datasource.UserExitDataSource.commitTx(UserExitDataSource.java:2180) Caused by: java.net.SocketTimeoutException: Connect timed out
-
Erreur 3 : en cas de réplication intégrée, vous risquez de rencontrer l'erreur suivante :
OGG-01091 Oracle GoldenGate Delivery, RSNOW.prm: Unable to open file "/u02/Deployment/etc/conf/ogg/<replicat name>001.properties" (error 2, No such file ordirectory). In that case, you need to set below parameter in property file of Replicate parameter. TARGETDB LIBFILE libggjava.so SET property=/u02/Deployment/etc/conf/ogg/<replicatname>.properties
-
Erreur 4 : la connexion dans MongoDB Atlas à l'aide de la chaîne de connexion par défaut n'est pas prise en charge à l'aide du déploiement Big Data OCI GoldenGate. Vous obtiendrez une erreur comme indiqué dans l'image suivante.
Liens connexes
Remerciements
- Auteur - Ashish Srivastava (architecte cloud principal, Oracle North America Cloud Services - NACIE)
Ressources de formation supplémentaires
Explorez d'autres ateliers sur docs.oracle.com/learn ou accédez à d'autres contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, visitez le site education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir la documentation produit, consultez le site Oracle Help Center.
Migrate a MongoDB Database Running on MongoDB Atlas or On-Premises to Oracle Autonomous JSON Database
G26109-01
February 2025
Copyright ©2025, Oracle and/or its affiliates.