Migrare una Web App da ClearDB ad Azure Database for MySQL

Da qualche anno il mio blog personale www.nicolaferrini.it è ospitato in una Web App di Azure ed utilizza il CMS Joomla. Il mio CMS usa un database erogato da un’azienda chiamata ClearDB, che permette di avere database MySQL da utilizzare con le Web App di Microsoft Azure. Da qualche tempo è disponibile in Azure una nuova soluzione chiamata Azure Database for MySQL e ho voluto testarla, migrando il mio database.

Per creare un nuovo Azure Database for MySQL collegatevi al portale di Azure e create un nuovo Azure Database for MySQL (attualmente ancora in Preview), inserendo le informazioni richieste (Server name, Subscription, Resource group, ecc) e scegliete il Pricing Tier, come mostrato in figura:

Figura 1: Creazione di un nuovo Azure Database for MySQL

Terminata la creazione del database potete verificarne le funzionalità aprendo l’apposito blade

Figura 2: Creazione del database Azure Database for MySQL completata

Dal link Properties potrete visualizzare in qualsiasi momento il Server Name e il Server Admin Login Name. Segnatevi i parametri, che sono gli stessi che avete indicato al momento della creazione del database, perché ci serviranno per la migrazione.

Figura 3: Paramenti di connessione all’ Azure Database for MySQL

La connessione all’ Azure Database for MySQL server è regolamentata da un firewall. Prima di procedere alla migrazione utilizzate il nodo Connection Security per creare una regola che permetta l’accesso a tutti gli indirizzi IP. Successivamente potrete definire esattamente quali indirizzi IP potranno avere accesso al server, indicando quelli dei WebServer utilizzati dalla vostra Web App.

Figura 4: Creazione delle regole di firewall per permettere l’accesso all’ Azure Database for MySQL server

Per maggiori informazioni sulla creazione di un Azure Database for MySQL potete fare riferimento alla pagina https://docs.microsoft.com/en-us/azure/mysql/quickstart-create-mysql-server-database-using-azure-portal

Dati di connessione ai database ClearDB

Per poter procedere alla migrazione del database avete bisogno di recuperare i dati di connessione e le credenziali per poter accedere al ClearDB. Sarà sufficiente selezionare la Web App e dal nodo Application Settings potrete visualizzare le Connections Strings da cui recuperare i vostri parametri (indirizzo del server, username e password).

Figura 5: Recupero dei parametri di connessione al vecchio database ospitato da ClearDB

Migrazione

Per effettuare la migrazione mi sono servito di un tool chiamato MySQL Workbench, che potete scaricare dall’indirizzo https://dev.mysql.com/downloads/workbench/

Figura 6: Download del tool MySQL Workbench

Figura 7: Installazione del tool MySQL Workbench

Dopo aver proceduto al download e all’installazione dell’applicazione lanciatela e come prima operazione create 2 connessioni MySQL Connections, come mostrato in figura:

Figura 8: Schermata iniziale del tool MySQL Workbench

Registrate nel MySQL Workbench i parametri per potervi connettere ai due database. Aprite il MySQL Workbench e create la connessione per il CLEARDB database, come mostrato in figura:

Figura 9: Creazione della connessione al database CLearDB

Cliccate su Test Connection per verificare che tutti i parametri siano stati inseriti correttamente, come mostrato in figura:

Figura 10: Verifica della connessione al database ClearDB

Effettuare la stessa operazione creando una connessione per l’Azure Database for MySQL, come mostrato in figura:

Figura 11: Creazione e test della connessione all’Azure Database for MySQL

Adesso che avete creato le connessioni siete pronti a lanciare il Migration Wizard, come mostrato in figura:

Figura 12: Lancio del Migration Wizard

Dopo aver lanciato il Migration Wizard verrete guidati, attraverso una serie di schermate, nel processo di migrazione. Iniziate cliccando su Start Migration, come mostrato in figura:

Figura 13: Inizio del processo di migrazione

Inserite il Source database utilizzando i parametri di connessione che avete creato precedentemente e proseguendo col wizard inserite anche il Target database, come mostrato nelle figure seguenti:

Figura 14: Source selection

Figura 15: Target selection

Il wizard prosegue analizzando entrambi i database (source e target) e lo Schema e tabelle del database di ClearDB

Figura 16: Connessione ai due database e analisi dello Schema

Scegliete a questo punto quale database volete migrare selezionandolo con un segno di spunta, come mostrato in figura:

Figura 17: Scelta del database da migrare

Da questo momento in poi seguite il wizard di migrazione, lasciando tutte le impostazioni di default. I tempi di migrazione dipendono dalla quantità di dati da spostare. Al termine della migrazione riceverete un report che vi darà indicazione di tutte le operazioni effettuate dal tool:

Figura 18: Report di migrazione completata

Nota: Ovviamente un’alternativa a questo tipo di migrazione potrebbe anche essere l’utilizzo di phpMyAdmin, esportando il database da ClearDB e importandolo in Azure MySQL J

Completamento della migrazione

Per completare la migrazione dovrete modificare la stringa di connessione della vostra Web App, inserendo i parametri per farla puntare al nuovo database su Azure. Selezionate la Web App e dal nodo Application Settings modificate la Connections String.

Figura 19: Modifica della Connection String con i puntamenti al nuovo database ospitato su Azure database for MySQL

Nota: Nel mio caso, il CMS Joomla richiede anche che i nuovi parametri (Nome server, username e password) vengano anche inseriti nel file configuration.php

Dalle Properties della vostra Web App verificate quali sono gli indirizzi IP utilizzati dai webserver che la ospitano, in modo tale da modificare le regole del firewall del vostro Azure Database for MySQL Server

Figura 20: Indirizzi IP usati dalla Web App

Figura 21: Modifica delle regole di Firewall per l’accesso all’Azure Database for MySQL Server

Conclusioni

Il processo di migrazione è molto semplice e permette di poter utilizzare confortevolmente questa nuova funzionalità offerta da Microsoft Azure. Vi ricordo che al momento la funzionalità è ancora in Preview e quindi non è il caso di utilizzarla in produzione. Buon lavoro!