Migrazione delle applicazioni

Completato

Dopo aver eseguito la migrazione del database dall'ambiente locale ad Azure, è necessario aggiornare le applicazioni esistenti in modo che possano accedere a MySQL nella nuova posizione.

Il server e il database locali originali conterranno ruoli che definiscono i privilegi associati agli utenti, le operazioni che possono eseguire e gli oggetti su cui eseguono queste operazioni. Database di Azure per MySQL usa gli stessi meccanismi di autenticazione e autorizzazione di PostgreSQL in esecuzione in locale.

In questa unità verranno esaminati gli aggiornamenti che è necessario apportare alle applicazioni per connettersi al database di Azure appena migrato per MySQL.

Creare manualmente gli utenti

Il server e il database locali originali conterranno utenti, le operazioni eseguite e gli oggetti su cui eseguono queste operazioni. Database di Azure per MySQL usa gli stessi meccanismi di autenticazione e autorizzazione di MySQL in esecuzione in locale.

Quando si trasferisce un database MySQL in Database di Azure per MySQL usando il Servizio Migrazione del database di Azure, gli utenti non vengono copiati. È necessario ricreare manualmente gli account utente necessari per l'amministratore e gli utenti delle tabelle nel database di destinazione. Per eseguire queste attività, usare il linguaggio SQL o un'utilità come MySQL Workbench. Eseguire il comando CREATE USER. Usare il comando GRANT per assegnare i privilegi necessari a un utente. Per esempio:

CREATE USER 'myuseraccount'@'%' IDENTIFIED BY 'mY!P@ss0rd';
GRANT ALL PRIVILEGES ON DATABASE [Database Name].* TO myuseraccount;
FLUSH PRIVILEGES;

Per visualizzare le concessioni esistenti nel database locale, eseguire l'istruzione SQL seguente:

USE [Database Name];

SHOW GRANTS FOR 'myuseraccount'@'%';;

Riconfigurare le applicazioni

La riconfigurazione di un'applicazione per la connessione a Database di Azure per MySQL è un processo semplice. Tuttavia, è fondamentale sviluppare una strategia per la migrazione delle applicazioni.

Considerazioni sulla riconfigurazione delle applicazioni MySQL

In un ambiente aziendale potrebbero essere in esecuzione molte applicazioni con gli stessi database MySQL. Potrebbe esserci un numero elevato di utenti che eseguono queste applicazioni. Si vuole essere certi che, quando si passa dal sistema esistente a Database di Azure per MySQL, i sistemi continueranno a funzionare, gli utenti possono continuare a svolgere i propri lavori e le operazioni business critical rimangono operative. Modulo 1, Lezione 2, Considerazioni sulla migrazione, sono stati illustrati molti dei problemi in termini generali.

Quando si esegue la migrazione di un database MySQL ad Azure, è necessario tenere presenti alcune specifiche:

  • Se si esegue una migrazione offline, i dati nel database MySQL originale e i nuovi database in esecuzione in Azure potrebbero iniziare a divergere rapidamente se il database precedente è ancora in uso. Una migrazione offline è adatta quando si richiede un sistema completamente fuori servizio per un breve periodo di tempo e quindi si passa tutte le applicazioni al nuovo sistema prima di riavviare. Questo approccio potrebbe non essere possibile per un sistema business critical. Se si esegue la migrazione a MySQL in esecuzione in una macchina virtuale di Azure, è possibile configurare la replica MySQL tra il sistema locale e quello in esecuzione in Azure. La replica MySQL nativa funziona solo in una sola direzione, ma sono disponibili soluzioni di terze parti che supportano la replica bidirezionale tra i server MySQL. Queste soluzioni non funzioneranno con Database di Azure per MySQL.
  • Se si esegue una migrazione online, il servizio Database di Azure per MySQL configura la replica dal database locale al database in esecuzione in Azure. Dopo il trasferimento iniziale dei dati, la replica garantisce che tutte le modifiche apportate nel database locale vengano copiate nel database in Azure, ma non in altro modo.

In entrambi i casi, è necessario assicurarsi di non perdere i dati in tempo reale tramite una sovrascrittura accidentale. Nello scenario online, ad esempio, un'applicazione connessa al database in esecuzione in Database di Azure per MySQL potrebbe avere le modifiche sovrascritte in modo cieco da un'applicazione che usa ancora il database locale. Di conseguenza, è consigliabile considerare gli approcci seguenti:

  • Eseguire la migrazione delle applicazioni in base al tipo di carico di lavoro. Un'applicazione che accede ai dati per la lettura può essere spostata in modo sicuro nel database in esecuzione in Database di Azure per MySQL e visualizzerà tutte le modifiche apportate dalle applicazioni che usano ancora il database locale. È anche possibile adottare la strategia opposta se le applicazioni di sola lettura non richiedono completamente up-to-data.
  • Eseguire la migrazione degli utenti in base al tipo di carico di lavoro. Questa strategia è simile a quella precedente, ad eccezione del fatto che potrebbero essere presenti utenti che generano solo report mentre altri modificano i dati. È possibile configurare la stessa applicazione per connettersi al database appropriato in base ai requisiti dell'utente.
  • Eseguire la migrazione delle applicazioni in base ai set di dati usati. Se applicazioni diverse usano subset diversi dei dati, è possibile eseguire la migrazione di queste applicazioni indipendentemente l'una dall'altra.

Riconfigurazione di un'applicazione

Per riconfigurare un'applicazione, puntarla al nuovo database. La maggior parte delle applicazioni scritte correttamente deve isolare la logica di connessione. Questa deve essere l'unica parte del codice che richiede la modifica. In molti casi, le informazioni di connessione potrebbero essere archiviate come informazioni di configurazione, quindi è sufficiente aggiornare tali informazioni.

Le informazioni di connessione per il servizio Database di Azure per MySQL sono disponibili nel portale di Azure nella pagina Stringhe di connessione per il servizio Database di Azure per MySQL. Azure fornisce le informazioni per molti linguaggi e framework di programmazione comuni.

Immagine che mostra la pagina Stringhe di connessione per l'elemento Database di Azure per MySQL nel portale di Azure

Aprire le porte di rete

Come indicato nella lezione 1 di questo modulo, Database di Azure per MySQL è un servizio protetto che viene eseguito dietro un firewall. I client non possono connettersi a meno che il loro indirizzo IP non venga riconosciuto dal servizio. È necessario aggiungere gli indirizzi IP o gli intervalli di blocchi di indirizzi per i client che eseguono applicazioni che devono connettersi ai database.

Testare e verificare le applicazioni

Prima di passare le applicazioni e gli utenti al nuovo database, è importante assicurarsi di aver configurato tutto correttamente.

Iniziare dalle applicazioni "in esecuzione asciutta" e connettersi come ogni ruolo per assicurarsi che sia disponibile la funzionalità corretta.

Eseguire quindi "test di immersione" per simulare il numero di utenti che eseguono carichi di lavoro tipici contemporaneamente per un periodo di tempo. Monitorare il sistema e verificare di aver allocato risorse sufficienti al servizio Database di Azure per MySQL.

È ora possibile iniziare a distribuire il sistema agli utenti. Potrebbe essere utile implementare una forma di "test canary", in cui un piccolo subset di utenti viene trasferito al sistema inconsapevole. In questo modo si ottiene un'opinione non distorta sul fatto che gli utenti hanno la stessa esperienza, migliore o peggiore con il nuovo database.