I backup sono una parte molto importante delle operazioni del database, poiché la tua azienda deve essere protetta in caso di catastrofe. Quando arriverà quel momento (e arriverà), il tuo Recovery Point Objective (RPO) e Recovery Time Objective (RTO) dovrebbero essere predefiniti, poiché questo è quanto velocemente puoi recuperare dall'incidente che si è verificato.
La maggior parte delle organizzazioni varia il proprio approccio ai backup, cercando di avere una combinazione di backup dell'immagine del server (istantanee), backup logici e fisici. Questi backup vengono quindi archiviati in più posizioni, in modo da evitare eventuali disastri locali o regionali. Significa anche che i dati possono essere ripristinati nel minor tempo possibile, evitando gravi tempi di inattività che possono avere un impatto sull'attività della tua azienda.
L'hosting del tuo database con un provider cloud, come Microsoft Azure (di cui parleremo in questo blog), non fa eccezione, devi comunque preparare e definire la tua politica di ripristino di emergenza.
Come altre offerte di cloud pubblico, Microsoft Azure (Azure) offre un approccio per i backup pratico, conveniente e progettato per fornire opzioni di ripristino. Le soluzioni di backup di Microsoft Azure consentono di configurare e utilizzare e sono facilmente gestibili utilizzando il backup di Azure o tramite il ripristino dei servizi di vault (se si utilizza il database utilizzando macchine virtuali).
Se si desidera un database gestito nel cloud, Azure offre Database di Azure per MySQL. Questo dovrebbe essere utilizzato solo se non si desidera utilizzare e gestire il database MySQL da soli. Questo servizio offre una ricca soluzione per il backup che consente di creare un backup dell'istanza del database, da una regione locale o tramite una posizione con ridondanza geografica. Questo può essere utile per il recupero dei dati. Potresti anche essere in grado di ripristinare un nodo da un periodo di tempo specifico, il che è utile per ottenere il ripristino point-in-time. Questo può essere fatto con un solo clic.
In questo blog tratteremo tutti questi scenari di backup e ripristino utilizzando un database MySQL sul cloud Microsoft Azure.
Esecuzione di backup su una macchina virtuale in Azure
Purtroppo Microsoft Azure non offre una soluzione di backup specifica per MySQL (ad es. MySQL Enterprise Backup, Percona XtraBackup o Mariabackup di MariaDB).
Al momento della creazione della tua Macchina Virtuale (tramite il portale), puoi impostare un processo per eseguire il backup della tua VM utilizzando il vault di Servizi di ripristino. Questo ti proteggerà da qualsiasi incidente, disastro o catastrofe e i dati archiviati sono crittografati per impostazione predefinita. L'aggiunta della crittografia è facoltativa e, sebbene consigliata da Azure, ha un prezzo. Puoi dare un'occhiata alla loro pagina dei prezzi di backup di Azure per maggiori dettagli.
Per creare e configurare un backup, vai al pannello di sinistra e fai clic su Tutte le risorse → Calcola → Macchina virtuale. Ora imposta i parametri richiesti nei campi di testo. Una volta che sei su quella pagina, vai alla scheda Gestione e scorri verso il basso. Potrai vedere come impostare o creare il backup. Vedi lo screenshot qui sotto:
Quindi imposta la tua policy di backup in base ai tuoi requisiti di backup. Basta premere il collegamento Crea nuovo nel campo di testo Politica di backup per creare una nuova politica. Vedi sotto:
Puoi configurare la tua policy di backup con conservazione settimanale, mensile e annuale .
Una volta configurato il backup, puoi verificare di avere un backup abilitato su quella particolare macchina virtuale che hai appena creato. Vedi lo screenshot qui sotto:
Ripristina e ripristina la tua macchina virtuale in Azure
La progettazione del ripristino in Azure dipende dal tipo di criteri e requisiti richiesti dall'applicazione. Dipende anche dal fatto che RTO e RPO debbano essere bassi o invisibili all'utente in caso di incidente o durante la manutenzione. È possibile configurare la macchina virtuale con un set di disponibilità o in una zona di disponibilità diversa per ottenere un tasso di ripristino più elevato.
Puoi anche configurare un ripristino di emergenza per la tua macchina virtuale per replicare le tue macchine virtuali in un'altra area di Azure per esigenze di continuità aziendale e ripristino di emergenza. Tuttavia, questa potrebbe non essere una buona idea per la tua organizzazione in quanto ha un costo elevato. Se presente, Azure offre un'opzione per ripristinare o creare una macchina virtuale dal backup creato.
Ad esempio, durante la creazione della tua macchina virtuale, puoi andare alla scheda Dischi, quindi andare su Dischi dati. Puoi creare o allegare un disco esistente a cui allegare lo snapshot che hai a disposizione. Guarda lo screenshot qui sotto per il quale potrai scegliere tra snapshot o BLOB di archiviazione:
Puoi anche ripristinare in un momento specifico, proprio come nello screenshot sotto:
Il ripristino in Azure può essere eseguito in diversi modi, ma utilizza lo stesso risorse che hai già creato.
Ad esempio, se hai creato uno snapshot o un'immagine disco archiviata nel BLOB di archiviazione di Azure, se crei una nuova macchina virtuale, puoi usare tale risorsa purché sia compatibile e disponibile per l'uso. Inoltre, potresti anche essere in grado di eseguire il ripristino dei file, oltre a ripristinare una VM proprio come nello screenshot seguente:
Durante il ripristino dei file, potresti essere in grado di scegliere da un punto di ripristino specifico , oltre a scaricare uno script per sfogliare e recuperare i file. Questo è molto utile quando hai bisogno solo di un file specifico ma non dell'intero sistema o del volume del disco.
Il ripristino dal backup su una VM esistente richiede circa tre minuti. Tuttavia, il ripristino dal backup per generare una nuova macchina virtuale richiede dodici minuti. Ciò, tuttavia, potrebbe dipendere dalle dimensioni della macchina virtuale e dalla larghezza di banda di rete disponibile in Azure. La cosa buona è che, durante il ripristino, ti fornirà i dettagli di ciò che è stato completato e quanto tempo rimane. Ad esempio, guarda lo screenshot qui sotto:
Backup per database di Azure per MySQL
Il database di Azure per MySQL è un servizio di database completamente gestito da Microsoft Azure. Questo servizio offre un modo molto flessibile e conveniente per configurare le funzionalità di backup e ripristino.
Al momento della creazione della tua istanza del server MySQL, puoi quindi impostare la conservazione del backup e creare le tue opzioni di ridondanza del backup; con ridondanza locale (regione locale) o con ridondanza geografica (in un'altra regione). Azure ti fornirà il costo stimato che ti verrà addebitato per un mese. Guarda uno screenshot di esempio qui sotto:
Tieni presente che le opzioni di backup con ridondanza geografica sono disponibili solo per scopi generici e tipi di nodi di calcolo ottimizzati per la memoria. Non è disponibile su un nodo di calcolo Basic, ma puoi avere la tua ridondanza nella regione locale (cioè entro le zone di disponibilità disponibili).
Una volta che hai una configurazione principale, è facile creare una replica andando su Database di Azure per server MySQL → Seleziona la tua istanza MyQL → Replica → e fai clic su Aggiungi replica. La replica può essere utilizzata come origine o destinazione di ripristino quando necessario.
Tieni presente che in Azure, quando interrompi la replica tra il master e una replica, questo sarà per sempre e irreversibile poiché rende la replica un server autonomo. Una replica creata con Microsoft Azure è idealmente un'istanza gestita ed è possibile interrompere e avviare i thread di replica proprio come si fa su una normale replica master-slave. Puoi fare un riavvio e basta. Se hai creato la replica manualmente, ripristinando dal master o da un backup (ad es. tramite un ripristino point-in-time), sarai in grado di interrompere/avviare i thread di replica o impostare uno slave lag, se necessario.
Ripristino del database di Azure per MySQL da un backup
Il ripristino è molto semplice e veloce utilizzando il portale di Azure. Puoi semplicemente premere il pulsante di ripristino con il nodo dell'istanza MySQL e seguire semplicemente l'interfaccia utente come mostrato nello screenshot seguente:
Quindi puoi selezionare un periodo di tempo e creare/generare una nuova istanza in base a questo backup acquisito:
Una volta che hai il nodo disponibile, questo nodo non sarà una replica di ancora il maestro. È necessario configurarlo manualmente con semplici passaggi utilizzando le procedure memorizzate disponibili:
CALL mysql.az_replication_change_master('<master_host>', '<master_user>', '<master_password>', 3306, '<master_log_file>', <master_log_pos>, '<master_ssl_ca>');
dove,
master_host:nome host del server principale
utente_master:nome utente per il server principale
master_password:password per il server principale
master_log_file:nome file di log binario dall'esecuzione mostra lo stato master
master_log_pos:posizione del log binario dall'esecuzione mostra lo stato master
master_ssl_ca:contesto del certificato CA. Se non utilizzi SSL, passa una stringa vuota.
Allora avviare i thread MySQL è il seguente,
CALL mysql.az_replication_start;
oppure puoi interrompere i thread di replica come segue,
CALL mysql.az_replication_stop;
oppure puoi rimuovere il master come,
CALL mysql.az_replication_remove_master;
o salta gli errori del thread SQL come,
CALL mysql.az_replication_skip_counter;
Come accennato in precedenza, quando viene creata una replica utilizzando Microsoft Azure nella funzionalità Aggiungi replica in un'istanza MySQL, queste procedure archiviate specifiche non sono disponibili. Tuttavia, la procedura mysql.az_replication_restart sarà disponibile poiché non è consentito arrestare né avviare i thread di replica di una replica gestita da Azure. Quindi l'esempio che abbiamo sopra è stato ripristinato da un master che prende la copia completa del master ma agisce come un singolo nodo e necessita di una configurazione manuale per essere una replica di un master esistente.
Inoltre, quando hai una replica manuale che hai configurato, non sarai in grado di vederlo in Database di Azure per server MySQL → Seleziona la tua istanza MyQL → Replica poiché hai creato o configurato la replica manualmente .
Soluzioni alternative di backup su cloud e ripristino
Ci sono alcuni scenari in cui si desidera avere l'accesso completo quando si esegue un backup completo del database MySQL nel cloud. Per fare ciò puoi creare il tuo script o utilizzare tecnologie open source. Con questi puoi controllare come eseguire il backup dei dati nel tuo database MySQL e esattamente come dovrebbero essere archiviati.
Puoi anche sfruttare l'interfaccia a riga di comando (CLI) di Azure per creare la tua automazione personalizzata. Ad esempio, puoi creare uno snapshot usando il comando seguente con l'interfaccia della riga di comando di Azure:
az snapshot create -g myResourceGroup -source "$osDiskId" --name osDisk-backup
o crea la tua replica del server MySQL con il seguente comando:
az mysql server replica create --name mydemoreplicaserver --source-server mydemoserver --resource-group myresourcegroup
In alternativa, puoi anche sfruttare uno strumento aziendale che offre modi per eseguire il backup con opzioni di ripristino. L'utilizzo di tecnologie open source o strumenti di terze parti richiede conoscenze e competenze per sfruttare e creare la propria implementazione. Ecco l'elenco che puoi sfruttare:
- Controllo cluster - Anche se potremmo essere un po' di parte, ClusterControl offre la possibilità di gestire backup fisici e logici del database MySQL utilizzando tecnologie open source testate in battaglia (PXB, Mariabackup e mydumper). Supporta database MySQL, Percona, MariaDB, Galera. Puoi creare facilmente la nostra policy di backup e archiviare i backup del tuo database su qualsiasi cloud (AWS, GCP o Azure). Tieni presente che la versione gratuita di ClusterControl non include le funzionalità di backup.
- Istantanee LVM - È possibile utilizzare LVM per acquisire un'istantanea del volume logico. Questo è applicabile solo per la tua macchina virtuale poiché richiede l'accesso allo spazio di archiviazione a livello di blocco. L'utilizzo di questo strumento richiede un avvertimento poiché può causare la mancata risposta del nodo del database mentre il backup è in esecuzione.
- Percona XtraBackup (PXB) - Una tecnologia open source di Percona. Con PXB, puoi creare una copia fisica di backup del tuo database MySQL. Puoi anche eseguire un backup a caldo con PXB per il motore di archiviazione InnoDB, ma si consiglia di eseguirlo su un server db MySQL slave o non occupato. Questo è applicabile solo per la tua istanza VM poiché richiede l'accesso binario o file al server di database stesso.
- Mariabackup - Lo stesso con PXB, è una tecnologia open source derivata da PXB ma è gestita da MariaDB. In particolare, se il tuo database utilizza MariaDB, dovresti usare Mariabackup per evitare problemi di incompatibilità con i tablespace.
- il mio dumper/il mio caricatore - Questi strumenti di backup creano copie di backup logiche del database MySQL. Puoi usarlo con il tuo database di Azure per MySQL anche se non ho provato quanto ha successo per la tua procedura di backup e ripristino.
- mysqldump - è uno strumento di backup logico molto utile quando è necessario eseguire il backup e il dump (o ripristinare) una tabella o un database specifico in un'altra istanza. Questo è comunemente usato dai DBA, ma è necessario prestare attenzione allo spazio su disco poiché le copie di backup logiche sono enormi rispetto ai backup fisici.
- Backup di MySQL Enterprise - Fornisce backup a caldo, online e non bloccanti su più piattaforme tra cui Linux, Windows, Mac e Solaris. Non è uno strumento di backup gratuito ma offre molte funzionalità.
- rsync - È uno strumento di copia file veloce e straordinariamente versatile. Può copiare localmente, su/da un altro host su qualsiasi shell remota o su/da un demone rsync remoto. Offre un gran numero di opzioni che controllano ogni aspetto del suo comportamento e consentono una specifica molto flessibile dell'insieme di file da copiare. Principalmente nei sistemi Linux, rsync viene installato come parte del pacchetto del sistema operativo.