Servizi di database MySQL e PostgreSQL in Azure

Completato

Se si dispone già di un database locale funzionante, perché si dovrebbe valutare l'opportunità di spostarlo in un servizio cloud come Azure? E perché si dovrebbe implementare un nuovo sistema di database in Azure? Molte organizzazioni eseguono questa migrazione perché, rispetto all'uso di un data center locale, è facile e relativamente economico creare un servizio altamente disponibile e scalabile nel cloud.

Per la startup dell'esempio, i database attualmente in esecuzione in locale in MySQL e PostgreSQL sono cruciali, ma limitati dalle dimensioni del data center e da quelle del team responsabile dell'amministrazione. Si vuole verificare se sia possibile superare queste limitazioni usando i servizi di Azure e, in caso affermativo, quali sarebbero i servizi più adatti alle proprie esigenze.

In questa unità verranno illustrati Database di Azure per MySQL, Database di Azure per MariaDB, Database di Azure per PostgreSQL e le opzioni di distribuzione che è possibile usare. Verranno anche illustrati i vantaggi derivanti dall'esecuzione di database open source su macchine virtuali o contenitori in Azure e dall'approccio IaaS (infrastruttura distribuita come servizio).

Disponibilità

La disponibilità garantita dai contratti di servizio di Azure dipende dai dettagli specifici dell'implementazione, ma è sempre alta. Per Database di Azure per PostgreSQL, ad esempio, Microsoft garantisce una disponibilità del 99,99% senza costi aggiuntivi. Per una disponibilità ancora più elevata, è possibile usare un server flessibile.

Per ottenere questa disponibilità in una rete locale, sarebbe necessario progettare un sistema resiliente agli errori hardware. Sarebbero necessari:

  • Più server fisici.
  • Un servizio di bilanciamento del carico in grado di reindirizzare le query in caso di errore del server.
  • Una rete di archiviazione che condivide i dati tra i server o un modo per replicare i dati tra i server.
  • Hardware di rete resiliente.
  • Un data center controllato a livello di ambiente.
  • Gruppi di continuità e generatori di riserva.

Tutti questi componenti sono costosi e richiedono competenze specifiche per implementarli ed eseguirli. Utilizzerebbero anche un numero elevato di risorse amministrative. Con Azure questi requisiti sono già soddisfatti: è sufficiente creare il database per avere la disponibilità elevata.

Scalabilità

Se la base utenti si espande, anche il sistema deve espandersi. Ogni sistema locale ha una capacità massima: se ci si avvicina a tale limite, è necessario aumentarla aggiungendo altro hardware. L'aggiunta di capacità non è immediata perché necessario acquistare l'hardware, installare il sistema operativo e il software necessari, applicare gli aggiornamenti e quindi aggiungere i dati alla nuova istanza di database. Tutte queste operazioni richiedono tempo.

Tenere anche presente che una domanda elevata è spesso temporanea. Se ad esempio è in corso una campagna di marketing di successo, si potrebbe osservare un picco nel traffico, seguito da un ritorno a una domanda più bassa. In una configurazione locale è necessario progettare il sistema tenendo in considerazione questi picchi. Il sistema rimane quindi sottoutilizzato per la maggior parte del tempo, anche se continua ad avere un costo e a richiedere manutenzione.

È molto più facile superare queste sfide nel cloud. Se il sistema raggiunge la capacità massima, è possibile rispondere molto rapidamente, ad esempio passando a un piano superiore o aggiungendo macchine virtuali. Se la domanda diminuisce, sarà possibile risparmiare rimuovendo rapidamente capacità. In Azure si paga solo in base alla capacità usata.

IaaS e PaaS

Quando si implementa un database in Azure, è possibile scegliere tra almeno due approcci a seconda del livello di controllo necessario:

  • Infrastruttura distribuita come servizio (IaaS). Se si sceglie l'approccio IaaS, Azure esegue l'infrastruttura fisica. Si creano macchine virtuali e le reti virtuali per connetterle e quindi si installano il software necessario e i dati. L'esecuzione di una macchina virtuale è simile a quella di un server fisico. Si esegue la manutenzione del sistema operativo e del software, ma non è necessario preoccuparsi del data center, del controllo ambientale o delle connessioni a Internet.
  • Piattaforma distribuita come servizio (PaaS). Se si sceglie l'approccio PaaS, Azure esegue l'infrastruttura fisica, i server virtuali necessari e il software di database. Non è necessario eseguire attività di configurazione o manutenzione su questi componenti. Ad esempio, Azure applica automaticamente i Service Pack. In questo modo è possibile concentrarsi sull'amministrazione del database. Le offerte PaaS per l'esecuzione di database open source in Azure includono Database di Azure per MySQL, Database di Azure per MariaDB e Database di Azure per PostgreSQL.

Quali sono i servizi di database di Azure per MySQL, MariaDB e PostgreSQL?

Se si ha un sistema di database locale basato su MySQL, MariaDB o PostgreSQL e si vuole spostare il database nel cloud, valutare l'opportunità di usare Database di Azure per MySQL, Database di Azure per MariaDB o Database di Azure per PostgreSQL. È possibile usare questi servizi anche per implementare nuovi database. Se ad esempio gli sviluppatori e gli amministratori del database hanno esperienza con tali server di database e non si vuole che perdano tempo a studiare un nuovo sistema, usando Database di Azure per MySQL, Database di Azure per MariaDB o Database di Azure per PostgreSQL il personale potrà sfruttare le proprie conoscenze esistenti. Database di Azure per MySQL, Database di Azure per MariaDB e Database di Azure per PostgreSQL sono sistemi PaaS, quindi non è necessario preoccuparsi di progettare o implementare server o reti virtuali.

Che cos'è Database di Azure per MySQL?

Database di Azure per MySQL è un'implementazione PaaS di MySQL nel cloud di Azure, basata su MySQL Community Edition. È attualmente possibile scegliere il supporto per MySQL versioni 5.6, 5.7 e 8.0, a seconda delle esigenze. Il supporto per le versioni successive sarà disponibile con l'evolversi di MySQL.

Con Database di Azure per MySQL si ottengono le funzionalità seguenti:

  • Funzionalità di disponibilità elevata predefinite.
  • Prestazioni prevedibili.
  • Ridimensionamento facile che risponde rapidamente alle esigenze.
  • Dati protetti, sia inattivi che in movimento.
  • Backup automatici modificabili e ripristino temporizzato per gli ultimi 35 giorni.
  • Sicurezza e conformità a livello aziendale con la normativa.

Il sistema usa prezzi con pagamento in base al consumo, in modo da pagare solo per le risorse usate.

È possibile scegliere tra due opzioni di distribuzione:

Database di Azure per MySQL - Server flessibile

Database di Azure per MySQL - Server flessibile offre maggiore disponibilità replicando i database in più zone di disponibilità. Consente anche di avviare e arrestare rapidamente il servizio di database per ottimizzare i costi.

Database di Azure per MySQL offre un sistema di database globale che consente di aumentare le dimensioni fino a database di grandi dimensioni senza dover gestire hardware, componenti di rete, server virtuali, patch software e altri componenti sottostanti.

Che cos'è Database di Azure per MariaDB?

MariaDB è un fork di MySQL creato dalla community in seguito all'acquisizione di MySQL da parte di Oracle. Database di Azure per MariaDB è l'implementazione PaaS di MariaDB nel cloud di Azure.

MariaDB è stato progettato come soluzione sostitutiva per MySQL, in modo che sia possibile sostituire un database MySQL con un database MariaDB senza dover riscrivere in modo sostanziale il codice delle app client o apportare modifiche allo schema del database. Molte funzionalità di MariaDB sono identiche a quelle di MySQL, ad esempio:

  • Strutture e indici del database
  • Comandi di definizione dei dati
  • Protocolli, strutture e API client
  • Programmi mysqldump e mysqladmin

Questa somiglianza tra MySQL e MariaDB fa sì che le attività di migrazione da MySQL a Database di Azure per MySQL siano molto simili a quelle da MariaDB a Database di Azure per MariaDB. Esistono alcune differenze tra i sistemi. MariaDB, ad esempio, supporta i dati columnstore e Cache Redis, entrambi utilizzabili per ottimizzare le prestazioni.

Nota

Poiché la migrazione dei database da MySQL e MariaDB ad Azure è così simile, se ne parlerà nell'ambito di questo stesso corso.

Importante

Al momento della stesura di questo articolo, non è disponibile un'opzione di distribuzione Server flessibile per Database di Azure per MariaDB.

Che cos'è Database di Azure per PostgreSQL?

Se si preferisce PostgreSQL, è possibile scegliere Database di Azure per PostgreSQL per eseguire un'implementazione PaaS di tale server di database nel cloud di Azure. Questo servizio offre la stessa disponibilità, prestazioni, ridimensionamento, sicurezza e vantaggi amministrativi del servizio MySQL.

È possibile scegliere tra tre opzioni di distribuzione:

Server flessibile di Database di Azure per PostgreSQL

Database di Azure per PostgreSQL - Server flessibile offre vantaggi simili a quelli di Server flessibile MySQL. È possibile usarlo per assicurare i livelli più elevati di disponibilità e procedure di riavvio pratiche.

Opzioni IaaS per l'esecuzione di MySQL, MariaDB e PostgreSQL in Azure

Usare l'approccio IaaS per replicare un'architettura fisica nel cloud. È possibile scegliere IaaS se si vuole avere un maggiore controllo dei sistemi operativi e del software sottostante al sistema.

Esistono tuttavia diversi approcci che è possibile adottare per implementare l'infrastruttura distribuita come servizio, a seconda dei requisiti e della complessità dei sistemi esistenti.

Trasferimento in modalità lift-and-shift

Un approccio consiste nell'eseguire il mirroring dell'architettura locale nel cloud creando un'infrastruttura di rete virtuale corrispondente a quella del data center: si crea una macchina virtuale per ogni server nel sistema locale. Si installa e si configura il software del sistema di gestione di database (MySQL, MariaDB o PostgreSQL) nelle macchine virtuali. Si esegue quindi il trasferimento in modalità lift-and-shift del sistema nel cloud con pochissime modifiche al codice o alla configurazione del client.

Con questa strategia si segue un processo di migrazione dettagliato. Si spostano in modo incrementale parti del sistema nel cloud e si mantengono gli altri elementi in locale, usando il gateway di rete di Azure. Usare questo approccio ibrido per stabilizzare il sistema a ogni passaggio ed eseguire il rollback, se necessario.

Usare macchine virtuali predefinite

Il marketplace include macchine virtuali preconfigurate per i server MySQL, MariaDB e PostgreSQL. Queste immagini consentono di risparmiare tempo perché non è necessario installare manualmente il software del server di database. Quando si configurano le macchine virtuali per il database, controllare se nel marketplace è disponibile un'immagine con la versione corretta del software del database e valutare l'opportunità di usarla.

È anche possibile caricare un'immagine di macchina virtuale personalizzata in Azure e usarla per creare le macchine virtuali. Questa immagine potrebbe includere il software del database desiderato e anche il database stesso. Per altre informazioni, vedere Esercitazione: Creare un'immagine personalizzata di una macchina virtuale di Azure con Azure PowerShell.

Usare i contenitori MySQL, MariaDB o PostgreSQL

Un'altra tecnologia di virtualizzazione da considerare è la containerizzazione. Un contenitore è simile a una macchina virtuale se non per il fatto che condivide il sistema operativo con il computer host. I contenitori sono più piccoli delle macchine virtuali, quindi è possibile eseguirne più di uno in un computer host e avviarne di nuovi più rapidamente. Non è tuttavia possibile eseguire un contenitore Linux in un computer Windows, ad esempio, perché il sistema operativo è condiviso. Per eseguire i contenitori in un server fisico, è necessario un software host per i contenitori, ad esempio Docker. I contenitori vengono distribuiti dalle immagini che, come le macchine virtuali, possono includere software di database, ad esempio MySQL, MariaDB e PostgreSQL.

Per eseguire un numero ridotto di contenitori in Azure, installare Docker in una macchina virtuale. In alternativa, se si usa il servizio Istanze di Container, è possibile eseguire i contenitori in Azure senza configurare le macchine virtuali. Per gestire facilmente un numero elevato di contenitori che devono comunicare tra loro, usare il servizio Azure Kubernetes.