Note:

Migración de una base de datos MongoDB que se ejecuta en MongoDB Atlas o local a Oracle Autonomous JSON Database

Introducción

MongoDB es una de las bases de datos de código abierto más populares que se utilizan para crear y almacenar datos en documentos flexibles similares a JSON, lo que significa que los campos pueden variar de un documento a otro y que la estructura de datos se puede cambiar con el tiempo.

Oracle, que es una de las principales bases de datos relacionales y multimodelo del mundo denominada base de datos convergente, tiene una buena capacidad para manejar JSON. Oracle ha introducido soporte para JSON de v12c, datos JSON almacenados como varchar2 u objeto grande (LOB) (objeto grande de caracteres (CLOB)/objeto grande binario (BLOB)).

Desafíos con MongoDB:

Ventaja del uso de tipo de dato JSON en Oracle:

Nota: Asegúrese de que se establece la conectividad entre las bases de datos de despliegue, origen y destino de Big Data de Oracle Cloud Infrastructure (OCI) GoldenGate.

Objetivos

Requisitos

Tarea 1: Instalación de los servicios binarios MongoDB e inicio de los servicios MongoDB

  1. Cree tres instancias de OCI Compute para la configuración de replicación y asocie el volumen en bloque para el directorio de datos.

    image

  2. Actualice los repositorios yum para descargar el binario MongoDB mediante el siguiente comando.

    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. Cree el directorio de datos y otorgue el permiso necesario con el siguiente comando.

    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

    Nota: El archivo de claves es necesario para la autenticación segura. Para fines de prueba, el archivo de claves se puede generar mediante el comando open-ssl.

  4. Cree el archivo de configuración con el siguiente comando.

    cat /etc/mongod.conf
    

    image

  5. Desactive selinux e inicie los servicios mongod con los siguientes comandos.

    setenforce 0
    getenforce
    systemctl start mongod
    systemctl status mongod
    

    image

  6. Realice las mismas operaciones en los dos nodos restantes que actuarán como nodo secundario.

Tarea 2: Crear juego de réplicas MongoDB

  1. Conéctese al primer nodo y conéctese a la base de datos de administración.

  2. Ejecute los siguientes comandos para iniciar la replicación y crear el primer usuario administrador. Este usuario de replicación se utilizará para la configuración y la gestión de la replicación.

    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. Agregue los dos nodos restantes mediante los siguientes comandos. Se agregarán como nodos secundarios.

    rs.add("10.0.1.163;27017")
    

    image

    rs.add("10.0.1.51:27017")
    

    image

  4. Compruebe la configuración y el estado del juego de réplicas mediante los siguientes comandos.

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

    image

    rs.status()
    

    image

    image

    image

    image

    rs.printReplicationInfo()
    

    image

Tarea 3: Carga de datos en el juego de réplicas MongoDB

  1. Restaure el volcado en el juego de réplicas MongoDB mediante el comando mongorestore.

    mongorestore --username admin --password password dump/
    

    image

    image

    image

    Nota: El volcado anterior se ha obtenido de otro juego de réplicas MongoDB mediante el comando mongodump para todas las bases de datos que se ejecutan en ese juego de réplicas.

  2. Ejecute el siguiente comando para comprobar si todas las bases de datos y sus respectivas recopilaciones se han restaurado en el juego de réplicas MongoDB.

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

    image

Tarea 4: Configuración de Oracle Autonomous JSON Database en OCI

  1. Conéctese a la consola de OCI, vaya a Oracle Database, Autonomous Database e introduzca la siguiente información, como se muestra en las imágenes para crear una base de datos autónoma.

    image

    image

    image

    Nota: Para la compatibilidad con MongoDB, el acceso de red se debe definir en acceso seguro solo desde IP y VCN permitidas o solo acceso de punto final privado.

  2. Haga clic en Editar configuración de herramienta, active la API MongoDB y copie la URL.

    image

    image

    image

    Nota: Debe cambiar el nombre de usuario y la contraseña en la cadena de conexión anterior.

Tarea 5: Creación de una máquina cliente de base de datos para acceder a Oracle Autonomous JSON Database e instalación de las herramientas MongoDB necesarias

  1. Descargue el archivo de cartera y configure la conectividad para Oracle Autonomous JSON Database mediante los siguientes comandos.

    cat tnsnames.Oracle
    

    image

    cat sqlnet.Ora
    

    image

    image

  2. Descargue las herramientas de MongoDB para la conectividad mediante los siguientes comandos.

    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. Defina Ruta y URI (punto final de Oracle Autonomous Transaction Processing (ATP)) como variable de entorno mediante los siguientes comandos.

    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. Compruebe si puede conectarse a Oracle Autonomous JSON Database mediante el siguiente comando.

    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

Tarea 6: Carga del volcado en el cubo de OCI Object Storage e importación en ATP

  1. Realice el volcado de una recopilación mediante el comando mongoexport.

    image

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

    image

  2. Haga clic en Cargar para cargar el volcado de una única recopilación de base de datos que se ha realizado mediante el comando mongoexport en el juego de réplicas MongoDB.

    image

  3. Haga clic en Ver detalles de objeto para obtener detalles de punto final de objeto.

    image

    image

  4. Ejecute el comando curl para leer los datos de ese objeto y el comando mongoimport en ATP mediante el punto final.

    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. Compruebe si la recopilación se ha importado a la base de datos ATP.

    image

  6. Comprobación cruzada si el número de documentos es el mismo que el origen.

    image

    Prueba Correcta Ahora, somos buenos para mover todos los datos que se ejecutan en varias bases de datos en la réplica MongoDB de origen definida en Oracle Autonomous JSON Database de destino y desplegar los servicios GoldenGate de OCI para una migración casi sin tiempo de inactividad.

  7. Para el movimiento de datos, puede utilizar el comando mongodump para copiar datos de la base de datos origen a la base de datos destino como una carga única.

    export URI="mongodb://mrep1:27017 --username admin --authenticationDatabase admin"
    mongodump --uri=$URI
    

    image

    image

  8. Copie este volcado en el sistema de destino desde el que puede ejecutar el comando mongorestore (ya se explica en la tarea 3 para cargarlo en Oracle Autonomous JSON Database de destino).

    Nota: Asegúrese de crear el mismo nombre de esquema en Oracle Autonomous JSON Database para las recopilaciones de base de datos que desea migrar.

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

Tarea 7: Despliegue de OCI GoldenGate

  1. Vaya a la consola de OCI, vaya a Oracle Database, GoldenGate, Despliegues y haga clic en Crear despliegue.

    Para MongoDB a Oracle Autonomous JSON Database, debemos seleccionar Tecnología como Big Data y Tipo de despliegue como Replicación de datos.

    image

    image

  2. Cree un secreto por adelantado desde la consola de OCI para la conexión y gestión de usuarios administradores.

    image

    image

    image

Tarea 8: Crear conexión para MongoDB y Oracle Autonomous JSON Database

  1. Vaya a la consola de OCI, vaya a Oracle Database, GoldenGate, Conexiones y haga clic en Crear conexión.

    image

  2. Introduzca la siguiente información como se muestra en la imagen para crear la conexión a la base de datos origen.

    image

  3. Repita el paso 1 e introduzca la siguiente información como se muestra en la imagen para crear la conexión a la base de datos de destino.

    image

Tarea 9: Asignación y prueba de la conexión al despliegue de OCI GoldenGate

  1. Vaya a la consola de OCI, vaya a Oracle Database, GoldenGate, Conexiones y haga clic en la conexión creada en la tarea 8.

  2. Haga clic en Despliegues asignados y en Asignar despliegue.

    image

  3. Seleccione el despliegue y haga clic en Asignar despliegue.

    image

  4. Haga clic en los tres puntos y en Probar conexión para asegurarse de que se realiza correctamente.

    image

    image

Tarea 10: Creación de procesos de extracción y replicación

  1. Vaya a la consola de OCI, vaya a Oracle Database, GoldenGate, Despliegues y haga clic en el despliegue creado en la tarea 7.

    Haga clic en Iniciar consola y se abrirá la consola de configuración GoldenGate de OCI.

    image

  2. Introduzca el nombre de usuario y la contraseña creados durante el despliegue.

    image

    Una vez conectado a la página de la consola, puede ver todas las opciones necesarias para la configuración de Extraer y Replicar. Puede crear servicios de extracción y replicación como se muestra en los pasos posteriores.

  3. Configuración del proceso de extracción.

    Seleccione Alias de conexión que se ha creado para la base de datos MongoDB de origen.

    image

    image

    En Archivo de parámetros, sample_airbnb es una base de datos en MongoDB y * representa todas las recopilaciones de esa base de datos.

    image

  4. Configurar el proceso de replicación.

    1. Seleccione Replicat Clásico como Tipo de Replicat.

      image

    2. Introduzca la siguiente información.

      Debe seleccionar el mismo nombre de archivo de pista, que se ha nombrado en la creación del proceso de extracción. Seleccione Destino como Oracle Autonomous JSON Database e introduzca Alias de conexión que se ha creado en la tarea 8.

      image

      El proceso de Replicat replicará todas las transacciones de la base de datos sample_airbnb en esquemas MongoDB a sample_airbnb en Oracle Autonomous JSON Database.

      image

    Nota: Debe cambiar el nombre de la base de datos de origen y de destino y el nombre del esquema, respectivamente, en la configuración.

  5. Una vez que haya terminado con la configuración del proceso de extracción y replicación, inicie el proceso según corresponda.

    Nota: Oracle Autonomous JSON Database se debe configurar con un punto final privado. Si no se utiliza el certificado, puede cambiar la autenticación como sin TLS mutua (mTLS).

    En caso de que la certificación correcta no esté disponible, puede obtener el siguiente error en el archivo log de replicación:

    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

Tarea 11: Iniciar extracción, replicación de procesos y validación

Haga clic en Servicio administrativo para comprobar el estado de los procesos y sus respectivos informes y archivos log de cualquier incidencia.

image

Tarea 12: Sincronización de datos de prueba

  1. En origen y destino, compruebe el recuento de documentos en el detalle de recopilación antes de insertar algunos datos mediante los siguientes comandos.

    • Base de Datos Origen:

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

      image

    • Base de datos destino:

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

      image

  2. Compruebe los datos en la base de datos de origen y destino mediante los siguientes comandos.

    • Base de Datos Origen:

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

      image

    • Base de datos destino:

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

      image

  3. Inserte datos en el origen y compruebe si se han replicado en el destino mediante los siguientes comandos.

    • Base de Datos Origen:

      dm.emp.insertOne(
      { "name":"John","job":"Data Analyst","Salary":7000})
      db.emp.countDocuments()
      db.emp.find({"name":"John"})
      

      image

    • Base de datos destino:

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

      image

      image

      image

Tarea 13: Conectar a MongoDB Atlas

La conexión a MongoDB Atlas es diferente a la conexión a una base de datos MongoDB local.

Nota: Asegúrese de crear un gateway de NAT y asociarse a una subred privada que esté utilizando el despliegue GoldenGate de OCI, así como de que la conexión deba establecerse en una red pública.

image

Errores comunes debido a problemas de conectividad

El problema de conectividad al destino de Oracle Autonomous JSON Database puede provocar errores varios al iniciar el proceso de replicación:

Agradecimientos

Más recursos de aprendizaje

Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de formación gratuita en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.

Para obtener documentación sobre el producto, visite Oracle Help Center.