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.
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.
- Scaricare e installare gli strumenti nativi MongoDB da questo collegamento.
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
Se è Disabilitata, è consigliabile abilitarla come illustrato di seguito
Scegliere lo strumento nativo di MongoDB appropriato
- 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:
Aprire il portale di Azure
Passare all'account Azure Cosmos DB for MongoDB
Nel riquadro di spostamento a sinistra, selezionare il pannello Stringa di connessione e verrà visualizzato un aspetto simile al seguente:
- 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, ovvero
true
, lo strumento nativo di MongoDB deve abilitare SSL durante la scrittura di dati in Azure Cosmos DB
Eseguire la migrazione
- 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
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:È possibile usare lo stesso terminale per importare
edx.json
in Azure Cosmos DB. Se si esegue lo strumentomongoimport
su un computer Linux, digitaremongoimport --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.Monitorare l'output del terminale da mongoimport. Sul terminale si dovrebbero visualizzare righe di testo con gli aggiornamenti sullo stato della migrazione:
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"}
:
mongodump/mongorestore
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 diedx-dump
riproduce la gerarchia delle risorse (database e struttura di raccolta) dell'istanza di MongoDB di origine. Ogni raccolta è rappresentata da un file BSON:È possibile usare lo stesso terminale per ripristinare i contenuti di
edx-dump
in Azure Cosmos DB. Se si utilizza lo strumentomongorestore
su un computer Linux, immetteremongorestore --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.Monitorare l'output del terminale da mongorestore. Sul terminale si dovrebbero visualizzare righe di testo con gli aggiornamenti sullo stato dell'importazione:
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:
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
- Informazioni sul servizio Azure Cosmos DB
- Documentazione degli strumenti di database MongoDB
- Si sta tentando di pianificare la capacità per una migrazione ad Azure Cosmos DB?
- Se si conosce solo il numero di vcore e server nel cluster di database esistente, leggere le informazioni sulla stima delle unità richieste usando vCore o vCPU
- Se si conosce la frequenza delle richieste tipiche per il carico di lavoro corrente del database, leggere le informazioni sulla stima delle unità richieste con lo strumento di pianificazione della capacità di Azure Cosmos DB
Passaggi successivi
- Esaminare le linee guida sulla migrazione nella Guida alla migrazione di database di Microsoft per altri scenari.