Övervakning är ett måste i alla miljöer, och databaser är inte undantaget. När du har din databasinfrastruktur igång måste du hålla koll på vad som händer. Övervakning är ett måste om du vill vara säker på att allt går bra men också om du gör nödvändiga justeringar medan ditt system växer och utvecklas. Det gör det möjligt för dig att identifiera trender, planera för uppgraderingar eller förbättringar eller reagera adekvat på eventuella problem eller fel som kan uppstå med nya versioner, olika syften och så vidare.
För varje databasteknik finns det olika saker att övervaka. Vissa av dessa är specifika för databasmotorn, leverantören eller till och med den specifika versionen som du använder. Databaskluster är starkt beroende av den underliggande infrastrukturen, så nätverks- och driftsstatistik är intressant att se även av databasadministratörerna.
När man kör flera databassystem kan övervakningen av dessa system bli ett jobbigt arbete.
I den här bloggen tar vi en titt på vad du behöver för att övervaka en MySQL 8.0-miljö. Vi kommer också att ta en titt på funktioner för övervakning av klusterkontroll, som kan hjälpa dig att spåra tillståndet för dina databaser gratis.
Övervakning av operativsystem och databas
När man observerar ett databaskluster eller nod finns det två huvudpunkter att ta hänsyn till:operativsystemet och själva MySQL-instansen. Du måste definiera vilka mätvärden du ska övervaka från båda sidor och hur du ska göra det. Du måste alltid följa parametern enligt ditt system, och du bör leta efter ändringar i beteendemodellen.
Tänk på att när en av dina parametrar påverkas kan den också påverka andra, vilket gör felsökningen av problemet mer komplicerad. Att ha ett korrekt övervaknings- och varningssystem är viktigt för att göra denna uppgift så enkel som möjligt.
I de flesta fall kommer du att behöva använda några verktyg, eftersom det är svårt att hitta ett som täcker alla önskade mätvärden.
Övervakning av operativsystem
En viktig sak (som är gemensam för alla databasmotorer och till och med för alla system) är att övervaka operativsystemets beteende. Här är några punkter att kontrollera här. Nedan kan du hitta de bästa systemresurserna att titta på på en databasserver. Det är faktiskt också listan över de allra första sakerna att kontrollera.
CPU-användning
En hög CPU-användning är inte en dålig sak så länge du inte når gränsen. Överdriven andel av CPU-användningen kan vara ett problem om det inte är vanligt beteende. I det här fallet är det viktigt att identifiera processen/processerna som genererar detta problem. Om problemet är databasprocessen måste du kontrollera vad som händer i databasen.
RAM-minne eller SWAP-användning
Helst bör hela din databas lagras i minnet, men det är inte alltid möjligt. Ge MySQL så mycket du har råd med men lämna tillräckligt mycket för att andra processer ska fungera.
Om du ser ett högt värde för detta mått och ingenting har förändrats i ditt system, måste du förmodligen kontrollera din databaskonfiguration. Parametrar som shared_buffers och work_mem kan påverka detta direkt eftersom de definierar mängden minne som ska kunna användas för MySQL-databasen. Swap är endast för nödsituationer, och det bör inte användas, se till att du också har ditt operativsystem inställt för att låta MySQL bestämma om swap-användning.
Diskanvändning
Diskanvändning är ett av nyckelmåtten för att övervaka och varna. Se till att du alltid har ledigt utrymme för nya data, temporära filer, ögonblicksbilder eller säkerhetskopior.
Att övervaka hårda metriska värden är inte tillräckligt bra. En onormal ökning av användningen av diskutrymme eller en överdriven diskåtkomstförbrukning är viktiga saker att titta på eftersom du kan ha ett stort antal fel inloggade i MySQL-loggfilen eller en usel cache-konfiguration som kan generera en viktig diskåtkomstförbrukning istället för använda minne för att bearbeta frågorna. Se till att du kan fånga onormala beteenden även om din varning och viktiga mätvärden inte har nåtts ännu.
Tillsammans med övervakningsutrymme bör vi också övervaka diskaktivitet. De högsta värdena att övervaka är:
- Läs-/skrivförfrågningar
- IO-kölängd
- Genomsnittlig IO-väntetid
- Genomsnittlig läs-/skrivtid
- Läs-/skrivbandbredd
Du kan använda iostat eller pt-diskstats från Percona för att se alla dessa detaljer.
Saker som kan påverka din diskprestanda är ofta relaterade till dataöverföring från och mot din disk så övervaka onormala processer än vad som kan startas från andra användare.
Laddmedelvärde
En allt-i-ett prestandamått. Att förstå Linux Load är en nyckel för att övervaka operativsystem och databasberoende system.
Belastningsgenomsnitt relaterat till de tre ovan nämnda punkterna. Ett högt belastningsmedelvärde kan genereras av en överdriven CPU-, RAM- eller diskanvändning.
Nätverk
Om du inte gör säkerhetskopior eller överför stora mängder data, borde det inte vara flaskhalsen.
Ett nätverksproblem kan påverka alla system eftersom programmet inte kan ansluta (eller ansluta förlorade paket) till databasen, så detta är verkligen ett viktigt mått att övervaka. Du kan övervaka latens eller paketförlust, och huvudproblemet kan vara en nätverksmättnad, ett maskinvaruproblem eller bara en usel nätverkskonfiguration.
Databasövervakning
Medan övervakning är ett måste, är det vanligtvis inte gratis. Det finns alltid en kostnad på databasens prestanda, beroende på hur mycket du övervakar, så du bör undvika att övervaka saker som du inte kommer att använda.
I allmänhet finns det två sätt att övervaka dina databaser, från loggarna eller från databassidan genom att fråga.
I fallet med loggar, för att kunna använda dem, måste du ha en hög loggningsnivå, vilket genererar hög diskåtkomst och det kan påverka din databas prestanda.
För frågeläget använder varje anslutning till databasen resurser, så beroende på aktiviteten i din databas och de tilldelade resurserna kan det också påverka prestandan.
Naturligtvis finns det många mätvärden i MySQL. Här kommer vi att fokusera på det viktigaste.
Övervaka aktiva sessioner
Du bör också spåra antalet aktiva sessioner och DB upp-ned-status. För att förstå problemet måste du ofta se hur länge databasen körs. så vi kan använda detta för att upptäcka respawns.
Nästa sak skulle vara ett antal sessioner. Om du är nära gränsen måste du kontrollera om något är fel eller om du bara behöver öka max_connections-värdet. Skillnaden i antalet kan vara en ökning eller minskning av anslutningar. Felaktig användning av anslutningspoolning, låsning eller nätverksproblem är de vanligaste problemen relaterade till antalet anslutningar.
Nyckelvärdena här är
- Upptid
- Trådar_anslutna
- Max_used_connections
- Aborted_connects
Databaslås
Om du har en fråga som väntar på en annan fråga måste du kontrollera om den andra frågan är en normal process eller något nytt. I vissa fall, om någon gör en uppdatering på ett stort bord, till exempel, kan den här åtgärden påverka det normala beteendet hos din databas och generera ett stort antal lås.
Övervaka replikering
Nyckelmåtten att övervaka för replikering är fördröjningen och replikeringstillståndet. Inte bara upp-ned-status utan också fördröjning eftersom en kontinuerlig ökning av detta värde inte är ett särskilt gott tecken eftersom det betyder att slaven inte kan komma ikapp sin herre.
De vanligaste problemen är nätverksproblem, problem med hårdvaruresurser eller problem med underdimensionering. Om du står inför ett replikeringsproblem måste du känna till detta så fort som möjligt eftersom du måste fixa det för att säkerställa miljön med hög tillgänglighet.
Replikering övervakas bäst genom att kontrollera SLAVSTATUS och följande parametrar:
- SLAVE_RUNNING
- SLAVE_IO_Kör
- SLAVE_SQL_RUNNING
- LAST_SQL_ERRNO
- SECONDS_BEHIND_MASTER
Säkerhetskopiering
Tyvärr kommer vanilla Community-utgåvan inte med backuphanteraren. Du bör veta om säkerhetskopieringen har slutförts och om den är användbar. Vanligtvis tas inte denna sista punkt med i beräkningen, men det är förmodligen den mest kritiska kontrollen i en säkerhetskopieringsprocess. Här skulle vi behöva använda externa verktyg som percona-xtrabackup eller ClusterControl.
Databasloggar
Du bör övervaka din databaslogg för fel som FATAL eller dödläge, eller till och med för vanliga fel som autentiseringsproblem eller långvariga frågor. De flesta av felen är skrivna i loggfilen med detaljerad användbar information för att fixa det. Vanliga felpunkter du behöver hålla ett öga på är fel, loggfilstorlekar. Platsen för felloggen kan hittas under variabeln log_error.
Externa verktyg
Sist men inte minst kan du hitta en lista med användbara verktyg för att övervaka din databasaktivitet.
Percona Toolkit - är uppsättningen Linux-verktyg från Percona för att analysera MySQL- och OS-aktiviteter. Du hittar den här. Den stöder de mest populära 64-bitars Linux-distributionerna som Debian, Ubuntu och Redhat.
mysqladmin - mysqladmin är ett administrationsprogram för MySQL-demonen. Den kan användas för att kontrollera serverns hälsa (ping), lista processerna, se värdena för variablerna, men också göra en del administrativt arbete som att skapa/släppa databaser, spola (återställa) loggar, statistik och tabeller, döda körande frågor, stoppa servern och kontrollera replikeringen.
innotop - erbjuder en utökad vy av SHOW-satser. Det är mycket kraftfullt och kan avsevärt minska utredningstiden. Bland vanilla MySQL-stöd kan du se Galera-vyn och Master-slave-replikeringsdetaljer.
mtop - övervakar en MySQL-server som visar de frågor som tar mest tid att slutföra. Funktioner inkluderar att "zooma" in på en process för att visa hela frågan, "förklara" frågeoptimeringsinformationen för en fråga och "döda" frågor. Dessutom tillhandahålls serverprestandastatistik, konfigurationsinformation och inställningstips.
Mytop - körs i en terminal och visar statistik om trådar, frågor, långsamma frågor, drifttid, laddning, etc. i tabellformat, mycket likt Linux
Slutsats
Den här bloggen är inte avsedd att vara en uttömmande guide till hur man förbättrar databasövervakning, men den ger förhoppningsvis en tydligare bild av vad saker kan bli väsentliga och några av de grundläggande parametrarna som kan övervakas. Tveka inte att meddela oss om vi har missat några viktiga i kommentarerna nedan.