sql >> Database teknologi >  >> NoSQL >> MongoDB

Automatiser databasesundhedstjek

At sikre, at databasen er sund er en af ​​de kritiske og vigtige ting, som en databaseadministrator skal gøre. Hvis vi forsømmer vedligeholdelsen af ​​databasen, er der større sandsynlighed for, at vi løber ind i et problem; for eksempel et problem med databasens ydeevne forårsaget af en arbejdsbelastning, der har ændret sig over tid, eller fejlkonfiguration, der fører til et databrud.

Jævnlig kontrol af konfigurationen, ressourceudnyttelsen, sikkerhedskopierings- og gendannelsesprocedurer, datasikkerhed, forespørgselsydeevne kan hjælpe med at undgå databaseproblemer. Vi skal have et standarddatabasetjek for vores databasemiljø, så vi kan overvåge, om databasen stadig er under kontrol.

Hvad er et databasesundhedstjek

Et databasesundhedstjek består af en række opgaver for at kontrollere tilstanden af ​​vores database. Hvorfor skal vi køre et sundhedstjek? Vi er nødt til at identificere og rette eventuelle problemer eller uregelmæssigheder i vores databasemiljø, uanset om det er et ydeevneproblem, et konfigurationsproblem eller noget, der kan forårsage udfald.

Vi kan opdele sundhedstjekket i et par kategorier:

  • Sikkerhedstjek, for at låse adgangen til databasen og sikre, at trafikken kommer fra et betroet netværk med ret privilegier.

  • Konfigurationstjek for at sikre, at konfigurationen opfylder standardkriterierne, som er blevet defineret af organisationen.

  • Ydeevnetjek for at sikre, at databasen gør brug af hardwareressourcerne og reagerer på applikationer.

  • Sikkerhedskopierings- og gendannelsesprocedurer for at sikre, at den sikkerhedskopi, vi tog fra databasen, kan gendannes.

Fra disse kategorier kan vi lave en opdeling af, hvad vi skal tjekke i databasen. Dette er meget vigtigt, så vi kan få et detaljeret tjek på alle aspekter. For eksempel:

  • Databasesikkerhed

  • Sammenlign brugeren og rettighederne på databasen med den brugermatrixadgang, vi har

  • Tjek hvidlistens IP-adresse i databasen, om trafik kommer fra et betroet netværk

  • Sørg for, at revisionslogning af databasen er aktiveret

  • Konfigurationstjek

  • Tjek SSL, der allerede er på plads

  • Sørg for, at databasekonfigurationen er korrekt (både tilladelse og ejerskab)

  • Ydeevnetjek

  • Tjek cache-hitforholdet i databasen

  • Sørg for, at databaseforbindelsen stadig er nok til at håndtere trafikken

  • Sikkerhedskopierings- og gendannelsesprocedure

  • Korrekt backup tidsplan, som leverer den aftalte RPO

  • Sørg for, at vi tester sikkerhedskopier, så vi ved, at dataene kan gendannes

Baseret på ovenstående liste kan vi oprette et script til at kontrollere disse elementer på hver type database (f.eks. MySQL, PostgreSQL, MongoDB). Hver databasetype vil naturligvis have forskellige kommandoer.

Automatisering af databasesundhedstjek

Vi ønsker ikke at køre en gentagne opgave på en ugentlig eller månedlig basis, databasens sundhedstjek er en tidskrævende opgave. Vi kører scriptet på hver databaseknude, så automatisering af sundhedstjekket sparer os ret lang tid.

Baseret på listen over sundhedstjekscripts kan vi oprette bash-script til at køre opgaverne og planlægge det med cron. Nedenfor er blot et eksempel på en simpel databasesundhedstjekrapport:

#!/bin/sh
# Simple database check report
username = "audit_user"
password = "pwd001"
hostname = "db01-payment"
mycnf = "/etc/mysql/my.cnf"
dt=$(date '+%d/%m/%Y %H:%M:%S');
audit_name = "MySQL_Healthcheck_audit_report_"$dt

# check the queries
/bin/mysql -h $hostname -u $username  -p $password --skip-column-names -B -e "SHOW STATUS LIKE 'Queries'" > $audit_name

# check open table cache hit ratio
/bin/mysql -h $hostname -u $username  -p $password --skip-column-names -B -e "SHOW STATUS LIKE 'Table_open_cache_hits'" >> $audit_name

# check the ssl session mode
/bin/mysql -h $hostname -u $username  -p $password --skip-column-names -B -e "SHOW STATUS LIKE 'Ssl_session_cache_mode'" >> $audit_name

# check the buffer pool size
cat $mycnf | grep "innodb_buffer_pool_size" >> $audit_name

#check ssl key in my.cnf
cat $mycnf | grep "ssl_key" >> $audit_name

# check permission of my.conf
ls -ltr $mycnf >> $audit_name

Sundhedstjek kan også automatiseres ved hjælp af værktøjer til konfigurationsstyring såsom Ansible, Salt, Chef eller Puppet.

Automatisering af databasesundhedstjek med ClusterControl

ClusterControl er en operationsplatform til databaser, den viser serversundhed, ydeevne eller tilgængelighedsproblemer i deres databasemiljø, alt sammen fra en central konsol. Det understøtter automatisering af databasesundhedstjek gennem driftsrapporter. Du kan generere eller planlægge driftsrapporter samt hændelsesrapporter. Der er få typer rapporter som vist nedenfor:

Den daglige systemrapport giver dig indsigt i din nuværende databaseklynge med består af forskellige oplysninger såsom nodeservicestatus, backupstatus, nodernes oppetid, topforespørgsler resumé.

Pakkeopgraderingsrapport giver dig en oversigt over tilgængelige pakker til opgraderingen fra repository manager.

Skemaændringsrapport sammenligner databaseændringer i en tabelstruktur, der er sket mellem to forskellige genererede rapporter.

Sikkerhedskopieringsrapporter giver dig oplysninger om sikkerhedskopieringsoversigt og detaljer, f.eks. den seneste oprettede sikkerhedskopi, status for sikkerhedskopieringen, sikkerhedskopieringsbekræftelsesstatus og sikkerhedskopieringsperioden.

Udover driftsrapporterne er der også rådgiverne, som giver dig indsigt i CPU'en, disken, databaseforbindelserne osv. som nedenfor:

Meddelelserne via e-mail og advarsler gennem konfigurerede tredjepartskanaler giver indsigt i ting, der går galt (f.eks. mislykkede sikkerhedskopieringer, sikkerhedskopier, der ikke kan gendannes, knudefejl).

Schema Analyzer giver information om duplikerede/redundante indekser, tabeller uden primærnøgler og tabeller ved hjælp af MyISAM-lagringsmotor. Redundante indekser kan være særligt gode at kende til, da de svulmer størrelsen på databasen (og sikkerhedskopier) og kan bremse opdateringer på bordet.


  1. kunne ikke oprette forbindelse til server 127.0.0.1 shell/mongo.js

  2. Tvinger anvendelse af et 2dsphere-indeks på et mongoose-skema placeringsfeltet til at være påkrævet?

  3. blpop stopper med at behandle køen efter et stykke tid

  4. Mongo Query med Regex i Node JS, der opererer PÅ EN VARIABEL