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

Automatizza il controllo dello stato del database

Garantire che il database sia integro è una delle cose critiche e importanti che un amministratore di database deve fare. Se trascuriamo la manutenzione del database, c'è una maggiore probabilità di incorrere in un problema; ad esempio, un problema di prestazioni del database causato da un carico di lavoro che è cambiato nel tempo o una configurazione errata che porta a una violazione dei dati.

Il controllo regolare della configurazione, dell'utilizzo delle risorse, delle procedure di backup e ripristino, della sicurezza dei dati e delle prestazioni delle query può aiutare a evitare problemi di database. Abbiamo bisogno di un controllo del database standard per il nostro ambiente di database, in modo da poter monitorare se il database è ancora sotto controllo.

Cos'è un controllo dello stato del database

Un controllo dello stato del database consiste in una serie di attività per controllare le condizioni del nostro database. Perché è necessario eseguire un controllo dello stato di salute? Dobbiamo identificare e correggere eventuali problemi o anomalie nel nostro ambiente di database, che si tratti di un problema di prestazioni, di configurazione o di qualcosa che può causare un'interruzione.

Possiamo suddividere il controllo dello stato in alcune categorie:

  • Controllo di sicurezza, per bloccare l'accesso al database e garantire che il traffico provenga da una rete affidabile con privilegi.

  • Verifica della configurazione, per garantire che la configurazione soddisfi i criteri standard definiti dall'organizzazione.

  • Controllo delle prestazioni, per garantire che il database utilizzi le risorse hardware e sia reattivo alle applicazioni.

  • Procedure di backup e ripristino, per garantire che il backup che abbiamo prelevato dal database possa essere ripristinato.

Da queste categorie, possiamo fare una suddivisione di ciò che dobbiamo controllare nel database. Questo è molto importante, quindi possiamo avere un controllo dettagliato su ogni aspetto. Ad esempio:

  • Sicurezza database

  • Confronta l'utente e i privilegi sul database con l'accesso alla matrice utente che abbiamo

  • Controlla l'indirizzo IP della whitelist sul database, se il traffico proviene da una rete attendibile

  • Assicurati che la registrazione dell'audit del database sia abilitata

  • Verifica configurazione

  • Verifica l'SSL già in atto

  • Assicurati che la configurazione del database sia corretta (sia permessi che proprietà)

  • Controllo delle prestazioni

  • Controlla il tasso di hit della cache del database

  • Assicurati che la connessione al database sia ancora sufficiente per gestire il traffico

  • Procedura di backup e ripristino

  • Programmazione di backup adeguata, che fornisce l'RPO concordato

  • Assicurati di testare i backup in modo da sapere che i dati sono ripristinabili

In base all'elenco sopra, possiamo creare uno script per controllare questi elementi su ogni tipo di database (es. MySQL, PostgreSQL, MongoDB). Ogni tipo di database avrà ovviamente comandi diversi.

Automatizzazione dei controlli di integrità del database

Non vogliamo eseguire un'attività ripetitiva su base settimanale o mensile, il controllo dello stato del database è un'attività che richiede tempo. Eseguiamo lo script su ogni nodo del database, quindi l'automazione dei controlli di integrità ci fa risparmiare un bel po' di tempo.

In base all'elenco degli script di controllo dello stato, possiamo creare uno script bash per eseguire le attività e pianificarlo con cron. Di seguito è riportato solo un esempio di un semplice rapporto di controllo dello stato del 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

I controlli sanitari possono anche essere automatizzati da strumenti di gestione della configurazione come Ansible, Salt, Chef o Puppet.

Automatizzazione dei controlli di integrità del database con ClusterControl

ClusterControl è una piattaforma operativa per i database, mostra problemi di salute, prestazioni o disponibilità del server all'interno del loro ambiente di database, il tutto da una console centrale. Supporta l'automazione dei controlli di integrità del database tramite Report operativi. È possibile generare o pianificare i rapporti operativi, nonché i rapporti sugli incidenti. Esistono alcuni tipi di rapporto come mostrato di seguito:

Il rapporto di sistema giornaliero fornisce informazioni dettagliate sul cluster di database corrente composto da varie informazioni come lo stato del servizio del nodo, lo stato del backup, il tempo di attività dei nodi, il riepilogo delle query principali.

Il rapporto sull'aggiornamento del pacchetto fornisce un riepilogo dei pacchetti disponibili per l'aggiornamento dal gestore del deposito.

Il rapporto sulle modifiche allo schema confronta le modifiche al database in una struttura di tabella avvenute tra due diversi rapporti generati.

I rapporti di backup forniscono informazioni sul riepilogo e sui dettagli del backup, ad esempio l'ultimo backup creato, lo stato del backup, lo stato di verifica del backup e il periodo di conservazione del backup.

Oltre ai Rapporti operativi, ci sono anche gli Advisor che ti danno informazioni su CPU, disco, connessioni al database, ecc., come di seguito:

Le notifiche via e-mail e gli avvisi tramite canali configurati di terze parti forniscono informazioni dettagliate sugli errori (ad es. backup non riusciti, backup non ripristinabili, errori dei nodi).

Schema Analyzer fornisce informazioni su indici duplicati/ridondanti, tabelle senza chiavi primarie e tabelle che utilizzano il motore di archiviazione MyISAM. Gli indici ridondanti possono essere particolarmente utili da conoscere, poiché gonfiano le dimensioni del database (e dei backup) e possono rallentare gli aggiornamenti sul tavolo.