Note :
- Ce tutoriel nécessite l'accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, voir Démarrer avec le niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeurs pour les données d'identification, la location et les compartiments Oracle Cloud Infrastructure. À la fin de votre laboratoire, remplacez ces valeurs par celles propres à votre environnement en nuage.
Migrer une base de données MongoDB exécutée sur MongoDB Atlas ou sur place vers Oracle Autonomous JSON Database
Présentation
MongoDB est l'une des bases de données à code source libre les plus 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, qui est l'une des principales bases de données relationnelles à modèles multiples de renommée mondiale appelée base de données convergée, a une bonne capacité de traitement de JSON. Oracle a introduit la prise en charge de JSON à partir de v12c, des données JSON stockées en tant que varchar2 ou grand objet (LOB) (grand objet CLOB)/grand objet binaire (BLOB)).
Défis liés à MongoDB :
-
MongoDB est rapide pour démarrer, mais il manque des fonctions 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.
-
Interrogations analytiques difficiles et inefficaces (et pas d'interrogation parallèle).
-
Caractéristiques de sécurité immatures.
-
Fonctionnalité ANSI SQL (Structured Query Language) de l'American National Standards Institute.
Avantage de l'utilisation du type de données JSON dans Oracle :
-
À partir de la version 21c d'Oracle, JSON est stocké dans un format natif afin que les utilisateurs puissent interroger des documents JSON à l'aide de SQL standard, qui permet de créer une application 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 d'Oracle Database.
-
JSON peut être manipulé au moyen d'une interrogation SQL.
-
Stocké en tant qu'OSON (une représentation binaire native optimisée de JSON).
Note : Assurez-vous que la connectivité est établie entre le déploiement du service de mégadonnées pour Oracle Cloud Infrastructure (OCI) GoldenGate, les bases de données source et cible.
Objectifs
- Configurez MongoDB et Oracle Autonomous JSON Database à l'aide du déploiement du service de mégadonnées pour OCI GoldenGate.
Préalables
-
Provisionnez les ressources suivantes :
-
Environnement OCI tel que (compartiment, réseau en nuage virtuel (VCN), sous-réseau, etc.).
-
Base de données Oracle Autonomous JSON Database.
-
Machine virtuelle de calcul OCI pour le jeu de répliques MongoDB.
-
Déploiement du service de mégadonnées OCI GoldenGate.
-
Tâche 1 : Installer MongoDB Binaire et démarrer les services MongoDB
-
Créez trois instances de calcul OCI pour la configuration de réplication et attachez un volume par 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 un répertoire de données et accordez l'autorisation requise à 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
Note : Le fichier de clés est nécessaire pour l'authentification sécurisée. À des fins de test, le fichier de clés peut être généré à l'aide de la commande
open-ssl
. -
Créez un 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 agiront en tant que noeud secondaire.
Tâche 2 : Créer un jeu 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 du jeu de répliques à l'aide des commandes suivantes.
db.auth("admin","password") rs.conf()
rs.status()
rs.printReplicationInfo()
Tâche 3 : Charger les données dans le jeu de répliques MongoDB
-
Restaurez le vidage dans le jeu de répliques MongoDB à l'aide de la commande
mongorestore
.mongorestore --username admin --password password dump/
Note : Le vidage ci-dessus a été obtenu à partir d'un autre jeu de répliques MongoDB à l'aide de la commande
mongodump
pour toutes les bases de données exécutées sous ce jeu 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 le jeu de répliques MongoDB.
mongosh use admin db.auth("admin","password") show dbs
Tâche 4 : Configurer Oracle Autonomous JSON Database dans OCI
-
Connectez-vous à la console OCI, naviguez jusqu'à Oracle Database, Autonomous Database et entrez les informations suivantes, comme indiqué dans les images, pour créer une base de données autonome.
Note : Pour la compatibilité MongoDB, l'accès réseau doit être réglé à Accès sécurisé à partir des adresses IP et des réseaux en nuage virtuels autorisés uniquement ou à Accès au point d'extrémité privé uniquement.
-
Cliquez sur Modifier la configuration de l'outil, activez l'API MongoDB et copiez l'URL.
Note : Vous devez modifier le nom d'utilisateur et le mot de passe dans la chaîne de connexion ci-dessus.
Tâche 5 : Créer une machine client de base de données pour accéder à Oracle Autonomous JSON Database et installer les 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 (point d'extrémité 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 : Charger le vidage vers le seau de stockage d'objets OCI 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 Charger pour charger le vidage d'une seule collection de bases de données qui a été prise à l'aide de la commande
mongoexport
sur le jeu de répliques MongoDB. -
Cliquez sur Voir les détails de l'objet pour obtenir les détails du point d'extrémité de l'objet.
-
Exécutez la commande
curl
pour lire les données de cet objet et la commandemongoimport
dans ATP à l'aide du point d'extrémité.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 collection 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. Maintenant, nous sommes prêts à déplacer toutes les données exécutées sous plusieurs bases de données dans le jeu de répliques MongoDB source vers Oracle Autonomous JSON Database cible et à déployer les services OCI GoldenGate pour une migration sans temps d'arrêt quasi nul.
-
Pour le déplacement des données, vous pouvez utiliser la commande
mongodump
pour copier des 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 vidage vers le système cible à partir duquel vous pouvez exécuter la commande
mongorestore
(déjà expliquée dans la tâche 3 pour le chargement dans la base de données Oracle Autonomous JSON Database cible).Note : Assurez-vous de 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éployer OCI GoldenGate
-
Allez à la console OCI, naviguez jusqu'à 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 comme Mégadonnées et Type de déploiement comme 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éer une connexion pour MongoDB et Oracle Autonomous JSON Database
-
Allez à la console OCI, naviguez jusqu'à Oracle Database, GoldenGate, Connexions et cliquez sur Créer une connexion.
-
Entrez les informations suivantes, comme illustré 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 indiqué 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 d'OCI GoldenGate
-
Allez à la console OCI, naviguez jusqu'à 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
-
Allez à la console OCI, naviguez jusqu'à Oracle Database, GoldenGate, Déploiements et cliquez sur le déploiement créé à la tâche 7.
Cliquez sur Lancer la console pour ouvrir la console de configuration OCI GoldenGate.
-
Entrez le nom d'utilisateur et le mot de passe qui ont été créés lors du déploiement.
Une fois connecté à la page de la console, vous pouvez voir toutes les options requises pour la configuration d'extraction et de réplication. Vous pouvez créer des services d'extraction et de réplication, comme indiqué dans les étapes suivantes.
-
configuration du traitement d'extraction;
Sélectionnez l'alias de connexion qui a été créé pour la base de données MongoDB source.
Dans le 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. -
Configurer le processus de réplication.
-
Sélectionnez Type de réplication classique comme type de réplication.
-
Entrez les informations requises suivantes.
Vous devez sélectionner le même nom de fichier de piste, qui a été nommé lors de la création du processus d'extraction. Sélectionnez Cible comme Oracle Autonomous JSON Database et entrez Alias de connexion qui a été 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 MongoDB vers les schémassample_airbnb
dans Oracle Autonomous JSON Database.
Note : Vous devez modifier le nom et le nom du schéma de la base de données source et cible respectivement dans la configuration.
-
-
Une fois que vous avez terminé la configuration du processus d'extraction et de réplication, lancez le processus en conséquence.
Note : Oracle Autonomous JSON Database doit être configuré avec un point d'extrémité privé. 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 administratif pour vérifier le statut des processus ainsi que leurs rapports et fichiers journaux respectifs pour tout problème.
-
Statut du processus 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 la collection 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 : Se connecter à MongoDB Atlas
La connexion à MongoDB Atlas est différente de la connexion à une base de données MongoDB sur place.
-
La chaîne de connexion par défaut Atlas MongoDB 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
Note : Assurez-vous de créer une passerelle NAT et de l'attacher à l'aide d'un sous-réseau privé qui est 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é à la base de données 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 pouvez 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 l'Atlas MongoDB à l'aide de la chaîne de connexion par défaut n'est pas prise en charge à l'aide du déploiement du service de mégadonnées OCI GoldenGate. Vous obtiendrez une erreur comme indiqué dans l'image suivante.
Liens connexes
Confirmation
- Auteur - Ashish Srivastava (architecte en nuage principal, services en nuage d'Oracle en Amérique du Nord - NACIE)
Autres ressources d'apprentissage
Explorez d'autres laboratoires sur la page docs.oracle.com/learn ou accédez à plus de contenu d'apprentissage gratuit sur le canal YouTube d'Oracle Learning. De plus, visitez education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir de la documentation sur le produit, visitez Oracle Help Center.
Migrate a MongoDB Database Running on MongoDB Atlas or On-Premises to Oracle Autonomous JSON Database
G26108-01
February 2025
Copyright ©2025, Oracle and/or its affiliates.