Note :

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 :

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

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

Préalables

Tâche 1 : Installer MongoDB Binaire et démarrer les services MongoDB

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

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

    Image

    Image

    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.

  4. Créez un 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 agiront en tant que noeud secondaire.

Tâche 2 : Créer un jeu 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 du jeu 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 : Charger les données dans le jeu de répliques MongoDB

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

    mongorestore --username admin --password password dump/
    

    Image

    Image

    Image

    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.

  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 le jeu de répliques MongoDB.

    mongosh
    use admin
    db.auth("admin","password")
    show dbs
    

    Image

Tâche 4 : Configurer Oracle Autonomous JSON Database dans OCI

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

    Image

    Image

    Image

    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.

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

    Image

    Image

    Image

    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

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

    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 : Charger le vidage vers le seau de stockage d'objets OCI 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 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.

    Image

  3. Cliquez sur Voir les détails de l'objet pour obtenir les détails du point d'extrémité de l'objet.

    Image

    Image

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

    Image

  5. Vérifiez si la collection 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. 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.

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

    Image

    Image

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

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

    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éer une connexion pour MongoDB et Oracle Autonomous JSON Database

  1. Allez à la console OCI, naviguez jusqu'à Oracle Database, GoldenGate, Connexions et cliquez sur Créer une connexion.

    Image

  2. Entrez les informations suivantes, comme illustré 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 indiqué 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 d'OCI GoldenGate

  1. Allez à la console OCI, naviguez jusqu'à 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. 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.

    Image

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

    Image

    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.

  3. configuration du traitement d'extraction;

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

    Image

    Image

    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.

    Image

  4. Configurer le processus de réplication.

    1. Sélectionnez Type de réplication classique comme type de réplication.

      Image

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

      Image

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

      Image

    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.

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

    Image

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.

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

      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 : Se connecter à MongoDB Atlas

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

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.

Image

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 :

Confirmation

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.