Come monitorare i database MySQL?
La visibilità operativa è un must in qualsiasi ambiente di produzione. È fondamentale essere in grado di identificare eventuali problemi il prima possibile, altrimenti potresti trovarti in seri problemi poiché un problema non rilevato può causare gravi interruzioni del servizio o tempi di inattività. MySQL Enterprise Monitor è uno dei più vecchi prodotti di monitoraggio per MySQL sul mercato ed è disponibile come parte di un contratto di abbonamento aziendale commerciale di Oracle. In questo post del blog daremo un'occhiata a MySQL Enterprise Monitor e al tipo di informazioni che fornisce in MySQL.
Installazione
Innanzitutto, MySQL Enterprise Monitor fa parte di MySQL Enterprise Edition, un'offerta commerciale di Oracle. È disponibile in più versioni di pacchetti, per diversi sistemi operativi. L'installazione su Windows 10 (il sistema su cui abbiamo testato) è praticamente semplice. MySQL Enterprise Monitor è configurato e verranno installati alcuni servizi in bundle (MySQL, Tomcat). È possibile accedere allo strumento tramite il browser.
Configurazione iniziale
Prima di tutto, devi aggiungere gli host che desideri monitorare.
Puoi aggiungere singoli host o un batch di essi. La finestra di dialogo ha lo stesso aspetto, tranne per il fatto che quando aggiungi in blocco, puoi passare un elenco di server separati da virgole.
Non entreremo nei dettagli, ma in breve devi definire da quale host devono essere monitorate le istanze MySQL:in genere sarà l'host su cui hai installato MySQL Enterprise Monitor. Puoi anche configurare agenti sulle tue istanze MySQL, in tal caso saranno in grado di raccogliere dati anche per l'host, non solo le metriche MySQL. Quindi è necessario definire come raggiungere l'istanza monitorata (indirizzo IP/nome host, utente e password). MySQL Enterprise Monitor creerà quindi utenti aggiuntivi per attività come il monitoraggio, che non richiede privilegi di superutente. Se lo desideri, puoi anche configurare la comunicazione SSL se è ciò che utilizza l'istanza MySQL, puoi anche definire alcuni timeout e se una topologia di replica deve essere rilevata automaticamente o meno.
Un'altra cosa importante da tenere a mente è che MySQL Enterprise Monitor si basa molto su Performance Schema:assicurati che i tuoi database abbiano PS abilitato, altrimenti non trarrai vantaggio da una parte significativa delle funzionalità di MySQL Enterprise Monitor.
Monitoraggio
Una volta configurate le istanze MySQL monitorate, puoi iniziare a esaminare i dati raccolti. La sezione Panoramica fornisce un breve riepilogo di alcune delle metriche più importanti in MySQL. I dati vengono aggregati e semplificano l'individuazione di eventuali schemi imprevisti e quindi approfondiscono l'accaduto.
La scheda Eventi offre una panoramica di diversi problemi o eventi segnalati da MySQL Enterprise Monitor e dai suoi consulenti. Puoi fare clic su uno qualsiasi degli eventi e leggere di cosa si tratta, nonché i passaggi consigliati da intraprendere:
In questo caso particolare sembra che alcune query stiano eseguendo scansioni complete della tabella e si consiglia di indagare ulteriormente per individuare tali query e vedere se possono essere ottimizzate.
Un altro esempio, qui vediamo che la cache della tabella non è configurata in modo ottimale. Puoi vedere la spiegazione del problema, i consigli e le azioni consigliate da intraprendere in base a questo avviso.
Metriche
In questa scheda possiamo vedere i dati per più parametri MySQL utili per comprendere lo stato del sistema.
Grafici delle serie temporali
Gli screenshot qui sopra sono solo un esempio, ci sono molti più grafici da guardare.
È possibile applicare il filtraggio:puoi definire quali grafici vuoi vedere, puoi anche definire quale intervallo di tempo mostrare. Inoltre, puoi semplicemente contrassegnare una parte del grafico e ingrandirla o aprire Query Analyzer con i dati di quel particolare momento:
Esamineremo questa funzionalità in seguito, ma in breve ti consente di analizzare le query, come le loro prestazioni sono cambiate nel tempo e alcune query di esempio.
Statistiche tabella
Questa scheda fornisce informazioni dettagliate sulle statistiche della tabella:come appariva il traffico (righe recuperate, inserite, aggiornate, eliminate) e come appariva la latenza per tutte le operazioni sulle righe.
Statistiche utente
In questa scheda MySQL Enterprise Monitor presenta i dati sugli utenti:istruzioni eseguite, latenza, scansioni di tabelle, latenza I/O, connessioni, utilizzo della memoria. Questi dati dovrebbero fornire un'idea abbastanza precisa di quale utente è responsabile del carico sul database. Potrebbe essere molto utile soprattutto negli ambienti multiutente, dove non esiste un'unica fonte principale di traffico.
I/O file di database
Database File I/O spiega come viene distribuito il carico di I/O tra i file nel database. Numero totale di operazioni di I/O, latenza, quante letture e scritture sono state eseguite su un determinato file.
Utilizzo della memoria
L'utilizzo della memoria mostra le strutture della memoria in MySQL, che aiutano a creare un quadro migliore dell'utilizzo della memoria nel database. Questi dati possono tornare utili in caso di problemi con la memoria:è facile tenere traccia di dove la crescita è maggiore e, se necessario, ridurre le impostazioni rilevanti. Può anche aiutare in modo significativo nella diagnosi di potenziali perdite di memoria.
Pool di buffer InnoDB
Questa scheda in MySQL Enterprise Monitor fornisce all'utente informazioni dettagliate sulla struttura dell'utilizzo del pool di buffer. Quali tabelle sono memorizzate nella cache, quante pagine sporche ci sono da svuotare?
Query
È estremamente importante per qualsiasi utente MySQL comprendere il carico creato dalle query. Quali sono le query più problematiche? Come si comportano nel tempo? Le prestazioni possono essere misurate in diversi modi, ma è abbastanza comune che le prestazioni stabili e prevedibili siano più importanti delle prestazioni massime. Finché il tempo di risposta è accettabile, gli utenti apprezzeranno i risultati prevedibili meglio di una risposta leggermente più veloce (bassa latenza), che a volte può rallentare notevolmente il server. Ecco perché è molto importante vedere come si comporta una query nel tempo e individuare quelli, quale comportamento non è coerente.
MySQL Enterprise Monitor fornisce sicuramente tali dati. Nell'elenco delle query, puoi facilmente vedere come è cambiata la latenza nel tempo. La linea piatta è buona, i picchi - non così tanto. Ciò significa che tale query potrebbe dover essere esaminata ulteriormente. Quando fai clic su di esso, MySQL Enterprise Monitor ti fornirà più dati al riguardo.
Come puoi vedere, ci sono alcuni dati statistici sul particolare tipo di query, puoi anche vedere come è cambiata la latenza nel tempo. In fondo puoi vedere alcune istruzioni di esempio in tempo e puoi confrontare il loro tempo di esecuzione.
Quando fai clic su uno di essi, vedrai una query completa che è stata eseguita in quel momento. Può essere utile nel caso di query in cui le prestazioni differiscono a seconda degli argomenti utilizzati nel caso WHERE (ad esempio, WHERE some_column ='qualche valore' e i valori in quella colonna non sono distribuiti uniformemente tra le righe).
Replica
In un ambiente di replica MySQL, il ritardo è qualcosa che devi imparare a gestire. L'importante è tenerne traccia:quanto sono in ritardo gli schiavi? Quante volte succede? Con queste informazioni è possibile cercare di individuare il problema e capire meglio quali query lo stanno causando. Quindi puoi provare a implementare alcuni miglioramenti come, ad esempio, la replica multi-thread e monitorare se le modifiche hanno migliorato le prestazioni di replica e ridotto il ritardo a un livello accettabile.
In che modo MySQL Enterprise Monitor è diverso da ClusterControl
Come abbiamo affermato, MySQL Enterprise Monitor fa parte della MySQL Enterprise Edition a pagamento. Per tutti gli utenti della MySQL Community, MariaDB o Percona Server, MySQL Enterprise Edition non è disponibile. ClusterControl fornisce l'accesso al monitoraggio di MySQL nella sua versione Community gratuita. In termini di monitoraggio del server e delle query, ci sono molte somiglianze.
ClusterControl ti dà accesso alle metriche MySQL raccolte e archiviate nel database delle serie temporali di Prometheus. Puoi facilmente tenere traccia di numerose metriche rese disponibili in ClusterControl.
ClusterControl include anche un elenco di advisor, che possono essere utilizzati per tenere traccia dello stato e delle prestazioni del database. Puoi anche creare facilmente nuovi consulenti utilizzando Developer Studio:
Se sei interessato alle prestazioni delle query, ClusterControl fornisce un Query Monitor per te:le query eseguite vengono raccolte e le loro prestazioni vengono confrontate, consentendo all'utente di individuare facilmente quali query utilizzano maggiormente la CPU sul database.
Puoi vedere i dati statistici sulle query:esecuzioni, righe inviate ed esaminate, tempo di esecuzione. Puoi anche controllare il piano di spiegazione per un particolare tipo di query.
Monitoraggio della persistenza dei poliglotti
Una grande differenza è la capacità di monitorare tutte le principali varianti dell'ecosistema MySQL (Oracle MySQL, MariaDB e Percona Server), diverse tecnologie di clustering (NDB Cluster, Group Replication, replica asincrona e Galera Cluster), load balancer/proxies (HAProxy, Keepalived, Maxscale, ProxySQL) e altri database open source (PostgreSQL e MongoDB).
Automazione e gestione
ClusterControl fornisce anche funzionalità per distribuire singole istanze o cluster in locale o nel cloud (AWS, GCE e Azure), oltre a funzionalità come gestione del backup, failover automatico e ripristino/riparazione, aggiornamenti in sequenza, gestione dei cluster per la replica o configurazioni di cluster , ridimensionamento, ecc.
Questo è tutto per la gente di oggi. Se hai lavorato con MySQL Enterprise Monitor e desideri aggiungere qualcosa, fallo nella sezione commenti.