MySQL è facile da installare e utilizzare, è sempre stato apprezzato da sviluppatori e amministratori di sistema. D'altra parte, l'implementazione di un ambiente MySQL pronto per la produzione per un carico di lavoro aziendale business-critical è una storia diversa. Può essere un po' una sfida e richiede una conoscenza approfondita del database. In questo post del blog, discuteremo alcuni dei passaggi da intraprendere prima di poter considerare la nostra distribuzione MySQL pronta per la produzione.
Alta disponibilità
Se appartieni a quei fortunati che possono accettare ore di inattività, puoi interrompere la lettura qui e passare al paragrafo successivo. Per il 99,999% dei sistemi business-critical, non sarebbe accettabile. Pertanto, una distribuzione pronta per la produzione deve includere misure di disponibilità elevata. Un requisito principale sarebbe il failover automatizzato delle istanze del database, nonché un livello proxy che rilevi i cambiamenti nella topologia e nello stato di MySQL e instrada il traffico di conseguenza. Esistono numerosi strumenti che possono essere utilizzati per creare tali ambienti, ad esempio MHA, MRM o ClusterControl.
Livello proxy
Rilevamento degli errori principali, failover e ripristino automatizzati:questi sono fondamentali quando si costruisce un'infrastruttura pronta per la produzione. Ma da soli non basta. Esiste ancora un'applicazione che dovrà adattarsi alla modifica della topologia innescata dal failover. Naturalmente, è possibile codificare l'applicazione in modo che sia a conoscenza degli errori di istanza. Tuttavia, questo è un modo ingombrante e poco flessibile di gestire le modifiche alla topologia. Ecco che arriva il proxy del database, un livello intermedio tra l'applicazione e il database. Un proxy può nascondere la complessità del tuo livello di database dall'applicazione:tutto ciò che l'applicazione fa è connettersi al proxy e il proxy si occuperà del resto. Il proxy instraderà le query a un'istanza di database, gestirà le modifiche alla topologia e reindirizzerà secondo necessità. Un proxy può anche essere utilizzato per implementare la divisione lettura-scrittura, sollevando l'applicazione da un caso più complesso da coprire. Questo crea un'altra sfida:quale proxy utilizzare? Come configurarlo? Come monitorarlo? Come renderlo altamente disponibile, in modo che non diventi uno SPOF?
ClusterControl può aiutare qui. Può essere utilizzato per distribuire diversi proxy per formare un livello proxy:ProxySQL, HAProxy e MaxScale. Preconfigura i proxy per assicurarsi che gestiscano correttamente il traffico. Semplifica inoltre l'implementazione di eventuali modifiche alla configurazione se è necessario personalizzare l'impostazione del proxy per la propria applicazione. La suddivisione in lettura/scrittura può essere configurata utilizzando uno qualsiasi dei proxy supportati da ClusterControl. ClusterControl controlla anche i proxy e li recupererà in caso di errori. Il livello proxy può diventare un singolo punto di errore, poiché il ripristino automatizzato potrebbe non essere sufficiente:per risolverlo, ClusterControl può distribuire Keepalived e configurare l'IP virtuale per automatizzare il failover.
Backup
Anche se non è necessario implementare l'alta disponibilità, probabilmente devi comunque preoccuparti dei tuoi dati. Il backup è un must per quasi tutti i database di produzione. Nient'altro che un backup può salvarti da una DROP TABLE o DROP SCHEMA accidentale (beh, forse uno slave di replica ritardato, ma solo per un certo periodo di tempo). MySQL offre diversi metodi per eseguire i backup:mysqldump, xtrabackup, diversi tipi di snapshot (alcuni disponibili solo con hardware o provider cloud particolari). Non è facile progettare la corretta strategia di backup, decidere quali strumenti utilizzare e quindi eseguire lo script dell'intero processo in modo che venga eseguito correttamente. Non è nemmeno scienza missilistica e richiede un'attenta pianificazione e test. Una volta eseguito un backup, non hai finito. Sei sicuro che il backup possa essere ripristinato e che i dati non siano spazzatura? La verifica dei backup richiede tempo e forse non è la cosa più eccitante che avrai nella tua lista di cose da fare. Ma è comunque importante e deve essere fatto regolarmente.
ClusterControl ha un'ampia funzionalità di backup e ripristino. Supporta mysqldump per il backup logico e Percona Xtrabackup per il backup fisico:questi strumenti possono essere utilizzati in quasi tutti gli ambienti, cloud o on-premise. È possibile creare una strategia di backup con una combinazione di backup logici e fisici, incrementali o completi, in modalità online.
Oltre al ripristino, offre anche opzioni per verificare un backup, ad esempio ripristinarlo su un host separato per verificare se il processo di backup funziona correttamente o meno.
Se desideri tenere d'occhio regolarmente i backup (e probabilmente vorresti farlo), ClusterControl ha la capacità di generare report operativi. Il rapporto di backup ti aiuta a tenere traccia dei backup eseguiti e informa se si sono verificati problemi durante l'esecuzione.
Diversinines DevOps Guide to Database ManagementScopri cosa devi sapere per automatizzare e gestire i tuoi database open sourceScarica gratuitamenteMonitoraggio e tendenze
Nessuna distribuzione è pronta per la produzione senza un adeguato monitoraggio dei servizi. Vuoi essere sicuro di essere avvisato se alcuni servizi diventano non disponibili in modo da poter intraprendere un'azione, indagare o avviare procedure di ripristino. Naturalmente, vuoi anche avere una soluzione di tendenza. Non si può sottolineare abbastanza quanto sia importante disporre di dati di monitoraggio per valutare lo stato dell'infrastruttura o per qualsiasi indagine, sia post mortem che monitoraggio in tempo reale dello stato dei servizi. Le metriche non hanno la stessa importanza:se non hai molta familiarità con un particolare prodotto di database, molto probabilmente non saprai quali sono le metriche più importanti da raccogliere e guardare. Certo, potresti essere in grado di raccogliere tutto, ma quando si tratta di rivedere i dati, è difficile esaminare centinaia di metriche per host:devi sapere su quale di esse dovresti concentrarti.
Il mondo open source è pieno di strumenti progettati per monitorare e raccogliere metriche da diversi database:la maggior parte di essi richiederebbe l'integrazione con l'infrastruttura di monitoraggio generale, la piattaforma chatops o gli strumenti di supporto su chiamata (come PagerDuty). Potrebbe anche essere necessario installare e integrare più componenti:archiviazione (una sorta di database di serie temporali), livello di presentazione e strumenti di raccolta dati.
ClusterControl è un approccio un po' diverso, in quanto è un unico prodotto con monitoraggio in tempo reale, trend e dashboard che mostrano i dettagli più importanti. I consulenti del database, che possono essere qualsiasi cosa, da semplici consigli di configurazione, avvisi sulle soglie o regole più complesse per le previsioni, generalmente producono consigli completi.
Possibilità di aumentare la scalabilità
I database tendono a crescere di dimensioni e non è improbabile che crescano in termini di volumi di transazioni o numero di utenti. La possibilità di scalare o aumentare può essere fondamentale per la produzione. Anche se fai un ottimo lavoro nella stima dei tuoi requisiti hardware all'inizio del ciclo di vita del prodotto, probabilmente dovrai gestire una fase di crescita, purché il tuo prodotto abbia successo, cioè (ma è quello che tutti pianifichiamo, giusto ?). Devi disporre dei mezzi per aumentare facilmente la tua infrastruttura per far fronte al carico in entrata. Per i servizi senza stato come i server Web, questo è abbastanza semplice:devi solo eseguire il provisioning di più istanze utilizzando l'immagine o il codice di produzione più recenti dal tuo strumento di controllo della versione. Per i servizi con stato come i database, è più complicato. È necessario eseguire il provisioning di nuove istanze utilizzando i dati di produzione correnti, configurare la replica o una qualche forma di clustering tra l'istanza corrente e quella nuova. Questo può essere un processo complesso e per farlo bene è necessario avere una conoscenza più approfondita del modello di clustering o replica scelto.
ClusterControl, come suggerisce il nome, fornisce un ampio supporto per la creazione di configurazioni di database in cluster o replicati. I metodi utilizzati sono testati in battaglia attraverso migliaia di schieramenti. Viene fornito con una Command Line Interface (CLI) in modo da poter essere facilmente integrato con i sistemi di gestione della configurazione. Tieni presente, tuttavia, che potresti non voler apportare modifiche al pool di database troppo spesso:il provisioning di una nuova istanza richiede tempo e aggiunge un sovraccarico ai database esistenti. Pertanto, potresti voler rimanere un po' "over-provisioned" in modo da avere un po' di tempo per creare una nuova istanza prima che il tuo cluster venga sovraccarico.
Tutto sommato, ci sono ancora diversi passaggi da eseguire dopo la distribuzione iniziale, per assicurarti che il tuo ambiente sia pronto per la produzione. Con gli strumenti giusti è molto più facile arrivarci.