Hoe MySQL-databases controleren?
Operationele zichtbaarheid is een must in elke productieomgeving. Het is van cruciaal belang om eventuele problemen zo snel mogelijk te kunnen identificeren, anders kunt u in ernstige problemen terechtkomen, aangezien een onopgemerkt probleem ernstige serviceonderbrekingen of downtime kan veroorzaken. MySQL Enterprise Monitor is een van de oudste monitoringproducten voor MySQL op de markt en is beschikbaar als onderdeel van een commerciële enterprise-abonnementsovereenkomst van Oracle. In deze blogpost zullen we kijken naar MySQL Enterprise Monitor en het soort inzicht dat het biedt in MySQL.
Installatie
Allereerst is MySQL Enterprise Monitor onderdeel van MySQL Enterprise Edition, een commercieel aanbod van Oracle. Het komt in meerdere versies van pakketten, voor verschillende besturingssystemen. De installatie op Windows 10 (het systeem waarop we hebben getest) is vrij eenvoudig. MySQL Enterprise Monitor is geconfigureerd en sommige gebundelde services worden geïnstalleerd (MySQL, Tomcat). De tool is toegankelijk via de browser.
Initiële configuratie
Allereerst moet u hosts toevoegen die u wilt controleren.
U kunt afzonderlijke hosts of een batch ervan toevoegen. Het dialoogvenster ziet er hetzelfde uit, behalve dat wanneer u bulk toevoegt, u een door komma's gescheiden lijst met servers kunt doorgeven.
We zullen niet in details treden, maar in het kort moet u definiëren vanaf welke host de MySQL-instanties moeten worden gecontroleerd - meestal is dit de host waarop u MySQL Enterprise Monitor hebt geïnstalleerd. U kunt ook agents instellen op uw MySQL-instanties, in dat geval kunnen ze ook gegevens voor de host verzamelen, niet alleen MySQL-statistieken. Vervolgens moet u definiëren hoe u de bewaakte instantie kunt bereiken (IP-adres/hostnaam, gebruiker en wachtwoord). MySQL Enterprise Monitor zal dan extra gebruikers aanmaken voor taken zoals monitoring, waarvoor geen superuser-privileges vereist zijn. Als je wilt, kun je ook SSL-communicatie configureren als dat is wat de MySQL-instantie gebruikt, je kunt ook enkele time-outs definiëren en of een replicatietopologie automatisch moet worden gedetecteerd of niet.
Wat ook belangrijk is om in gedachten te houden, is dat MySQL Enterprise Monitor sterk afhankelijk is van het prestatieschema - zorg ervoor dat uw databases PS hebben ingeschakeld, anders profiteert u niet van een aanzienlijk deel van de functies van MySQL Enterprise Monitor.
Bewaking
Zodra de gecontroleerde MySQL-instanties zijn geconfigureerd, kunt u beginnen met het bekijken van de verzamelde gegevens. De sectie Overzicht geeft u een korte samenvatting van enkele van de belangrijkste statistieken in MySQL. Gegevens worden geaggregeerd en het maakt het gemakkelijker om onverwachte patronen te vinden en vervolgens verder te graven in wat er is gebeurd.
Het tabblad Gebeurtenissen geeft een overzicht van verschillende problemen of gebeurtenissen die zijn gemeld door de MySQL Enterprise Monitor en zijn adviseurs. U kunt op elk van de evenementen klikken en lezen waar het allemaal over gaat, evenals de aanbevolen stappen die u kunt nemen:
In dit specifieke geval lijkt het alsof sommige zoekopdrachten volledige tabelscans uitvoeren en het wordt aanbevolen om dit verder te onderzoeken om dergelijke zoekopdrachten te lokaliseren en te kijken of ze kunnen worden geoptimaliseerd.
Een ander voorbeeld, hier zien we dat de tabelcache niet optimaal is geconfigureerd. U kunt de uitleg van het probleem, advies en aanbevolen acties bekijken op basis van deze waarschuwing.
Statistieken
Op dit tabblad kunnen we gegevens zien voor meerdere MySQL-statistieken die nuttig zijn om de status van het systeem te begrijpen.
Tijdreeksgrafieken
De bovenstaande screenshots zijn slechts een voorbeeld, er zijn nog veel meer grafieken om naar te kijken.
Het is mogelijk om filtering toe te passen:u kunt bepalen welke grafieken u wilt zien, u kunt ook bepalen welk tijdsbestek getoond moet worden. Bovendien kunt u gewoon een deel van de grafiek markeren en erop inzoomen of de Query Analyzer openen met gegevens van die specifieke tijd:
We zullen deze functionaliteit later doornemen, maar kortom, het stelt u in staat om zoekopdrachten te analyseren, hoe hun prestaties in de tijd zijn veranderd en enkele voorbeeldvragen.
Tabelstatistieken
Dit tabblad geeft ons inzicht in tabelstatistieken:hoe het verkeer eruit zag (rijen opgehaald, ingevoegd, bijgewerkt, verwijderd) en hoe de latentie eruitzag voor alle rijbewerkingen.
Gebruikersstatistieken
In dit tabblad presenteert MySQL Enterprise Monitor gegevens over gebruikers - uitgevoerde instructies, latentie, tabelscans, I/O-latentie, verbindingen, geheugengebruik. Deze gegevens moeten redelijk goed inzicht geven in welke gebruiker verantwoordelijk is voor de belasting van de database. Het kan erg handig zijn, vooral in omgevingen met meerdere gebruikers, waar er niet één hoofdbron van het verkeer is.
Databasebestand I/O
Database File I/O legt uit hoe de I/O-belasting wordt verdeeld over de bestanden in de database. Totaal aantal I/O-bewerkingen, latentie, hoeveel lees- en schrijfbewerkingen zijn uitgevoerd op een bepaald bestand.
Geheugengebruik
Geheugengebruik toont geheugenstructuren in MySQL, die helpen om een beter beeld te krijgen van het geheugengebruik in de database. Deze gegevens kunnen handig zijn in het geval van problemen met het geheugen - het is gemakkelijk om te volgen waar de groei het grootst is en, indien nodig, relevante instellingen te verminderen. Het kan ook aanzienlijk helpen bij het diagnosticeren van mogelijke geheugenlekken.
InnoDB-bufferpool
Dit tabblad in MySQL Enterprise Monitor geeft de gebruiker inzicht in de opbouw van het bufferpoolgebruik. Welke tabellen worden gecached, hoeveel vuile pagina's zijn er om door te spoelen?
Vragen
Het is uiterst belangrijk voor elke MySQL-gebruiker om de belasting te begrijpen die query's veroorzaken. Welke vragen zijn het meest problematisch? Hoe gedragen ze zich in de tijd? Prestaties kunnen op meerdere manieren worden gemeten, maar het is vrij gebruikelijk dat de voorspelbare, stabiele prestaties belangrijker zijn dan de topprestaties. Zolang de responstijd acceptabel is, zullen gebruikers de voorspelbare resultaten beter waarderen dan een iets snellere respons (lage latentie), wat de server soms aanzienlijk kan vertragen. Daarom is het erg waardevol om op tijd te zien hoe een zoekopdracht zich gedraagt en die te lokaliseren, welk gedrag niet consistent is.
MySQL Enterprise Monitor levert zeker dergelijke gegevens. Op de lijst met vragen kunt u eenvoudig zien hoe de latentie in de tijd is veranderd. Platte lijn is goed, spikes - niet zo veel. Dit betekent dat een dergelijke zoekopdracht mogelijk nader moet worden onderzocht. Als u erop klikt, geeft MySQL Enterprise Monitor u er meer gegevens over.
Zoals u kunt zien, zijn er enkele statistische gegevens over het specifieke querytype, u kunt ook zien hoe de latentie in de tijd is veranderd. Onderaan zie je enkele voorbeelduitspraken in de tijd en kun je hun uitvoeringstijd vergelijken.
Wanneer u op een van hen klikt, ziet u een volledige query die op dat moment is uitgevoerd. Het kan handig zijn in het geval van query's waarbij de prestaties verschillen, afhankelijk van de argumenten die zijn gebruikt in het geval WHERE (bijvoorbeeld WHERE some_column ='some value' en waarden in die kolom zijn niet gelijkmatig over de rijen verdeeld).
Replicatie
In een MySQL-replicatieomgeving is lag iets waar je mee moet leren omgaan. Wat belangrijk is, is om het bij te houden - hoe erg lopen slaven achter? Hoe vaak komt het voor? Met deze informatie is het mogelijk om te proberen het probleem te lokaliseren en beter te begrijpen welke zoekopdrachten het veroorzaken. Vervolgens kunt u proberen enkele verbeteringen door te voeren, zoals multi-threaded replicatie, en na te gaan of de wijzigingen de replicatieprestaties hebben verbeterd en de vertraging tot een acceptabel niveau hebben teruggebracht.
Hoe verschilt MySQL Enterprise Monitor van ClusterControl
Zoals we al zeiden, maakt MySQL Enterprise Monitor deel uit van de betaalde MySQL Enterprise Edition. Voor alle gebruikers van de MySQL Community, MariaDB of Percona Server is MySQL Enterprise Edition niet beschikbaar. ClusterControl biedt toegang tot monitoring van MySQL in de gratis Community-versie. Op het gebied van server- en query-monitoring zijn er veel overeenkomsten.
ClusterControl geeft u toegang tot MySQL-statistieken die zijn verzameld en opgeslagen in de Prometheus-tijdreeksdatabase. U kunt eenvoudig een groot aantal statistieken bijhouden die beschikbaar zijn in ClusterControl.
ClusterControl wordt ook geleverd met een lijst met adviseurs, die kunnen worden gebruikt om de gezondheid en prestaties van de database bij te houden. U kunt ook eenvoudig nieuwe adviseurs maken met de Developer Studio:
Als u geïnteresseerd bent in de prestaties van query's, biedt ClusterControl een Query Monitor voor u - uitgevoerde query's worden verzameld en hun prestaties worden vergeleken, zodat de gebruiker gemakkelijk kan bepalen welke query's de meeste CPU in de database gebruiken.
U kunt statistische gegevens over de query's zien - uitvoeringen, verzonden en onderzochte rijen, uitvoeringstijd. U kunt ook het uitlegplan voor een bepaald type zoekopdracht bekijken.
Polyglot-persistentie controleren
Een groot verschil is de mogelijkheid om alle hoofdvarianten van het MySQL-ecosysteem (Oracle MySQL, MariaDB en Percona Server), verschillende clusteringtechnologieën (NDB-cluster, groepsreplicatie, asynchrone replicatie en Galera-cluster), load balancers/proxy's (HAProxy, Keepalived, Maxscale, ProxySQL) en andere open source databases (PostgreSQL en MongoDB).
Automatisering en beheer
ClusterControl biedt ook functionaliteit om afzonderlijke instanties of clusters op locatie of in de cloud (AWS, GCE en Azure) te implementeren, evenals functies zoals back-upbeheer, automatische failover en herstel/reparatie, rolling upgrades, clusterbeheer voor replicatie of clusterconfiguraties , schalen, enz.
Dat is alles voor vandaag mensen. Als je met MySQL Enterprise Monitor hebt gewerkt en iets wilt toevoegen, doe dat dan in het opmerkingengedeelte.