Remarques :

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 :

Avantages de l'utilisation du type de données JSON dans Oracle :

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

Prérequis

Tâche 1 : installer le fichier binaire MongoDB et démarrer les services MongoDB

  1. 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.

    image

  2. 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
    

    image

  3. 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
    

    image

    image

    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.

  4. Créez le fichier de configuration à l'aide de la commande suivante.

    cat /etc/mongod.conf
    

    image

  5. Désactivez selinux et démarrez les services mongod à l'aide des commandes suivantes.

    setenforce 0
    getenforce
    systemctl start mongod
    systemctl status mongod
    

    image

  6. 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

  1. Connectez-vous au premier noeud et à la base de données d'administration.

  2. 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
    

    image

    rs.initiate()
    db.createUser({
    ...  user: "admin",
    ...  pwd: "password",
    ...  roles: [
    ...         { role: "root", db: "admin" }
    ...   ]
    ...  })
    

    image

    db.auth("admin","password")
    rs.conf()
    

    image

  3. 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")
    

    image

    rs.add("10.0.1.51:27017")
    

    image

  4. Vérifiez la configuration et le statut de l'ensemble de répliques à l'aide des commandes suivantes.

    db.auth("admin","password")
    rs.conf()
    

    image

    rs.status()
    

    image

    image

    image

    image

    rs.printReplicationInfo()
    

    image

Tâche 3 : chargement des données dans l'ensemble de répliques MongoDB

  1. Restaurez le vidage dans l'ensemble de répliques MongoDB à l'aide de la commande mongorestore.

    mongorestore --username admin --password password dump/
    

    image

    image

    image

    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.

  2. 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
    

    image

Tâche 4 : configuration d'Oracle Autonomous JSON Database dans OCI

  1. 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.

    image

    image

    image

    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.

  2. Cliquez sur Modifier la configuration de l'outil, activez l'API MongoDB et copiez l'URL.

    image

    image

    image

    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

  1. Téléchargez le fichier de portefeuille et configurez la connectivité pour Oracle Autonomous JSON Database à l'aide des commandes suivantes.

    cat tnsnames.Oracle
    

    image

    cat sqlnet.Ora
    

    image

    image

  2. 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
    

    image

    tar -xvf mongodb-database-toosl-rhel70-x86_64-100.5.2.tgz
    

    image

    wget https://downloads.mongodb.com/compass/mongosh-1.3.1-linux-x64.tgz
    

    image

    tar -xvf mongosh-1.3.1-linux-x64.tgz
    

    image

  3. 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
    

    image

    image

    image

  4. 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
    

    image

Tâche 6 : télécharger le vidage vers le bucket OCI Object Storage et l'importer dans ATP

  1. Effectuez le vidage d'une collection à l'aide de la commande mongoexport.

    image

    mongoexport --host=mrep1 --port 27017 --username=admin --authicationDatabase=admin --collection=data --db=sample_weatherdata --out=wheather_data.Json
    

    image

  2. 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.

    image

  3. Cliquez sur Visualiser les détails d'objet pour obtenir les détails d'adresse d'objet.

    image

    image

  4. Exécutez la commande curl pour lire les données de cet objet et la commande mongoimport 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
    

    image

  5. Vérifiez si la collecte a été importée dans la base de données ATP.

    image

  6. Vérification croisée si le nombre de documents est identique à la source.

    image

    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é.

  7. 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
    

    image

    image

  8. 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

  1. 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.

    image

    image

  2. Créez une clé secrète à l'avance à partir de la console OCI pour la connexion et la gestion des utilisateurs administrateurs.

    image

    image

    image

Tâche 8 : création d'une connexion pour MongoDB et Oracle Autonomous JSON Database

  1. Accédez à la console OCI, accédez à Oracle Database, à GoldenGate, à Connexions et cliquez sur Créer une connexion.

    image

  2. Entrez les informations suivantes, comme indiqué dans l'image, pour créer une connexion à la base de données source.

    image

  3. 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.

    image

Tâche 9 : affecter et tester la connexion au déploiement OCI GoldenGate

  1. Accédez à la console OCI, accédez à Oracle Database, à GoldenGate, à Connexions et cliquez sur la connexion créée dans la tâche 8.

  2. Cliquez sur Déploiements affectés et sur Affecter un déploiement.

    image

  3. Sélectionnez le déploiement et cliquez sur Affecter un déploiement.

    image

  4. Cliquez sur les trois points et sur Tester la connexion pour vous assurer qu'elle a réussi.

    image

    image

Tâche 10 : Créer des processus d'extraction et de réplication

  1. 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.

    image

  2. Entrez le nom utilisateur et le mot de passe créés lors du déploiement.

    image

    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.

  3. Configurer le traitement d'extraction.

    Sélectionnez Alias de connexion qui a été créé pour la base de données MongoDB source.

    image

    image

    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.

    image

  4. Configurez le processus de réplication.

    1. Sélectionnez Réplication classique dans Type de réplication.

      image

    2. 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.

      image

      Le processus de réplication réplique toutes les transactions de la base de données sample_airbnb dans les schémas MongoDB vers sample_airbnb dans Oracle Autonomous JSON Database.

      image

    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.

  5. 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
    

    image

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.

image

Tâche 12 : Tester la synchronisation des données

  1. 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()
      

      image

    • Base de données cible:

      show dbs
      use Sample_airbnb
      show collections
      db.emp.countDocuments()
      

      image

  2. 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"})
      

      image

    • Base de données cible:

      db.emp.find({"name":"joe"})
      db.emp.find({"name":"John"})
      

      image

  3. 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"})
      

      image

    • Base de données cible:

      show DBs
      show collections
      db.emp.find({"name":"John"})
      

      image

      image

      image

Tâche 13 : Connexion à MongoDB Atlas

La connexion à MongoDB Atlas est différente de la connexion à une base de données MongoDB sur site.

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.

image

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 :

Remerciements

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.