Condividi tramite


Quali sono le opzioni per eseguire la migrazione dei dati da MongoDB a Azure DocumentDB?

Questo articolo illustra come pianificare ed eseguire una migrazione da MongoDB a Azure DocumentDB. Vengono illustrati gli strumenti di migrazione disponibili, le fasi principali di una migrazione e le procedure consigliate per ridurre i rischi e ridurre al minimo i tempi di inattività.

Che tu stia migrando da un server MongoDB locale, da una macchina virtuale ospitata nel cloud o da un servizio MongoDB gestito, le opzioni di migrazione, le linee guida e le procedure consigliate in questo articolo si applicano.

Fasi di migrazione chiave

Una migrazione riuscita segue queste fasi distinte. Ogni fase ha obiettivi specifici e criteri di successo.

1. Valutare

Eseguire una scansione automatica del database MongoDB di origine utilizzando l'estensione di migrazione Azure DocumentDB al fine di individuare funzionalità, comandi, sintassi di query e tipi di indice non supportati. La valutazione offre anche una panoramica della versione, della licenza, del tipo di istanza e delle metriche di database e raccolta di MongoDB. Usare questi risultati per pianificare le modifiche dello schema e identificare eventuali refactoring necessari prima della migrazione.

Suggerimento

È consigliabile esaminare in dettaglio le funzionalità e la sintassi MQL (MongoDB Query Language) supportate ed eseguire un modello di verifica prima della migrazione effettiva.

2. Preparare

Analizzare il report di valutazione e misurare il TPS (transazioni al secondo) della sorgente. Eseguire migrazioni di prova su dati rappresentativi per stabilire il livello di elaborazione (Compute Tier), il livello di archiviazione (Storage Tier) e il numero di shard di destinazione. Eseguire test delle prestazioni per assicurarsi che la configurazione di destinazione soddisfi i requisiti.

3. Perfezionare

Preparare le raccolte di destinazione con chiavi di shard e indici appropriati che corrispondano ai modelli di query di produzione. Se si usano più partizioni, decidere come distribuire le raccolte tra partizioni per bilanciare il carico e ridurre al minimo le operazioni tra partizioni.

4. Eseguire la migrazione

Eseguire il processo di migrazione per spostare i dati in modalità offline o online:

  • Migrazione offline: crea uno snapshot dell'origine all'inizio e lo copia in blocco nella destinazione. Qualsiasi dato aggiunto, aggiornato o eliminato nella sorgente dopo lo snapshot non viene copiato. Il tempo di inattività richiesto dipende dal tempo necessario per la copia in blocco.
  • Migrazione online: esegue la stessa copia bulk della modalità offline, ma monitora anche il flusso di modifiche durante il processo. Le modifiche apportate durante la migrazione vengono replicate nella destinazione, quindi il tempo di inattività dell'applicazione richiesto è minimo. Richiede un flusso di modifiche (change stream) e un oplog sufficientemente ampio sulla sorgente.

Suggerimento

Per le migrazioni online, assicurarsi che il flusso di modifiche sia abilitato e che l'oplog venga ridimensionato in modo appropriato nell'origine MongoDB per acquisire tutte le modifiche durante la finestra di migrazione.

Per gli strumenti disponibili, vedere Strumenti di migrazione.

5. Convalidare

Verificare che tutti i dati siano stati copiati, inclusi gli aggiornamenti più recenti. Confrontare i conteggi dei documenti, eseguire la convalida basata su campioni e verificare che gli indici e le strutture di dati corrispondano alle aspettative sulla destinazione. Usare script automatizzati per rendere ripetibile e coerente la convalida.

6. Cutover

Spostare il traffico di lettura verso la destinazione e verificare che non siano presenti problemi funzionali o di prestazioni. Una volta completata la convalida di lettura, spostare il traffico di scrittura verso la destinazione. Monitorare attentamente durante la finestra di cutover per individuare eventuali anomalie.

Strumenti di migrazione

Gli strumenti illustrati in questo articolo consentono di eseguire la migrazione dei carichi di lavoro MongoDB dalle origini seguenti:

  • Macchina virtuale MongoDB
  • MongoDB Atlas
  • AWS DocumentDB

L'estensione di migrazione di Azure DocumentDB

Creare e gestire il processo di migrazione in Visual Studio Code con Estensione di migrazione Azure DocumentDB (anteprima pubblica). Una soluzione progettata per la semplicità, la sicurezza e nessun tempo di inattività.

Questo strumento fornisce indicazioni dettagliate per semplificare la migrazione dei carichi di lavoro senza interruzioni del servizio. È possibile:

  • Selezionare database e raccolte specifici per la migrazione
  • Eseguire tutti i passaggi all'interno dell'interfaccia familiare di VS Code
  • Garantire la connettività sicura durante tutto il processo
  • Goditi un costo zero per l'uso dell'estensione

Con Azure'estensione per la migrazione di DocumentDB, è possibile semplificare il percorso di migrazione mantenendo il controllo e la sicurezza, senza infrastruttura o complessità aggiuntive.

Utilità app Web (online)

Semplificare la migrazione a Azure DocumentDB con MongoMigrationwebBasedUtility uno strumento progettato per efficienza, affidabilità e facilità d'uso. Il repository offre istruzioni dettagliate per la migrazione dei carichi di lavoro. Questo strumento offre un'esperienza perfetta per le migrazioni di dati online e offline. Il processo è intuitivo e richiede solo i dettagli di origine e di destinazione da fornire. Consente di eseguire facilmente la migrazione delle raccolte MongoDB mantenendo al tempo stesso il controllo, la sicurezza e la scalabilità, sfruttando al massimo il potenziale di Azure DocumentDB.

Le funzionalità principali includono:

  • Supporta la distribuzione privata all'interno della rete virtuale per una sicurezza avanzata
  • Funzionalità di ripresa automatica in caso di perdita di connessione o errori temporanei
  • Interfaccia intuitiva
  • Accesso al codice sorgente C# in GitHub

Lo strumento supporta opzioni di distribuzione flessibili e funziona in modo indipendente senza dipendenze da altre risorse Azure. Offre inoltre prestazioni scalabili con piani tariffari personalizzabili per Azure Web App.

Strumenti MongoDB nativi (offline)

È anche possibile usare gli strumenti MongoDB nativi, ad esempio mongodump/mongorestore, mongoexport/mongoimport per eseguire la migrazione dei set di dati offline (senza replicare le modifiche in tempo reale) in Azure'offerta documentDB.

Scenario Strumenti MongoDB nativi
Spostare subset di dati del database (basati su file JSON/CSV) mongoexport/mongoimport
Spostare l'intero database (basato su BSON) mongodump/mongorestore
  • 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 inserisce il contenuto nell'istanza del database di destinazione (Azure DocumentDB in questo caso).
    • JSON e CSV non sono un formato compatto; è possibile incorrere in costi di rete in eccesso come mongoimport invia dati a Azure DocumentDB.
  • 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 quando i dati vengono inseriti in Azure DocumentDB.
    • mongodump esporta i dati esistenti come file BSON.
    • mongorestore importa il dump del file BSON in Azure DocumentDB.

Annotazioni

Gli strumenti MongoDB nativi possono spostare i dati solo con la velocità consentita dall'hardware host.

Procedure consigliate per la migrazione

Usare queste procedure consigliate per ridurre i rischi, stimare la capacità in modo più accurato, migliorare la velocità di migrazione ed eseguire il cutover in modo sicuro.

Ridurre gli errori

  • Usare le password con codifica URL nelle stringhe di connessione. I caratteri speciali, ad @esempio , #e : possono interrompere l'analisi quando non sono codificati. La codifica URL consente di evitare errori di connessione durante le esecuzioni di valutazione e migrazione.

  • Esegui una valutazione di pre-migrazione prima della migrazione. La valutazione consente di identificare in anticipo le funzionalità non supportate, le lacune di compatibilità e i potenziali blocchi. Risolvi i rilievi prima della migrazione per ridurre le rielaborazioni durante la fase di transizione.

  • Esercitarsi con la migrazione e il passaggio prima della produzione. Eseguire una o più migrazioni di prova in un ambiente non di produzione. La pratica migliora l'accuratezza della tempistica, la preparazione del team e la fiducia durante il passaggio alla produzione.

Dimensiona l'infrastruttura in modo accurato

  • Eseguire una migrazione di prova su un set di dati piccolo ma rappresentativo. Utilizzare la versione di prova per acquisire dati realistici su throughput, latenza e consumo di risorse. Un campione rappresentativo fornisce stime migliori rispetto ai dati di test sintetici.

  • Estrapolare i risultati della versione di valutazione per stimare il livello di calcolo, il livello di archiviazione e il numero di partizioni. Usare le metriche di valutazione osservate per proiettare le esigenze di dimensionamento finali in base al volume completo del set di dati. Rivedere la stima se la distribuzione dei dati di produzione è diversa dall'esempio.

  • Usare il numero di documenti rappresentativi, le dimensioni e la struttura con impostazioni tipiche della produzione. Allineare le impostazioni di indicizzazione e partizionamento orizzontale di produzione durante il periodo di prova per evitare di sottovalutare i costi o la durata della migrazione. Le impostazioni di non produzione possono produrre risultati fuorvianti.

  • Stimare lo spazio di archiviazione di destinazione dai risultati delle prove anziché presumere che le dimensioni di origine e di destinazione siano uguali. I footprint di archiviazione di origine e di destinazione possono variare a causa delle differenze nelle definizioni di indice e nel layout dei dati. Usare i risultati della versione di valutazione per pianificare l'archiviazione con un buffer sicuro.

Ottimizzare la velocità di migrazione

  • Eseguire la migrazione all'interno della stessa area, quando possibile. Mantenere l'origine e la destinazione nella stessa area riduce la latenza di rete e migliora le prestazioni di trasferimento dei dati. Può anche ridurre i costi di trasferimento dei dati tra aree.

  • Scalare verso l'alto durante la migrazione, quindi scalare verso il basso dopo il passaggio. Ad esempio, è possibile ridimensionare temporaneamente il cluster di destinazione a M200 per aumentare la velocità effettiva della migrazione. Dopo la migrazione, scalare verso il basso a un livello appropriato nell'intervallo supportato per i carichi di lavoro in condizioni di stabilità.

  • Scegliere i dischi con operazioni di I/O al secondo più elevate per operazioni di scrittura più veloci. IOPS più elevate possono migliorare significativamente le prestazioni di migrazione con scrittura intensiva. Poiché le dimensioni del disco in genere non possono essere ridimensionate in un secondo momento, selezionare attentamente le dimensioni del disco durante la pianificazione.

Pianificare attentamente il passaggio perché non è possibile tornare indietro

  • Pianificare il tempo di inattività durante una finestra con traffico ridotto. Il tempo di inattività richiesto dipende dalla durata delle fasi di convalida dopo che la migrazione ha raggiunto lo stato di equilibrio. Una finestra a basso traffico riduce l'impatto aziendale.

  • Interrompere tutte le operazioni di scrittura sulla fonte appena prima del passaggio. Questo passaggio impedisce la divergenza dell'ultimo minuto tra origine e destinazione. Verificare che l'attività di scrittura sia completamente sospesa prima di completare il passaggio.

  • Convalidare i dati migrati prima di spostare le scritture. Confrontare i conteggi dei documenti, quindi eseguire il confronto tra documenti casuali di esempio (ad esempio, controlli basati su hash). Usare uno script quando possibile per rendere ripetibile la convalida.

  • Aggiornare le stringhe di connessione dell'applicazione e testare sul target. Eseguire la convalida funzionale e delle prestazioni sulle letture di destinazione e testare il traffico prima di abilitare le operazioni di scrittura in produzione. Verificare che i percorsi critici si comportino come previsto.

  • Spostare il traffico di scrittura solo dopo che la convalida ha esito positivo. Spostare le operazioni di scrittura in produzione sulla destinazione solo dopo che i risultati dei test sono positivi e coerenti. Usare un'implementazione a fasi se l'architettura dell'applicazione lo supporta.

Coordinare i team per la migrazione senza problemi

  • Assicurarsi il consenso di tutti gli stakeholder: app, dati, infrastruttura, sicurezza, rete e team di gestione. Allineare le aspettative e le responsabilità in anticipo. La proprietà condivisa riduce i malintesi e i ritardi durante l'esecuzione.

  • Usare la pianificazione e le prove per creare la fiducia del team e perfezionare le procedure. Non ci sono scorciatoie per una migrazione fluida. Le esecuzioni di prova evidenziano i problemi in un ambiente a basso rischio e consentono ai team di fare pratica.

  • Considerare il passaggio come un'operazione critica e urgente. Il passaggio richiede un coordinamento preciso e una comunicazione chiara. Definire chi sono i responsabili delle decisioni e stabilire i percorsi di escalation prima che abbia inizio.

  • Sapere chi eseguirà ogni passaggio, quando dovrebbe verificarsi e come ridurre al minimo i tempi di inattività. Assegnare responsabilità, stabilire sequenze temporali e allinearsi ai criteri di successo. Documentare il runbook cutover e condividerlo con tutti i partecipanti.

  • Coordinarsi con tutti i portatori di interesse quando la fase di transizione richiede aggiornamenti a più carichi di lavoro contemporaneamente. Pianificare il passaggio durante una finestra di manutenzione che sia adatta a tutti i team. Evitare venerdì sera o periodi vicino a importanti eventi aziendali.

  • Non affrettare né saltare le fasi di due diligence: non è possibile tornare indietro. La convalida accurata e l'esecuzione attenta impediscono errori costosi. Accetta che la transizione richiede tempo; le scorciatoie incentrate sulla velocità creano rischi.