Nota

Eseguire la migrazione di un database MongoDB in esecuzione su MongoDB Atlas o on-premise a Oracle Autonomous JSON Database

Introduzione

MongoDB è uno dei più diffusi database open source utilizzati per creare e memorizzare dati in documenti flessibili simili a JSON, il che significa che i campi possono variare da documento a documento e la struttura dei dati può essere modificata nel tempo.

Oracle, uno dei database relazionali multi-modello leader a livello mondiale denominato Converged Database, ha buone capacità di gestione JSON. Oracle ha introdotto il supporto per JSON da v12c, dati JSON memorizzati come varchar2 o Large Object (LOB) (Character Large Object (CLOB)/Binary Large Object (BLOB)).

Sfide con MongoDB:

Vantaggio dell'utilizzo del tipo di dati JSON in Oracle:

Nota: assicurarsi che venga stabilita la connettività tra la distribuzione dei Big Data, i database di origine e di destinazione di Oracle Cloud Infrastructure (OCI) GoldenGate.

Obiettivi

Prerequisiti

Task 1: installare il file binario MongoDB e avviare i servizi MongoDB

  1. Crea tre istanze di OCI Compute per l'impostazione della replica e collega il volume a blocchi per la directory dei dati.

    immagine

  2. Aggiornare i repository yum per scaricare il file binario MongoDB utilizzando il comando seguente.

    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
    

    immagine

  3. Creare una directory dati e concedere l'autorizzazione richiesta utilizzando il comando seguente.

    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
    

    immagine

    immagine

    Nota: per l'autenticazione sicura è necessario il file chiave. A scopo di test, il file chiave può essere generato utilizzando il comando open-ssl.

  4. Creare il file di configurazione utilizzando il comando seguente.

    cat /etc/mongod.conf
    

    immagine

  5. Disabilitare selinux e avviare i servizi mongod utilizzando i comandi seguenti.

    setenforce 0
    getenforce
    systemctl start mongod
    systemctl status mongod
    

    immagine

  6. Eseguire le stesse operazioni sui due nodi rimanenti che fungeranno da nodo secondario.

Task 2: creare un set di repliche MongoDB

  1. Connettersi al primo nodo e al database di amministrazione.

  2. Eseguire i comandi riportati di seguito per avviare la replica e creare il primo utente amministratore. Questo utente di replica verrà utilizzato per la configurazione e la gestione della replica.

    mongosh
    use admin
    

    immagine

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

    immagine

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

    immagine

  3. Aggiungere i due nodi rimanenti utilizzando i comandi seguenti. Questi verranno aggiunti come nodi secondari.

    rs.add("10.0.1.163;27017")
    

    immagine

    rs.add("10.0.1.51:27017")
    

    immagine

  4. Controllare la configurazione e lo stato del set di repliche utilizzando i comandi seguenti.

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

    immagine

    rs.status()
    

    immagine

    immagine

    immagine

    immagine

    rs.printReplicationInfo()
    

    immagine

Task 3: caricare i dati nel set di repliche MongoDB

  1. Ripristinare il dump nel set di repliche MongoDB utilizzando il comando mongorestore.

    mongorestore --username admin --password password dump/
    

    immagine

    immagine

    immagine

    Nota: il dump precedente è stato ottenuto da un altro set di repliche MongoDB che utilizza il comando mongodump per tutti i database in esecuzione nel set di repliche.

  2. Eseguire il comando seguente per verificare se tutti i database e le relative raccolte sono stati ripristinati nel set di repliche MongoDB.

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

    immagine

Task 4: configurare Oracle Autonomous JSON Database in OCI

  1. Eseguire il login a OCI Console, passare a Oracle Database, Autonomous Database e immettere le informazioni riportate di seguito, come mostrato nelle immagini, per creare un database autonomo.

    immagine

    immagine

    immagine

    Nota: per la compatibilità MongoDB, è necessario impostare l'accesso di rete per proteggere l'accesso solo dagli IP e dalle VCN consentiti o solo dall'accesso agli endpoint privati.

  2. Fare clic su Modifica configurazione strumento, abilitare MongoDB API e copiare l'URL.

    immagine

    immagine

    immagine

    Nota: è necessario modificare il nome utente e la password nella stringa di connessione sopra riportata.

Task 5: creare un computer client del database per accedere a Oracle Autonomous JSON Database e installare gli strumenti MongoDB necessari

  1. Scaricare il file wallet e configurare la connettività per Oracle Autonomous JSON Database utilizzando i comandi riportati di seguito.

    cat tnsnames.Oracle
    

    immagine

    cat sqlnet.Ora
    

    immagine

    immagine

  2. Scaricare gli strumenti MongoDB per la connettività utilizzando i comandi seguenti.

    wget https://fastdl.mongodb.org/tools/db/mongodb-database-tools-rhel70-x86_64-100.5.2.tgz
    

    immagine

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

    immagine

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

    immagine

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

    immagine

  3. Impostare Percorso e URI (endpoint ATP (Oracle Autonomous Transaction Processing) come variabile di ambiente utilizzando i comandi riportati di seguito.

    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
    

    immagine

    immagine

    immagine

  4. Controllare se è possibile connettersi a Oracle Autonomous JSON Database utilizzando il comando seguente.

    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
    

    immagine

Task 6: Carica dump nel bucket di storage degli oggetti OCI e importa in ATP

  1. Eseguire il dump di una raccolta utilizzando il comando mongoexport.

    immagine

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

    immagine

  2. Fare clic su Carica per caricare il dump di una singola raccolta di database utilizzata con il comando mongoexport sul set di repliche MongoDB.

    immagine

  3. Fare clic su Visualizza dettagli oggetto per ottenere i dettagli dell'endpoint dell'oggetto.

    immagine

    immagine

  4. Eseguire il comando curl per leggere i dati da tale oggetto e il comando mongoimport su ATP utilizzando l'endpoint.

    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
    

    immagine

  5. Controllare se la raccolta è stata importata nel database ATP.

    immagine

  6. Verifica incrociata se il numero di documenti è uguale all'origine.

    immagine

    Test completato. Ora è possibile spostare tutti i dati in esecuzione in più database nel set di repliche MongoDB di origine in Oracle Autonomous JSON Database di destinazione e distribuire i servizi GoldenGate OCI per una migrazione dei tempi di inattività pressoché nulla.

  7. Per lo spostamento dei dati, è possibile utilizzare il comando mongodump per copiare i dati dal database di origine al database di destinazione come caricamento occasionale.

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

    immagine

    immagine

  8. Copiare questo dump nel sistema di destinazione da cui è possibile eseguire il comando mongorestore (già spiegato nel task 3 per il caricamento nell'Oracle Autonomous JSON Database di destinazione).

    Nota: assicurarsi di creare lo stesso nome di schema in Oracle Autonomous JSON Database per le raccolte di database di cui si desidera eseguire la migrazione.

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

Task 7: Distribuisci OCI GoldenGate

  1. Andare alla console OCI, andare a Oracle Database, GoldenGate, Distribuzioni e fare clic su Crea distribuzione.

    Per MongoDB in Oracle Autonomous JSON Database, è necessario selezionare Tecnologia come Big Data e Tipo di distribuzione come Replica dati.

    immagine

    immagine

  2. Crea il segreto in anticipo da OCI Console per il login e la gestione degli utenti amministratori.

    immagine

    immagine

    immagine

Task 8: creare una connessione per MongoDB e Oracle Autonomous JSON Database

  1. Andare alla console OCI, andare a Oracle Database, GoldenGate, Connessioni e fare clic su Crea connessione.

    immagine

  2. Immettere le informazioni riportate di seguito come mostrato nell'immagine per creare la connessione al database di origine.

    immagine

  3. Ripetere il passo 1 e immettere le informazioni riportate di seguito, come mostrato nell'immagine, per creare la connessione al database di destinazione.

    immagine

Task 9: assegnare ed eseguire il test della connessione alla distribuzione GoldenGate OCI

  1. Andare alla console OCI, andare a Oracle Database, GoldenGate, Connessioni e fare clic sulla connessione creata nel task 8.

  2. Fare clic su Distribuzioni assegnate e su Assegna distribuzione.

    immagine

  3. Selezionare la distribuzione e fare clic su Assegna distribuzione.

    immagine

  4. Fare clic sui tre punti e su Test della connessione per assicurarsi che sia riuscita.

    immagine

    immagine

Task 10: Crea processi di estrazione e replica

  1. Andare alla console OCI, andare a Oracle Database, GoldenGate, Distribuzioni e fare clic sulla distribuzione creata nel task 7.

    Fare clic su Avvia console per aprire la console di configurazione GoldenGate OCI.

    immagine

  2. Immettere il nome utente e la password creati durante la distribuzione.

    immagine

    Una volta eseguito il login alla pagina della console, è possibile visualizzare tutte le opzioni necessarie per la configurazione di Estrai e Replicat. È possibile creare servizi di estrazione e replica come illustrato nei passi successivi.

  3. Configura il processo di estrazione.

    Selezionare Alias connessione creato per il database MongoDB di origine.

    immagine

    immagine

    In File dei parametri, sample_airbnb è un database in MongoDB e * rappresenta tutte le raccolte in tale database.

    immagine

  4. Configura il processo replicat.

    1. Selezionare Replicat classico come Tipo di replica.

      immagine

    2. Immettere le informazioni richieste riportate di seguito.

      È necessario selezionare lo stesso nome file trail, che è stato nominato nella creazione del processo di estrazione. Selezionare Destinazione come Oracle Autonomous JSON Database e immettere l'alias di connessione creato nel task 8.

      immagine

      Il processo Replicat replicherà tutte le transazioni dal database sample_airbnb in MongoDB agli schemi sample_airbnb in Oracle Autonomous JSON Database.

      immagine

    Nota: nella configurazione è necessario modificare rispettivamente il nome del database di origine e di destinazione e il nome dello schema.

  5. Una volta completata la configurazione del processo di estrazione e replica, avviare il processo di conseguenza.

    Nota: Oracle Autonomous JSON Database deve essere configurato con un endpoint privato. Se il certificato non viene utilizzato, è possibile modificare l'autenticazione senza TLS reciproco (mTLS).

    Se la certificazione corretta non è disponibile, è possibile che venga visualizzato il seguente errore nel file di log della replica:

    Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    

    immagine

Task 11: Avvia estrazione e replica processi e convalida

Fare clic su Servizio amministrativo per verificare la presenza di eventuali problemi sia nello stato dei processi che nei relativi report e file di log.

immagine

Task 12: Sincronizzazione dei dati di test

  1. Nell'origine e nella destinazione, controllare il conteggio dei documenti nei dettagli della raccolta prima di inserire alcuni dati utilizzando i comandi seguenti.

    • Database di origine:

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

      immagine

    • Database di destinazione:

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

      immagine

  2. Controllare i dati nel database di origine e di destinazione utilizzando i comandi riportati di seguito.

    • Database di origine:

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

      immagine

    • Database di destinazione:

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

      immagine

  3. Inserire i dati nell'origine e verificare se sono stati replicati nella destinazione utilizzando i comandi seguenti.

    • Database di origine:

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

      immagine

    • Database di destinazione:

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

      immagine

      immagine

      immagine

Task 13: connessione all'atlante MongoDB

La connessione a MongoDB Atlas è diversa dalla connessione a un database MongoDB in locale.

Nota: assicurarsi di creare un gateway NAT e collegarsi alla subnet privata utilizzata dalla distribuzione GoldenGate di OCI, nonché se la connessione deve essere stabilita in una rete pubblica.

immagine

Errori comuni dovuti a problemi di connettività

Il problema di connettività per la destinazione di Oracle Autonomous JSON Database può causare errori vari durante l'avvio del processo di replica:

Conferme

Altre risorse di apprendimento

Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.

Per la documentazione del prodotto, visita l'Oracle Help Center.