Bewaking is een must in alle omgevingen, en databases zijn geen uitzondering. Zodra uw database-infrastructuur up-and-running is, moet u in de gaten houden wat er gebeurt. Monitoring is een must als je zeker wilt weten dat alles goed gaat, maar ook als je de nodige aanpassingen doet terwijl je systeem groeit en evolueert. Zo kunt u trends identificeren, upgrades of verbeteringen plannen of adequaat reageren op eventuele problemen of fouten die zich kunnen voordoen met nieuwe versies, andere doeleinden, enzovoort.
Voor elke databasetechnologie zijn er verschillende dingen om te controleren. Sommige hiervan zijn specifiek voor de database-engine, leverancier of zelfs de specifieke versie die u gebruikt. Databaseclusters zijn sterk afhankelijk van de onderliggende infrastructuur, dus netwerk- en bedrijfsstatistieken zijn ook interessant om te zien door de databasebeheerders.
Als je meerdere databasesystemen draait, kan het monitoren van deze systemen een hele klus worden.
In deze blog bekijken we wat je nodig hebt om een MySQL 8.0-omgeving te bewaken. We zullen ook kijken naar functies voor het bewaken van clusterbeheer, waarmee u gratis de status van uw databases kunt volgen.
Bewaking van besturingssysteem en databasesysteem
Bij het observeren van een databasecluster of -knooppunt zijn er twee belangrijke punten waarmee u rekening moet houden:het besturingssysteem en de MySQL-instantie zelf. U moet bepalen welke statistieken u van beide kanten gaat controleren en hoe u dit gaat doen. U moet de parameter altijd volgen in de betekenis van uw systeem en u moet zoeken naar wijzigingen in het gedragsmodel.
Houd er rekening mee dat wanneer een van uw parameters wordt beïnvloed, dit ook andere parameters kan beïnvloeden, waardoor het oplossen van het probleem ingewikkelder wordt. Het hebben van een goed monitoring- en waarschuwingssysteem is essentieel om deze taak zo eenvoudig mogelijk te maken.
In de meeste gevallen moet je een aantal tools gebruiken, omdat het moeilijk is om er een te vinden die alle gewenste statistieken dekt.
OS-systeembewaking
Een belangrijk ding (dat gemeenschappelijk is voor alle database-engines en zelfs voor alle systemen) is het bewaken van het gedrag van het besturingssysteem. Hier zijn enkele punten om hier te controleren. Hieronder vindt u de beste systeembronnen om te bekijken op een databaseserver. Het is eigenlijk ook de lijst met de allereerste dingen die u moet controleren.
CPU-gebruik
Een hoog CPU-gebruik is niet erg, zolang je de limiet niet bereikt. Een te hoog percentage CPU-gebruik kan een probleem zijn als dit niet gebruikelijk is. In dit geval is het essentieel om het proces of de processen te identificeren die dit probleem veroorzaken. Als het probleem het databaseproces is, moet u controleren wat er in de database gebeurt.
RAM-geheugen of SWAP-gebruik
Idealiter zou je hele database in het geheugen moeten worden opgeslagen, maar dit is niet altijd mogelijk. Geef MySQL zoveel als u zich kunt veroorloven, maar laat genoeg over om andere processen te laten functioneren.
Als u een hoge waarde voor deze statistiek ziet en er is niets veranderd in uw systeem, moet u waarschijnlijk uw databaseconfiguratie controleren. Parameters zoals shared_buffers en work_mem kunnen dit rechtstreeks beïnvloeden, omdat ze de hoeveelheid geheugen definiëren die voor de MySQL-database kan worden gebruikt. Swap is alleen voor noodgevallen en mag niet worden gebruikt. Zorg ervoor dat je besturingssysteem ook is ingesteld om MySQL te laten beslissen over het gebruik van swaps.
Schijfgebruik
Schijfgebruik is een van de belangrijkste statistieken om te controleren en te waarschuwen. Zorg ervoor dat je altijd vrije ruimte hebt voor nieuwe gegevens, tijdelijke bestanden, snapshots of back-ups.
Het controleren van harde metrische waarden is niet goed genoeg. Een abnormale toename van het gebruik van schijfruimte of een buitensporig gebruik van schijftoegang zijn essentiële zaken om op te letten, aangezien er een groot aantal fouten in het MySQL-logbestand kan worden vastgelegd of een waardeloze cacheconfiguratie die een essentieel verbruik van schijftoegang kan veroorzaken in plaats van geheugen gebruiken om de query's te verwerken. Zorg ervoor dat u abnormaal gedrag kunt detecteren, zelfs als uw waarschuwings- en kritieke statistieken nog niet zijn bereikt.
Samen met het bewaken van de ruimte moeten we ook de schijfactiviteit in de gaten houden. De topwaarden om te controleren zijn:
- Lees-/schrijfverzoeken
- IO-wachtrijlengte
- Gemiddelde IO-wachttijd
- Gemiddelde lees-/schrijftijd
- Bandbreedte lezen/schrijven
Je kunt iostat of pt-diskstats van Percona gebruiken om al deze details te zien.
Dingen die de prestaties van uw schijf kunnen beïnvloeden, hebben vaak te maken met gegevensoverdracht van en naar uw schijf, dus houd abnormale processen in de gaten die niet door andere gebruikers kunnen worden gestart.
Gemiddelde laden
Een alles-in-één prestatiestatistiek. Inzicht in Linux Load is een sleutel om OS- en databaseafhankelijke systemen te bewaken.
Belastingsgemiddelde gerelateerd aan de drie hierboven genoemde punten. Een hoge gemiddelde belasting kan worden gegenereerd door een overmatig CPU-, RAM- of schijfgebruik.
Netwerk
Tenzij het maken van back-ups of het overbrengen van grote hoeveelheden gegevens, zou dit niet het knelpunt moeten zijn.
Een netwerkprobleem kan van invloed zijn op alle systemen, aangezien de applicatie geen verbinding kan maken (of geen verbinding kan maken met verliezende pakketten) met de database, dus dit is inderdaad een belangrijke statistiek om te controleren. U kunt latentie of pakketverlies controleren, en het belangrijkste probleem kan een netwerkverzadiging, een hardwareprobleem of gewoon een slechte netwerkconfiguratie zijn.
Databasecontrole
Hoewel monitoring een must is, is het meestal niet gratis. Er zijn altijd kosten verbonden aan de databaseprestaties, afhankelijk van hoeveel u controleert, dus u moet voorkomen dat u dingen controleert die u niet gebruikt.
Over het algemeen zijn er twee manieren om uw databases te controleren, vanuit de logs of vanuit de database door middel van query's.
In het geval van logboeken, om ze te kunnen gebruiken, moet u een hoog logboekniveau hebben, wat hoge schijftoegang genereert en de prestaties van uw database kan beïnvloeden.
Voor de bevragingsmodus gebruikt elke verbinding met de database bronnen, dus afhankelijk van de activiteit van uw database en de toegewezen bronnen, kan dit ook de prestaties beïnvloeden.
Natuurlijk zijn er veel statistieken in MySQL. Hier zullen we ons concentreren op de belangrijkste.
Actieve sessies volgen
Je moet ook het aantal actieve sessies en de DB up-down status bijhouden. Om het probleem te begrijpen, moet u vaak zien hoe lang de database actief is. zodat we dit kunnen gebruiken om respawns te detecteren.
Het volgende is een aantal sessies. Als u de limiet nadert, moet u controleren of er iets mis is of dat u alleen de waarde max_connections moet verhogen. Het verschil in het aantal kan een toename of afname van aansluitingen zijn. Onjuist gebruik van pooling van verbindingen, vergrendeling of netwerkproblemen zijn de meest voorkomende problemen met betrekking tot het aantal verbindingen.
De belangrijkste waarden hier zijn
- Uptime
- Threads_connected
- Max_used_connections
- Afgebroken_connects
Databasevergrendelingen
Als je een vraag hebt die wacht op een andere vraag, moet je controleren of die andere vraag een normaal proces is of iets nieuws. In sommige gevallen, als iemand bijvoorbeeld een update uitvoert op een grote tafel, kan deze actie het normale gedrag van uw database beïnvloeden en een groot aantal vergrendelingen genereren.
Replicatie bewaken
De belangrijkste meetwaarden die moeten worden gecontroleerd op replicatie zijn de vertraging en de replicatiestatus. Niet alleen de up-down status maar ook de lag omdat een continue stijging van deze waarde geen goed teken is, omdat het betekent dat de slave zijn master niet kan inhalen.
De meest voorkomende problemen zijn netwerkproblemen, problemen met hardwarebronnen of problemen met onderdimensionering. Als u een replicatieprobleem ondervindt, moet u dit zo snel mogelijk weten, aangezien u dit moet oplossen om de omgeving met hoge beschikbaarheid te garanderen.
Replicatie kan het beste worden gecontroleerd door de SLAVE STATUS en de volgende parameters te controleren:
- SLAVE_RUNNING
- SLAVE_IO_Running
- SLAVE_SQL_RUNNING
- LAST_SQL_ERRNO
- SECONDS_BEHIND_MASTER
Back-ups
Helaas wordt de vanilla community-editie niet geleverd met de back-upmanager. U moet weten of de back-up is voltooid en of deze bruikbaar is. Meestal wordt met dit laatste punt geen rekening gehouden, maar het is waarschijnlijk de meest kritische controle in een back-upproces. Hier zouden we externe tools zoals percona-xtrabackup of ClusterControl moeten gebruiken.
Databaselogboeken
Je moet je databaselogboek controleren op fouten zoals FATAL of deadlock, of zelfs op veelvoorkomende fouten zoals authenticatieproblemen of langlopende zoekopdrachten. De meeste fouten worden in het logbestand geschreven met gedetailleerde nuttige informatie om het op te lossen. Veelvoorkomende storingspunten die u in de gaten moet houden zijn fouten, logbestandsgroottes. De locatie van het foutenlogboek is te vinden onder de variabele log_error.
Externe tools
Last but not least kunt u een lijst met handige tools vinden om uw database-activiteit te volgen.
Percona Toolkit - is de set Linux-tools van Percona om MySQL- en OS-activiteiten te analyseren. Je kunt het hier vinden. Het ondersteunt de meest populaire 64-bits Linux-distributies zoals Debian, Ubuntu en Redhat.
mysqladmin - mysqladmin is een beheerprogramma voor de MySQL-daemon. Het kan worden gebruikt om de serverstatus (ping) te controleren, de processen weer te geven, de waarden van de variabelen te zien, maar ook wat administratief werk te doen, zoals het maken/verwijderen van databases, het doorspoelen (resetten) van logs, statistieken en tabellen, het beëindigen van lopende query's, stop de server en controleer de replicatie.
innotop - biedt een uitgebreide weergave van SHOW-statements. Het is zeer krachtig en kan de onderzoekstijd aanzienlijk verkorten. Onder vanilla MySQL-ondersteuning kunt u de Galera-weergave en Master-slave-replicatiedetails zien.
mtop - bewaakt een MySQL-server die de query's toont die de meeste tijd in beslag nemen. Functies zijn onder meer 'inzoomen' op een proces om de volledige query te tonen, 'uitleggen' van de query-optimalisatie-informatie voor een query en 'killing'-query's. Daarnaast worden serverprestatiestatistieken, configuratie-informatie en afstemmingstips gegeven.
Mytop - draait in een terminal en geeft statistieken weer over threads, zoekopdrachten, langzame zoekopdrachten, uptime, laden, enz. in tabelvorm, vergelijkbaar met Linux
Conclusie
Dit blog is niet bedoeld als een uitputtende gids voor het verbeteren van databasemonitoring, maar het geeft hopelijk een duidelijker beeld van wat essentieel kan worden en enkele van de basisparameters die kunnen worden bekeken. Aarzel niet om ons te laten weten of we belangrijke hebben gemist in de onderstaande opmerkingen.