Note:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse para obtener una cuenta gratuita, consulte Introducción a la cuenta gratuita de Oracle Cloud Infrastructure.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al finalizar la práctica, sustituya estos valores por otros específicos de su entorno en la nube.
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:
-
MongoDB es rápido de empezar, pero carece de funciones clave para los despliegues empresariales.
-
El soporte de transacciones limitado genera desafíos de coherencia de datos.
-
Consultas analíticas difíciles e ineficientes (y sin consulta paralela).
-
Funciones de seguridad inmaduras.
-
Funcionalidad del lenguaje de consulta estructurado (ANSI SQL) del American National Standards Institute.
Ventaja del uso de tipo de dato JSON en Oracle:
-
Desde la versión 21c de Oracle, JSON se almacena en formato nativo, para que los usuarios puedan consultar documentos JSON mediante SQL estándar, que permite crear aplicaciones con la flexibilidad de un modelo de diseño sin esquema con toda la potencia de Oracle Database, como la replicación, la partición y la indexación con todas las funcionalidades de las que es capaz Oracle Database.
-
JSON se puede manipular mediante una consulta SQL.
-
Se almacena como OSON (una representación binaria nativa optimizada de JSON).
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
- Configure MongoDB y Oracle Autonomous JSON Database mediante el despliegue de Big Data GoldenGate de OCI.
Requisitos
-
Aprovisione los siguientes recursos:
-
Entorno de OCI como (compartimento, red virtual en la nube (VCN), subred, etc.).
-
Oracle Autonomous JSON Database.
-
Juego de réplicas de VM de OCI Compute para MongoDB.
-
Despliegue de Big Data de OCI GoldenGate.
-
Tarea 1: Instalación de los servicios binarios MongoDB e inicio de los servicios MongoDB
-
Cree tres instancias de OCI Compute para la configuración de replicación y asocie el volumen en bloque para el directorio de datos.
-
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
-
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
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
. -
Cree el archivo de configuración con el siguiente comando.
cat /etc/mongod.conf
-
Desactive
selinux
e inicie los serviciosmongod
con los siguientes comandos.setenforce 0 getenforce systemctl start mongod systemctl status mongod
-
Realice las mismas operaciones en los dos nodos restantes que actuarán como nodo secundario.
Tarea 2: Crear juego de réplicas MongoDB
-
Conéctese al primer nodo y conéctese a la base de datos de administración.
-
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
rs.initiate() db.createUser({ ... user: "admin", ... pwd: "password", ... roles: [ ... { role: "root", db: "admin" } ... ] ... })
db.auth("admin","password") rs.conf()
-
Agregue los dos nodos restantes mediante los siguientes comandos. Se agregarán como nodos secundarios.
rs.add("10.0.1.163;27017")
rs.add("10.0.1.51:27017")
-
Compruebe la configuración y el estado del juego de réplicas mediante los siguientes comandos.
db.auth("admin","password") rs.conf()
rs.status()
rs.printReplicationInfo()
Tarea 3: Carga de datos en el juego de réplicas MongoDB
-
Restaure el volcado en el juego de réplicas MongoDB mediante el comando
mongorestore
.mongorestore --username admin --password password dump/
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. -
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
Tarea 4: Configuración de Oracle Autonomous JSON Database en OCI
-
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.
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.
-
Haga clic en Editar configuración de herramienta, active la API MongoDB y copie la URL.
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
-
Descargue el archivo de cartera y configure la conectividad para Oracle Autonomous JSON Database mediante los siguientes comandos.
cat tnsnames.Oracle
cat sqlnet.Ora
-
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
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
-
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
-
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
Tarea 6: Carga del volcado en el cubo de OCI Object Storage e importación en ATP
-
Realice el volcado de una recopilación mediante el comando
mongoexport
.mongoexport --host=mrep1 --port 27017 --username=admin --authicationDatabase=admin --collection=data --db=sample_weatherdata --out=wheather_data.Json
-
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. -
Haga clic en Ver detalles de objeto para obtener detalles de punto final de objeto.
-
Ejecute el comando
curl
para leer los datos de ese objeto y el comandomongoimport
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
-
Compruebe si la recopilación se ha importado a la base de datos ATP.
-
Comprobación cruzada si el número de documentos es el mismo que el origen.
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.
-
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
-
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
-
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.
-
Cree un secreto por adelantado desde la consola de OCI para la conexión y gestión de usuarios administradores.
Tarea 8: Crear conexión para MongoDB y Oracle Autonomous JSON Database
-
Vaya a la consola de OCI, vaya a Oracle Database, GoldenGate, Conexiones y haga clic en Crear conexión.
-
Introduzca la siguiente información como se muestra en la imagen para crear la conexión a la base de datos origen.
-
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.
Tarea 9: Asignación y prueba de la conexión al despliegue de OCI GoldenGate
-
Vaya a la consola de OCI, vaya a Oracle Database, GoldenGate, Conexiones y haga clic en la conexión creada en la tarea 8.
-
Haga clic en Despliegues asignados y en Asignar despliegue.
-
Seleccione el despliegue y haga clic en Asignar despliegue.
-
Haga clic en los tres puntos y en Probar conexión para asegurarse de que se realiza correctamente.
Tarea 10: Creación de procesos de extracción y replicación
-
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.
-
Introduzca el nombre de usuario y la contraseña creados durante el despliegue.
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.
-
Configuración del proceso de extracción.
Seleccione Alias de conexión que se ha creado para la base de datos MongoDB de origen.
En Archivo de parámetros,
sample_airbnb
es una base de datos en MongoDB y*
representa todas las recopilaciones de esa base de datos. -
Configurar el proceso de replicación.
-
Seleccione Replicat Clásico como Tipo de Replicat.
-
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.
El proceso de Replicat replicará todas las transacciones de la base de datos
sample_airbnb
en esquemas MongoDB asample_airbnb
en Oracle Autonomous JSON Database.
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.
-
-
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
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.
-
Estado de proceso de extracción:
-
Estado de proceso de Replicat:
Tarea 12: Sincronización de datos de prueba
-
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()
-
Base de datos destino:
show dbs use Sample_airbnb show collections db.emp.countDocuments()
-
-
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"})
-
Base de datos destino:
db.emp.find({"name":"joe"}) db.emp.find({"name":"John"})
-
-
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"})
-
Base de datos destino:
show DBs show collections db.emp.find({"name":"John"})
-
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.
-
No se admite la siguiente cadena de conexión predeterminada de Atlas MongoDB.
mongodb+srv://<db_username>:<db_password>@cluster0.xxxxx.mongodb.net/
-
Para una conexión correcta, necesitamos utilizar la siguiente cadena de conexión.
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
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.
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:
-
Error 1:
ERROR OGG-01091 Unable to open file "/u02/Deployment/var/lib/data/a1000000000" (error 2, No such file or directory).
-
Error 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
-
Error 3: En caso de replicación integrada, puede encontrar el siguiente error:
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
-
Error 4: La conexión en MongoDB Atlas con la cadena de conexión por defecto no está soportada mediante el despliegue de Big Data de OCI GoldenGate. Obtendrá un error como se muestra en la siguiente imagen.
Enlaces relacionados
Agradecimientos
- Autor: Ashish Srivastava (arquitecto principal de servicios en la nube de Oracle North America - NACIE)
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.
Migrate a MongoDB Database Running on MongoDB Atlas or On-Premises to Oracle Autonomous JSON Database
G26107-01
February 2025
Copyright ©2025, Oracle and/or its affiliates.