Condividi tramite


Esercitazione: Eseguire la migrazione offline di MongoDB all'API di Azure Cosmos DB for MongoDB usando gli strumenti MongoDB nativi

SI APPLICA A: MongoDB

Importante

Prima di eseguire i passaggi di migrazione, leggere questa guida completa.

Questa guida alla migrazione di MongoDB fa parte della serie sulla migrazione di MongoDB. I passaggi critici per la migrazione di MongoDB sono pre-migrazione, migrazione e post-migrazione, come illustrato di seguito.

Diagramma dei passaggi di migrazione.

Panoramica della migrazione dei dati con gli strumenti nativi di MongoDB

È possibile usare gli strumenti nativi MongoDB per eseguire una migrazione offline (una tantum) di database da un'istanza locale o da un cloud di MongoDB all’API di Azure Cosmos DB for MongoDB.

In questa esercitazione apprenderai a:

  • Scegliere lo strumento nativo MongoDB appropriato per il caso d'uso
  • Eseguire la migrazione.
  • Monitorare la migrazione.
  • Verificare che la migrazione sia stata completata correttamente.

In questa esercitazione si esegue la migrazione di un set di dati in MongoDB ospitato in una macchina virtuale di Azure all'API di Azure Cosmos DB per MongoDB usando gli strumenti nativi di MongoDB. Gli strumenti nativi di MongoDB sono un set di file binari che facilitano la manipolazione dei dati in un'istanza di MongoDB esistente. Poiché Azure Cosmos DB espone un'API per MongoDB, gli strumenti nativi di MongoDB sono in grado di inserire dati in Azure Cosmos DB. L'obiettivo di questo documento è eseguire la migrazione dei dati da un'istanza di MongoDB usando gli strumentimongoexport/mongoimport o mongodump/mongorestore. Poiché gli strumenti nativi si connettono a MongoDB tramite stringhe di connessione, è possibile eseguire gli strumenti ovunque, tuttavia è consigliabile utilizzarli all'interno della stessa rete dell'istanza di MongoDB per evitare problemi di firewall.

Gli strumenti nativi di MongoDB possono spostare i dati solo con la velocità consentita dall'hardware host. Per questo motivo, tali strumenti possono essere la soluzione più semplice per i set di dati di piccole dimensioni in cui il tempo di migrazione totale non è un problema. Il connettore Spark MongoDB, il Servizio Migrazione dei dati di Azure (DMS) o Azure Data Factory (ADF) possono essere alternative migliori se è necessaria una pipeline di migrazione scalabile.

Se non è già stata configurata un'origine MongoDB, vedere l'articolo Installare e configurare MongoDB in una VM Windows in Azure.

Prerequisiti

Per completare questa esercitazione, è necessario:

  • Completare la procedura di pre-migrazione, ad esempio stimare la velocità effettiva, scegliere una chiave di partizione e i criteri di indicizzazione.
  • Creare un account Azure Cosmos DB for MongoDB.
  • Accedere all'istanza di MongoDB
    • Scaricare e installare gli strumenti nativi MongoDB da questo collegamento.
      • Assicurarsi che la versione degli strumenti nativi di MongoDB corrisponda all'istanza esistente di MongoDB.
      • Se l'istanza di MongoDB ha una versione diversa da quella di Azure Cosmos DB for MongoDB, installare entrambe le versioni degli strumenti nativi di MongoDB e usare la versione appropriata rispettivamente per MongoDB e Azure Cosmos DB for MongoDB.
    • Aggiungere un utente con autorizzazioni readWrite, se non ne esiste già uno. Più avanti in questa esercitazione, fornire questo nome utente/password agli strumenti mongoexport e mongodump.

Configurare i tentativi sul lato server di Azure Cosmos DB

I clienti che eseguono la migrazione da MongoDB ad Azure Cosmos DB traggono vantaggio dalle funzionalità di governance delle risorse che garantiscono la possibilità di usare completamente le UR/sec di velocità effettiva. Azure Cosmos DB può limitare una determinata richiesta durante la migrazione se tale richiesta supera le UR/sec del contenitore di cui è stato effettuato il provisioning, quindi è necessario ripetere la richiesta. Il tempo di round trip coinvolto nell'hop di rete tra lo strumento di migrazione e Azure Cosmos DB influisce sul tempo di risposta complessivo della richiesta; inoltre, gli strumenti nativi di MongoDB potrebbero non gestire i tentativi ripetuti. La funzionalità di ripetizione dei tentativi lato server di Azure Cosmos DB consente al servizio di intercettare i codici di errore di limitazione e riprovare con tempi di round trip molto inferiori, migliorando notevolmente i tempi di risposta delle richieste. Dal punto di vista degli strumenti nativi di MongoDB, la necessità di gestire i tentativi ripetuti è ridotta al minimo; questo influisce positivamente sull'esperienza durante la migrazione.

È possibile trovare la funzionalità di ripetizione dei tentativi lato server nel pannello Funzionalità del portale di Azure Cosmos DB

Screenshot della funzionalità SSR di MongoDB.

Se è Disabilitata, è consigliabile abilitarla come illustrato di seguito

Screenshot dell'abilitazione di MongoDB SSR.

Scegliere lo strumento nativo di MongoDB appropriato

Diagramma della selezione dello strumento nativo MongoDB migliore.

  • mongoexport/mongoimport è la migliore coppia di strumenti per eseguire la migrazione di un subset del database MongoDB.
    • mongoexport esporta i dati esistenti in un file JSON o CSV leggibile. mongoexport accetta un argomento che specifica il subset dei dati esistenti da esportare.
    • mongoimport apre un file JSON o CSV e ne inserisce il contenuto nell'istanza del database di destinazione (in questo caso, Azure Cosmos DB).
    • Nota: i formati JSON e CSV non sono formati compatti per cui è possibile che vengano addebitati ulteriori costi di rete perché mongoimport invia dati ad Azure Cosmos DB.
  • La coppia di strumenti di migrazione mongodump/mongorestore è la migliore per eseguire la migrazione dell'intero database MongoDB. Il formato BSON compatto rende più efficiente l'uso delle risorse di rete poiché i dati vengono inseriti in Azure Cosmos DB.
    • mongodump esporta i dati esistenti come file BSON.
    • mongorestore importa il file dump BSON in Azure Cosmos DB.
  • Per inciso, se si ha semplicemente un file JSON di piccole dimensioni da importare in Azure Cosmos DB for MongoDB, lo strumento mongoimport rappresenta una soluzione rapida per l'inserimento dei dati.

Raccogliere le credenziali di Azure Cosmos DB for MongoDB

Azure Cosmos DB for MongoDB fornisce credenziali di accesso compatibili che possono usare gli strumenti nativi di MongoDB. È necessario disporre di queste credenziali di accesso per eseguire la migrazione dei dati in Azure Cosmos DB for MongoDB. Per trovare queste credenziali:

  1. Aprire il portale di Azure

  2. Passare all'account Azure Cosmos DB for MongoDB

  3. Nel riquadro di spostamento a sinistra, selezionare il pannello Stringa di connessione e verrà visualizzato un aspetto simile al seguente:

    Screenshot delle credenziali di Azure Cosmos DB.

    • HOST: l'endpoint di Azure Cosmos DB funziona come nome host di MongoDB
    • PORTA : quando gli strumenti nativi di MongoDB si connettono ad Azure Cosmos DB, è necessario specificare questa porta in modo esplicito
    • NOME UTENTE: il prefisso del nome di dominio dell'endpoint di Azure Cosmos DB funziona come nome utente MongoDB
    • PASSWORD: la chiave master di Azure Cosmos DB funziona come password MongoDB
    • Inoltre, si noti che il campo SSL, ovverotrue, lo strumento nativo di MongoDB deve abilitare SSL durante la scrittura di dati in Azure Cosmos DB

Eseguire la migrazione

  1. Scegliere i database e le raccolte di cui si desidera eseguire la migrazione. In questo esempio viene eseguita la migrazione della raccolta di query nel database edx da MongoDB ad Azure Cosmos DB.

Il resto di questa sezione illustrerà l'utilizzo della coppia di strumenti selezionati nella sezione precedente.

mongoexport/mongoimport

  1. Per esportare i dati dall'istanza di MongoDB di origine, aprire un terminale nel computer dell'istanza di MongoDB. Se si tratta di un computer Linux, immettere

    mongoexport --host HOST:PORT --authenticationDatabase admin -u USERNAME -p PASSWORD --db edx --collection query --out edx.json
    

    Su Windows, l'eseguibile è mongoexport.exe. HOST, PORTA, NOME UTENTE e PASSWORD devono essere compilati in base alle proprietà dell'istanza del database MongoDB esistente.

    È anche possibile scegliere di esportare solo un subset del set di dati MongoDB. Un modo per eseguire questa operazione consiste nell'aggiungere un argomento di filtro aggiuntivo:

    mongoexport --host HOST:PORT --authenticationDatabase admin -u USERNAME -p PASSWORD --db edx --collection query --out edx.json --query '{"field1":"value1"}'
    

    Verranno esportati solo i documenti che corrispondono al filtro {"field1":"value1"}.

    Una volta eseguita la chiamata, si dovrebbe poter visualizzare il file edx.json generato:

    Screenshot della chiamata mongoexport.

  2. È possibile usare lo stesso terminale per importare edx.json in Azure Cosmos DB. Se si esegue lo strumento mongoimport su un computer Linux, digitare

    mongoimport --host HOST:PORT -u USERNAME -p PASSWORD --db edx --collection importedQuery --ssl --type json --writeConcern="{w:0}" --file edx.json
    

    Su Windows, l'eseguibile è mongoimport.exe. HOST, PORTA, NOME UTENTE e PASSWORD devono essere compilati in base alle credenziali di Azure Cosmos DB raccolte in precedenza.

  3. Monitorare l'output del terminale da mongoimport. Sul terminale si dovrebbero visualizzare righe di testo con gli aggiornamenti sullo stato della migrazione:

    Screenshot della chiamata mongoimport.

  4. Esaminare infine Azure Cosmos DB per verificare che la migrazione sia riuscita. Aprire il portale di Azure Cosmos DB e passare a Esplora dati. Si noterà (1) che è stato creato un database edx con una raccolta importedQuery e (2) se è stato esportato solo un subset di dati, importQuery deve contenere solo documenti corrispondenti al subset dei dati desiderato. Nell'esempio seguente un solo documento corrisponde al filtro {"field1":"value1"}:

    Screenshot della verifica dei dati di Azure Cosmos DB.

mongodump/mongorestore

  1. Per creare un dump di dati BSON dall'istanza di MongoDB di origine, aprire un terminale nel computer dell'istanza di MongoDB. Se si tratta di un computer Linux, immettere

    mongodump --host HOST:PORT --authenticationDatabase admin -u USERNAME -p PASSWORD --db edx --collection query --ssl --out edx-dump
    

    HOST, PORTA, NOME UTENTE e PASSWORD devono essere compilati in base alle proprietà dell'istanza del database MongoDB esistente. Si dovrebbe visualizzare che viene generata una directory edx-dump e che la struttura di directory di edx-dump riproduce la gerarchia delle risorse (database e struttura di raccolta) dell'istanza di MongoDB di origine. Ogni raccolta è rappresentata da un file BSON:

    Screenshot della chiamata mongodump.

  2. È possibile usare lo stesso terminale per ripristinare i contenuti di edx-dump in Azure Cosmos DB. Se si utilizza lo strumento mongorestore su un computer Linux, immettere

    mongorestore --host HOST:PORT --authenticationDatabase admin -u USERNAME -p PASSWORD --db edx --collection importedQuery --writeConcern="{w:0}" --ssl edx-dump/edx/query.bson
    

    Su Windows, l'eseguibile è mongorestore.exe. HOST, PORTA, NOME UTENTE e PASSWORD devono essere compilati in base alle credenziali di Azure Cosmos DB raccolte in precedenza.

  3. Monitorare l'output del terminale da mongorestore. Sul terminale si dovrebbero visualizzare righe di testo con gli aggiornamenti sullo stato dell'importazione:

    Screenshot della chiamata mongorestore.

  4. Esaminare infine Azure Cosmos DB per verificare che la migrazione sia riuscita. Aprire il portale di Azure Cosmos DB e passare a Esplora dati. Si noterà (1) che è stato creato un database edx con una raccolta importedQuery e (2) importedQuery deve contenere l'intero set di dati dalla raccolta di origine:

    Screenshot della verifica dei dati mongorestore di Azure Cosmos DB.

Ottimizzazione della post-migrazione

Dopo aver eseguito la migrazione dei dati archiviati nel database MongoDB nell'API per MongoDB di Azure Cosmos DB, è possibile connettersi ad Azure Cosmos DB e gestire i dati. È anche possibile eseguire altre procedure di ottimizzazione della post-migrazione, ad esempio: ottimizzare i criteri di indicizzazione, aggiornare il livello di coerenza predefinito o configurare la distribuzione globale per l'account Azure Cosmos DB. Per altre informazioni, vedere l'articolo Ottimizzazione della post-migrazione.

Risorse aggiuntive

Passaggi successivi