Hur övervakar man MySQL-databaser?
Operativ synlighet är ett måste i alla produktionsmiljöer. Det är avgörande att kunna identifiera eventuella problem så snart som möjligt, annars kan du hamna i allvarliga problem eftersom ett oupptäckt problem kan orsaka allvarliga tjänsteavbrott eller driftstopp. MySQL Enterprise Monitor är en av de äldsta övervakningsprodukterna för MySQL på marknaden och är tillgänglig som en del av ett kommersiellt företagsabonnemangsavtal från Oracle. I det här blogginlägget kommer vi att ta en titt på MySQL Enterprise Monitor och vilken typ av insikt den ger till MySQL.
Installation
Först och främst är MySQL Enterprise Monitor en del av MySQL Enterprise Edition, ett kommersiellt erbjudande från Oracle. Den kommer i flera versioner av paket, för olika operativsystem. Installationen på Windows 10 (systemet vi testade på) är ganska okomplicerat. MySQL Enterprise Monitor är konfigurerad och vissa medföljande tjänster kommer att installeras (MySQL, Tomcat). Verktyget kan nås via webbläsaren.
Initial konfiguration
Först och främst måste du lägga till värdar som du vill övervaka.
Du kan antingen lägga till enstaka värdar eller en grupp av dem. Dialogfönstret ser likadant ut förutom att när du lägger till i bulk kan du skicka en kommaseparerad lista med servrar.
Vi går inte in på detaljer, men kortfattat måste du definiera från vilken värd MySQL-instanserna ska övervakas - vanligtvis kommer det att vara den värd som du installerade MySQL Enterprise Monitor på. Du kan också ställa in agenter på dina MySQL-instanser, i så fall kommer de att kunna samla in data för värden också, inte bara MySQL-mått. Sedan måste du definiera hur du når den övervakade instansen (IP-adress/värdnamn, användare och lösenord). MySQL Enterprise Monitor kommer sedan att skapa ytterligare användare för uppgifter som övervakning, vilket inte kräver superanvändarprivilegier. Om du vill kan du också konfigurera SSL-kommunikation om det är vad MySQL-instansen använder, du kan också definiera några timeouts och om en replikeringstopologi ska upptäckas automatiskt eller inte.
Vad som också är viktigt att tänka på är att MySQL Enterprise Monitor är mycket beroende av Performance Schema - se till att dina databaser har PS aktiverat, annars kommer du inte att dra nytta av en betydande del av funktionerna i MySQL Enterprise Monitor.
Övervakning
När de övervakade MySQL-instanserna är konfigurerade kan du börja titta på den insamlade informationen. Översiktsavsnittet ger dig en kort sammanfattning av några av de viktigaste mätvärdena i MySQL. Data är aggregerad och det gör det lättare att hitta eventuella oväntade mönster och sedan gräva vidare i vad som hände.
Fliken Händelser ger en översikt över olika problem eller händelser som rapporterats av MySQL Enterprise Monitor och dess rådgivare. Du kan klicka på något av evenemangen och läsa vad det handlar om, samt eventuella rekommenderade steg att ta:
I det här speciella fallet verkar det som att vissa frågor gör genomsökningar av hela tabellen och det rekommenderas att undersöka det ytterligare för att lokalisera sådana frågor och se om de kan optimeras.
Ett annat exempel, här ser vi att tabellcachen inte är konfigurerad på ett optimalt sätt. Du kan se förklaringen av problemet, råd och rekommenderade åtgärder att vidta baserat på denna varning.
Mätvärden
På den här fliken kan vi se data för flera MySQL-mått som är användbara för att förstå systemets tillstånd.
Tidsseriediagram
Skärmdumparna ovan är bara ett exempel, det finns många fler grafer att titta på.
Det är möjligt att tillämpa filtrering:du kan definiera vilka grafer du vill se, du kan också definiera vilket tidsintervall som ska visas. Utöver det kan du bara markera en del av grafen och antingen zooma in i den eller öppna frågeanalysatorn med data från just den tiden:
Vi kommer att gå igenom den här funktionen senare men i korthet låter den dig analysera frågor, hur deras prestanda förändrades över tiden och några exempelfrågor.
Tabellstatistik
Den här fliken ger oss insikt i tabellstatistik:hur trafiken såg ut (rader hämtade, infogade, uppdaterade, raderade) och hur latensen såg ut för alla radoperationer.
Användarstatistik
På den här fliken presenterar MySQL Enterprise Monitor data om användare - exekverade uttalanden, latens, tabellskanningar, I/O-latens, anslutningar, minnesanvändning. Dessa data bör ge en ganska bra inblick i vilken användare som är ansvarig för belastningen på databasen. Det kan vara mycket användbart, särskilt i fleranvändarmiljöer, där det inte finns någon huvudkälla till trafiken.
Databasfil I/O
Databasfil I/O förklarar hur I/O-belastningen fördelas över filerna i databasen. Totalt antal I/O-operationer, latens, hur många läsningar och skrivningar som utfördes på en given fil.
Minnesanvändning
Minnesanvändning visar minnesstrukturer i MySQL, som hjälper till att bygga en bättre bild av minnesutnyttjandet i databasen. Dessa data kan komma till nytta vid problem med minnet - det är lätt att spåra var tillväxten är störst och, om det behövs, minska relevanta inställningar. Det kan också avsevärt hjälpa till att diagnostisera potentiella minnesläckor.
InnoDB buffertpool
Den här fliken i MySQL Enterprise Monitor ger användaren insikt i strukturen för buffertpoolens användning. Vilka tabeller är cachade, hur många smutsiga sidor finns det att spola?
Frågor
Det är extremt viktigt för alla MySQL-användare att förstå belastningen som frågor skapar. Vilka frågor är de mest problematiska? Hur beter de sig i tid? Prestanda kan mätas på flera sätt men det är ganska vanligt att det är den förutsägbara, stabila prestandan är viktigare än den högsta prestandan. Så länge svarstiden är acceptabel, kommer användarna att gilla de förutsägbara resultaten bättre än något snabbare svar (låg latens), vilket ibland kan sakta ner servern avsevärt. Det är därför det är mycket värdefullt att se hur en fråga beter sig i tid och peka ut vilka beteenden som inte är konsekventa.
MySQL Enterprise Monitor levererar definitivt sådan data. På listan över frågorna kan du enkelt se hur latensen förändrades över tiden. Flat line är bra, spikar - inte så mycket. Detta innebär att en sådan fråga kan behöva undersökas ytterligare. När du klickar på den kommer MySQL Enterprise Monitor att ge dig mer information om den.
Som du kan se finns det några statistiska data om den specifika frågetypen, du kan också se hur latensen förändrades i tiden. Längst ner kan du se några exempel på uttalanden i tid och du kan jämföra deras exekveringstid.
När du klickar på en av dem kommer du att se en fullständig fråga som kördes i det ögonblicket. Det kan vara användbart vid frågor där prestandan skiljer sig beroende på vilka argument som användes i WHERE-fallet (till exempel WHERE some_column ='något värde' och värden i den kolumnen är inte jämnt fördelade över raderna).
Replikering
I en MySQL-replikeringsmiljö är lagg något du måste lära dig att hantera. Vad som är viktigt är att hålla reda på det – hur illa släpar slavarna? Hur ofta händer det? Med denna information är det möjligt att försöka lokalisera problemet och bättre förstå vilka frågor som orsakar det. Sedan kan du försöka implementera några förbättringar som till exempel flertrådsreplikering och spåra om ändringarna förbättrade replikeringsprestandan och minskade fördröjningen till en acceptabel nivå.
Hur skiljer sig MySQL Enterprise Monitor från ClusterControl
Som vi sa är MySQL Enterprise Monitor en del av den betalda MySQL Enterprise Edition. För alla användare av MySQL Community, MariaDB eller Percona Server är MySQL Enterprise Edition inte tillgänglig. ClusterControl ger tillgång till övervakning av MySQL i sin gratis Community-version. När det gäller server- och frågeövervakning finns det många likheter.
ClusterControl ger dig tillgång till MySQL-mått som samlas in och lagras i Prometheus tidsseriedatabase. Du kan enkelt hålla reda på många mätvärden som är tillgängliga i ClusterControl.
ClusterControl kommer också med en lista med rådgivare, som kan användas för att hålla reda på databasens hälsa och prestanda. Du kan också enkelt skapa nya rådgivare med hjälp av Developer Studio:
Om du är intresserad av frågeprestanda, tillhandahåller ClusterControl en frågeövervakare för dig - körda frågor samlas in och deras prestanda jämförs vilket gör det enkelt för användaren att lokalisera vilka frågor som använder mest av CPU:n i databasen.
Du kan se statistikdata om frågorna - körningar, rader skickade och granskade, körningstid. Du kan också kontrollera förklaringsplanen för en viss frågetyp.
Övervaka Polyglot Persistens
En stor skillnad är möjligheten att övervaka alla huvudvarianter av MySQL-ekosystemet (Oracle MySQL, MariaDB och Percona Server), olika klustringsteknologier (NDB Cluster, Group Replication, asynkron replikering och Galera Cluster), lastbalanserare/proxies (HAProxy, Keepalived, Maxscale, ProxySQL) såväl som andra databaser med öppen källkod (PostgreSQL och MongoDB).
Automation och hantering
ClusterControl tillhandahåller även funktionalitet för att distribuera enstaka instanser eller kluster lokalt eller i molnet (AWS, GCE och Azure), samt funktioner som säkerhetskopieringshantering, automatisk failover och återställning/reparation, rullande uppgraderingar, klusterhantering för replikering eller klusterinställningar , skalning, etc.
Det är allt för idag gott folk. Om du har arbetat med MySQL Enterprise Monitor och vill lägga till något, vänligen gör det i kommentarsfältet.