sql >> Database >  >> NoSQL >> MongoDB

Databasestatuscontrole automatiseren

Ervoor zorgen dat de database gezond is, is een van de cruciale en belangrijke dingen die een databasebeheerder moet doen. Als we het onderhoud van de database verwaarlozen, is de kans groter dat we een probleem tegenkomen; bijvoorbeeld een prestatieprobleem met de database dat wordt veroorzaakt door een werkbelasting die in de loop van de tijd is veranderd, of een verkeerde configuratie die leidt tot een datalek.

Regelmatige controle van de configuratie, het gebruik van bronnen, back-up- en herstelprocedures, gegevensbeveiliging en queryprestaties kunnen databaseproblemen helpen voorkomen. We hebben een standaard databasecontrole nodig voor onze databaseomgeving, zodat we kunnen controleren of de database nog onder controle is.

Wat is een databasestatuscontrole

Een database-gezondheidscontrole bestaat uit een aantal taken om de staat van onze database te controleren. Waarom moeten we een gezondheidscontrole uitvoeren? We moeten eventuele problemen of afwijkingen in onze databaseomgeving identificeren en oplossen, of het nu gaat om een ​​prestatieprobleem, een configuratieprobleem of iets dat een storing kan veroorzaken.

We kunnen de gezondheidscontrole in een paar categorieën onderverdelen:

  • Beveiligingscontrole, om de toegang tot de database te vergrendelen en ervoor te zorgen dat het verkeer afkomstig is van een vertrouwd netwerk met de juiste voorrechten.

  • Configuratiecontrole, om ervoor te zorgen dat de configuratie voldoet aan de standaardcriteria die door de organisatie zijn gedefinieerd.

  • Prestatiecontrole, om ervoor te zorgen dat de database gebruikmaakt van de hardwarebronnen en reageert op toepassingen.

  • Back-up- en herstelprocedures om ervoor te zorgen dat de back-up die we uit de database hebben genomen, kan worden hersteld.

Van deze categorieën kunnen we een overzicht maken van wat we in de database moeten controleren. Dit is erg belangrijk, zodat we elk aspect gedetailleerd kunnen controleren. Bijvoorbeeld:

  • Databasebeveiliging

  • Vergelijk de gebruiker en privileges op de database met de gebruikersmatrixtoegang die we hebben

  • Controleer het IP-adres op de witte lijst in de database,  of het verkeer afkomstig is van een vertrouwd netwerk

  • Zorg ervoor dat auditregistratie van de database is ingeschakeld

  • Configuratiecontrole

  • Controleer of de SSL al aanwezig is

  • Zorg ervoor dat de databaseconfiguratie correct is (zowel toestemming als eigendom)

  • Prestatiecontrole

  • Controleer de cache hit ratio van de database

  • Zorg ervoor dat de databaseverbinding nog steeds voldoende is om het verkeer af te handelen

  • Back-up- en herstelprocedure

  • Goed back-upschema, dat de afgesproken RPO oplevert

  • Zorg ervoor dat we back-ups testen, zodat we weten dat de gegevens kunnen worden hersteld

Op basis van de bovenstaande lijst kunnen we een script maken om die items op elk type database te controleren (bijv. MySQL, PostgreSQL, MongoDB). Elk databasetype zal uiteraard verschillende commando's hebben.

Database-gezondheidscontroles automatiseren

We willen geen repetitieve taak op wekelijkse of maandelijkse basis uitvoeren, de database-gezondheidscontrole is een tijdrovende taak. We voeren het script uit op elk databaseknooppunt, dus automatisering van de gezondheidscontroles bespaart ons behoorlijk wat tijd.

Op basis van de lijst met scripts voor gezondheidscontrole kunnen we een bash-script maken om de taken uit te voeren en deze in te plannen met cron. Hieronder ziet u slechts een voorbeeld van een eenvoudig rapport over de gezondheid van de database:

#!/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

Gezondheidscontroles kunnen ook worden geautomatiseerd door configuratiebeheertools zoals Ansible, Salt, Chef of Puppet.

Database-gezondheidscontroles automatiseren met ClusterControl

ClusterControl is een ops-platform voor databases, het toont servergezondheids-, prestatie- of beschikbaarheidsproblemen binnen hun databaseomgeving, allemaal vanaf een centrale console. Het ondersteunt het automatiseren van databasegezondheidscontroles via operationele rapporten. U kunt zowel de operationele rapporten als de incidentrapporten genereren of plannen. Er zijn enkele soorten rapporten zoals hieronder weergegeven:

Het dagelijkse systeemrapport geeft u inzicht in uw huidige databasecluster met bestaat uit verschillende informatie zoals node-servicestatus, back-upstatus, de uptime van nodes, samenvatting van de belangrijkste zoekopdrachten.

Pakketupgraderapport geeft u een overzicht van beschikbare pakketten voor de upgrade van de depotbeheerder.

Schemawijzigingenrapport vergelijkt databasewijzigingen in een tabelstructuur die plaatsvonden tussen twee verschillende gegenereerde rapporten.

Back-uprapporten geven u informatie over het back-upoverzicht en details, zoals de laatst gemaakte back-up, de status van de back-up, de verificatiestatus van de back-up en de bewaarperiode van de back-up.

Naast de operationele rapporten zijn er ook de adviseurs die u inzicht geven in de CPU, schijf, databaseverbindingen, enz., zoals hieronder:

De meldingen via e-mail en waarschuwingen via geconfigureerde kanalen van derden geven inzicht in dingen die fout gaan (bijv. mislukte back-ups, onherstelbare back-ups, node-storingen).

Schema Analyzer geeft informatie over dubbele/redundante indexen, tabellen zonder primaire sleutels en tabellen die de MyISAM-opslagengine gebruiken. Redundante indexen kunnen bijzonder goed zijn om te weten, omdat ze de grootte van de database (en back-ups) doen opzwellen en updates op de tafel kunnen vertragen.


  1. MongoDB-onveiligheidsniveaus en hoe ze te vermijden

  2. Update MongoDB-verzameling met $toLower

  3. Vergelijk arrays en retourneer het verschil

  4. Volledige tekst zoekopties voor MongoDB setup