Approcci alla migrazione

Completato

È possibile adottare molti approcci diversi per la migrazione del database, ad esempio migrazione online o offline, migrazione con backup e ripristino o migrazione con codice o script SQL personalizzati. Per ogni scenario aziendale esiste un approccio ideale.

Nella startup, ad esempio, il database per le comunicazioni con i fornitori è fondamentale e si vuole provare a eseguire la migrazione senza interruzioni del servizio per gli utenti. Questo reparto della società è operativo 24 ore su 24, 7 giorni su 7, quindi le pause prevedibili in cui poter portare il database offline sono poche. Il sistema CAD (Computer Aided Design), al contrario, viene usato solo durante la settimana, quindi è possibile portarlo offline durante il fine settimana ed eseguirne la migrazione ad Azure.

In questa unità verranno illustrati gli approcci, le tecniche e gli strumenti utilizzabili per eseguire la migrazione.

Quando usare l'esportazione e l'importazione

Le tecniche di esportazione e importazione consentono di controllare i dati e lo schema che vengono spostati durante la migrazione. Usare gli strumenti di esportazione e importazione per selezionare i dati di cui eseguire la migrazione al nuovo database e anche per pulire o modificare i dati durante la migrazione.

Valutare l'opportunità di usare le tecniche di esportazione e importazione:

  • Per scegliere un subset delle tabelle nel database locale di cui eseguire la migrazione al database cloud.

  • Per eseguire la migrazione di oggetti di database quali vincoli, viste, funzioni, procedure e trigger, e per controllare la configurazione di questi oggetti nel database cloud.

  • Per importare dati da origini esterne diverse da MySQL, MariaDB o PostgreSQL.

È ad esempio possibile decidere di eseguire l'esportazione e l'importazione in questi scenari:

  • Si vuole eseguire una migrazione a fasi in cui la migrazione al cloud e il test del carico di lavoro del marketing vengono eseguiti prima di quelli del carico di lavoro del supporto vendite. Entrambi i carichi di lavoro usano tabelle del database SalesDB nel sistema locale. Si vuole eseguire la migrazione delle tabelle di marketing solo nella prima fase del progetto e quella delle tabelle delle vendite solo nella seconda fase.

  • I dati locali sono obsoleti e comprendono dati sia rilevanti che irrilevanti per l'attività aziendale corrente. Si vuole cogliere l'occasione per rimuovere i dati obsoleti e prendere in considerazione uno schema del database più semplice.

  • Si usa un foglio di calcolo di grandi dimensioni contenente i dati relativi ai prodotti. Si vuole eseguire la migrazione di questi dati nel database cloud.

Pianificare una migrazione con esportazione e importazione

Il vantaggio di usare l'esportazione e l'importazione è dato da un maggior controllo sui dati di cui viene eseguita la migrazione. Esiste tuttavia uno svantaggio, ovvero che è necessaria una pianificazione più attenta per essere certi che vengano inclusi tutti gli oggetti necessari.

Assicurarsi di comprendere come verrà eseguita la migrazione degli oggetti seguenti:

  • Schema del database.
  • Vincoli, inclusi gli indici, le chiavi primarie e le chiavi esterne.
  • Viste, funzioni, procedure e trigger.
  • Account utente e autorizzazioni.

Eseguire l'esportazione e l'importazione per MySQL e MariaDB

È possibile usare gli script SQL per eseguire un'esportazione e un'importazione selettive da un database a un altro. Se tuttavia il database locale è in MySQL o MariaDB, sono disponibili diversi utili strumenti, tra cui:

  • MySQL Workbench. È uno strumento popolare di progettazione di database con un'interfaccia utente grafica (GUI) sviluppata da Oracle Corporation. Include uno strumento Data Export (Esportazione dei dati) con opzioni flessibili di selezione dei dati.

  • Toad Edge. È un set di strumenti della concorrenza sviluppato da Quest. Consente di esportare e importare i dati da database MySQL e PostgreSQL.

  • Navicat. Questo strumento GUI di amministrazione del database è compatibile anche con i database MariaDB.

  • mysqlimport. Questo strumento da riga di comando può importare i dati dai file di testo.

Importante

Database di Azure per MySQL e Database di Azure per MariaDB supportano solo il motore di archiviazione InnoDB. Se si hanno tabelle che usano altri motori, ad esempio il motore MyISAM, è necessario convertirle in InnoDB prima della migrazione ad Azure.

Esportazione e importazione di PostgreSQL

PostgreSQL fornisce gli strumenti seguenti per esportare e importare i dati:

  • pgAdmin. È un'utilità GUI per gli amministratori di PostgreSQL. Fornisce un'interfaccia per l'esportazione e l'importazione dei dati.

  • pg_dump. È uno strumento da riga di comando che consente di esportare un database in vari formati, incluso quello di test. È possibile modificare i file SQL risultanti prima di importarli con l'utilità psql.

  • Toad Edge. È la stessa utilità usata con MySQL.

Backup e ripristino

Le operazioni di backup e ripristino vengono in genere eseguite per proteggere un database da un evento disastroso. Viene eseguita e salvata una copia esatta del database. Se un evento disastroso elimina definitivamente la copia di lavoro, la copia di cui è stato eseguito il backup viene ripristinata e le normali attività possono riprendere.

Eseguendo il ripristino in una posizione diversa, si usa un backup per eseguire la migrazione del database completo a un'altra posizione, ad esempio un database nel cloud.

Quando usare il backup e il ripristino

Gli strumenti di backup consentono di eseguire una copia del database in modo più semplice e preciso. Quando si esegue il ripristino nel database cloud, i dati e lo schema saranno identici a quelli che erano presenti nel sistema locale. Usare il backup e il ripristino per eseguire la migrazione di un database:

  • Quando si vuole eseguire la migrazione di un intero database o di un set di database in un'unica operazione.

  • Quando non è necessario apportare modifiche ai dati, allo schema o ad altri oggetti di database durante la migrazione.

È possibile decidere di usare il backup e il ripristino per eseguire una migrazione in casi come i seguenti:

  • Si usa un sistema di database singolo che si vuole trasferire in modalità lift-and-shift nel cloud con meno modifiche possibili.

  • Si vuole eseguire una migrazione a fasi in un sistema con più database. Ogni carico di lavoro è supportato da un database completo.

Quando si ripristina un database da un file di backup in una posizione cloud, considerare la quantità di dati che devono essere inviati attraverso la rete al database cloud. Per ottimizzare il trasferimento dei dati, copiare il database di cui è stato eseguito il backup in una macchina virtuale nella stessa area del database di destinazione ed eseguire il ripristino da questa posizione. Questa procedura di ripristino è più rapida di quella eseguita con un file di backup locale ed è meno probabile che generi una contesa per la larghezza di banda di rete.

Pianificare un backup e un ripristino in MySQL e MariaDB

Per eseguire il backup di un database in un server locale, si usa lo strumento mysqldump nella riga di comando. Verrà creato un file SQL da ripristinare nel database cloud passandolo al comando mysql come script. Se si preferisce uno strumento GUI, scegliere l'applicazione PHPMyAdmin o MySQL Workbench. Questi strumenti GUI possono entrambi eseguire il backup e il ripristino dei dati.

Tenere presente che Database di Azure per MySQL e Database di Azure per MariaDB supportano solo il motore InnoDB. Assicurarsi di convertire tutte le tabelle in InnoDB prima di eseguire il backup.

Per evitare problemi di compatibilità, controllare che il numero di versione di MySQL o MariaDB usato nel cloud corrisponda al numero di versione del server di database locale. Database di Azure per MySQL supporta le versioni 5.6, 5.7 e 8.0. Database di Azure per MariaDB supporta le versioni 10.2 e 10.3. Se il server locale usa una versione precedente, prima di eseguire la migrazione al cloud, valutare l'opportunità di eseguire l'aggiornamento a una di queste versioni e di risolvere eventuali problemi in locale.

Pianificare un backup e un ripristino in PostgreSQL

Gli strumenti di backup e ripristino da riga di comando equivalenti in PostgreSQL sono pg_dump e pg_restore. Se si preferisce uno strumento di backup e ripristino GUI, usare Toad Edge.

Codice dell'applicazione personalizzato

Se si hanno requisiti specifici di trasformazione dei dati o si vuole eseguire una migrazione insolita, valutare l'opportunità di scrivere codice personalizzato per spostare i dati da un database MySQL, PostgreSQL o MariaDB locale al cloud.

Il codice personalizzato può avere diverse forme. Il linguaggio e il framework scelti dipendono principalmente dalle competenze del team di sviluppo:

  • Script SQL generati dal database e modificati o sviluppati da zero.
  • Codice compilato da un framework di sviluppo, ad esempio .NET o Java.
  • Script in PHP o Node.js.
  • Script della shell per Bash o PowerShell.

L'approccio con codice personalizzato offre la massima flessibilità. È possibile personalizzare il modo in cui i dati vengono filtrati, aggregati e trasformati, ma anche eseguire la migrazione a più destinazioni o unire dati da più origini. Scegliere questo approccio in caso di requisiti che non possono essere soddisfatti con uno strumento di backup o esportazione predefinito.

Lo svantaggio di questo approccio è la necessità di un maggior investimento in fase di sviluppo. Perché il codice personalizzato esegua la migrazione di tutti i dati in modo corretto, deve essere ampiamente testato prima di venire eseguito sui dati reali. Questa attività richiede un team di sviluppatori e tester esperti e spesso fa aumentare il budget del progetto. Se si sta valutando l'opportunità di scrivere codice di migrazione personalizzato, è importante non sottovalutare il tempo e il lavoro richiesti per creare codice affidabile.

Servizio Migrazione del database di Azure

Azure include un servizio flessibile denominato Servizio Migrazione del database di Azure, che consente di eseguire facilmente migrazioni online da più origini dati a piattaforme dati di Azure. Queste piattaforme includono Database di Azure per MySQL, Database di Azure per MariaDB e Database di Azure per PostgreSQL.

Valutare l'opportunità di usare il Servizio Migrazione del database di Azure ogni volta che si vuole eseguire la migrazione di un database online ad Azure.

Migrazione iniziale

Per eseguire una migrazione con il Servizio Migrazione del database, è necessario completare le attività seguenti:

  1. Creare un nuovo database di destinazione in Azure sulla piattaforma desiderata.
  2. Creare un nuovo progetto di migrazione tramite il Servizio Migrazione del database di Azure.
  3. Generare lo schema dai database di origine locali. Se si usa MySQL, è possibile generare uno schema con sqldump. Se il database di origine è PostgreSQL, usare pg_dump.
  4. Creare un database vuoto che funga da destinazione della migrazione.
  5. Applicare lo schema al database di destinazione.
  6. Configurare i dettagli di connessione per i database di origine e di destinazione in un progetto di migrazione del Servizio Migrazione del database.
  7. Eseguire il progetto di migrazione del Servizio Migrazione del database. Il progetto trasferisce i dati e genera un report.
  8. Esaminare il report e risolvere eventuali problemi identificati.

Migrazioni online

Il Servizio Migrazione del database di Azure è uno strumento efficace da usare per le migrazioni online, in cui il database originale rimane disponibile durante l'esecuzione della migrazione. Gli utenti continuano ad apportare modifiche ai dati nel database di origine. Il Servizio Migrazione del database di Azure usa la replica per sincronizzare le modifiche con il database di cui viene eseguita la migrazione. Al termine della migrazione, si riconfigurano le applicazioni utente per la connessione al database di cui è stata eseguita la migrazione.

Eseguire la migrazione di MySQL o MariaDB al database SQL di Azure

Se si vuole spostare nel cloud di Azure un database ospitato in locale in un server di database MySQL e non è necessario il database cloud per eseguire MySQL, valutare l'opportunità di eseguire la migrazione al database SQL di Azure. Il database SQL di Azure è un'implementazione PaaS del motore di database di Microsoft SQL Server leader del settore. Offre disponibilità, scalabilità e sicurezza a livello aziendale ed è facile da monitorare e gestire.

Analogamente, se il server di database locale esegue MariaDB, è possibile decidere di eseguire la migrazione al database SQL di Azure. Il processo è molto simile perché MariaDB è un fork di MySQL.

Il database SQL di Azure è più completo rispetto a Database di Azure per MySQL e Database di Azure per MariaDB.

Nota

Potrebbe essere necessario modificare le applicazioni che si connettono al database di cui è stata eseguita la migrazione, perché il database SQL di Azure usa tipi di dati diversi, oggetti di database diversi e un'API diversa rispetto a MySQL e MariaDB. Consultare gli sviluppatori per determinare quanto lavoro è richiesto per trasferire un'applicazione client da un database MySQL o MariaDB locale a un database SQL di Azure cloud.

SQL Server Migration Assistant per MySQL

Se si decide di eseguire la migrazione da MySQL al database SQL di Azure, è possibile usare uno strumento specializzato: SQL Server Migration Assistant for MySQL. Questo strumento GUI si connette a un database MySQL di origine e a un database di SQL Server, che può essere un database nel servizio database SQL di Azure.

Quando è connesso, l'assistente copia lo schema completo nel database SQL di Azure e converte tutti i tipi di dati negli equivalenti di SQL Server. Esegue anche la migrazione di viste, procedure, trigger e altri oggetti. È quindi possibile avviare la migrazione dei dati da MySQL al database SQL di Azure.

Nota

SQL Server Migration Assistant for MySQL non è stato testato per la migrazione dei database MariaDB al database SQL di Azure.