L'automazione del database aiuta a rendere semplici e veloci attività complesse e che richiedono tempo. Le attività più comunemente e facilmente identificabili per l'automazione sono quelle che richiedono tempo ma sono ripetitive. Questi spesso consumano produttività e possono influire sulle finanze dell'azienda perché devi pagare le persone che lavorano su questi compiti. Tuttavia, i processi in cui tempo e fatica vengono consumati inutilmente possono essere convertiti in automazione virtuale, evitando così lavori spesso noiosi ed estenuanti.
L'automazione del database è stata una pratica comune di amministratori di database e amministratori di server, che insieme sono più comunemente conosciuti ora come DevOps. DevOps si riferisce anche alla combinazione di DBA e attività di amministrazione del server. Alla vecchia maniera, le attività automatizzate tradizionali e comuni sono scritte come una serie di istruzioni SQL o file .sql, che distribuiscono e forniscono server tramite script, impostando la crittografia/decrittografia o sfruttando la sicurezza per l'ambiente in cui si suppone la tua automazione correre. In questo caso, l'automazione non è un esempio di un'azienda che sostituisce le persone con script. È lì come assistente per aggiornare le cose e completare le attività più velocemente con meno errori. L'automazione non può sostituire il modo in cui i DBA svolgono le loro attività o il valore che possono fornire all'intera azienda o organizzazione.
Strumenti sofisticati per Infrastructure as Code (IaC) come Puppet, Chef, Ansible, SaltStack e Terraform aiutano i DBA a completare le attività facilmente replicabili, come backup e ripristino, failover, distribuzione di nuovi cluster, regolazione delle impostazioni di sicurezza, ottimizzazione delle prestazioni del kernel e del database del sistema operativo e molto altro ancora. Con l'aiuto dell'automazione, molti DBA hanno anche migliorato o spostato le proprie competenze dal concentrarsi su attività specifiche del dominio dei dati per coprire anche come codificare per utilizzare questi strumenti IaC che semplificano le cose rispetto all'utilizzo dell'approccio tradizionale. Attualmente sono disponibili anche strumenti che semplificano la gestione delle risorse nel cloud, come la gestione degli account utente, dei log, dell'implementazione delle istanze o della gestione dei server della tua azienda. Gli strumenti per il cloud dei tre grandi fornitori di servizi cloud includono AWS CloudFormation, Azure Resource Manager e Google Cloud Deployment Manager e consentono ai DBA o ai DevOps di sfruttare la potenza dell'automazione e rendere le cose più veloci. Questo non solo impressiona la tua organizzazione o i dirigenti dell'azienda, ma anche i clienti che si affidano al tuo servizio.
Cosa deve essere automatizzato?
Come accennato in precedenza, l'automazione del database non è nuova per i DBA, gli amministratori di server o persino i DevOps. Non c'è motivo di esitare o chiedersi se automatizzare. Come affermato in precedenza, i casi comuni facilmente identificabili per l'automazione sono attività ripetitive in natura.
Di seguito enumeriamo le cose che sono assiomatiche dal punto di vista del DBA.
-
Provisioning dei tuoi server (ad esempio, avviare istanze VM come l'utilizzo di vagrant, avviare docker o avviare Kubernetes piattaforma) e configurare l'accesso SSH o configurare l'accesso VPN
-
Distribuzione di un nuovo cluster di database
-
Identifica il tipo di provider di database, il tipo di configurazione (primario/standby, replica master-master, sincrona replica)
-
-
Importa il cluster di database esistente
-
Distribuisci/importa database esistenti nel tuo attuale cluster di database
-
Failover o passaggio automatico
-
Ripristino automatico di nodi o cluster
-
Promozione replica/slave o retrocessione di un master
-
Distribuzione di sistemi di bilanciamento del carico (ad es. ProxySQL, HaProxy, pgpool, pgbouncer, MaxScale, Keepalived)
-
Backup e ripristino
-
Configura l'ambiente di monitoraggio del database (ad esempio, implementa il monitoraggio basato su agenti come Prometheus)
-
Abilita le regolazioni di sicurezza
-
Esegui ottimizzazioni e regolazioni automatiche in base al tipo di ambiente
-
Abilita sistemi di avviso ad altre integrazioni di terze parti
-
Genera avvisi o allarmi e notifiche
-
Genera rapporti come grafici
-
Elabora i log delle query (registri lenti) per l'analisi delle query
-
Genera analisi query
-
Archiviazione o pulizia del database
Ci sono ovviamente molti casi che potresti automatizzare, ma questo elenca le attività più comuni e automatizzarle è indiscutibile. Questi sono i tipi di attività che sono di natura ripetitiva e la maggior parte sono soggette a errori, soprattutto quando devono essere eseguite rapidamente a causa di vincoli di tempo.
Quali sono le cose che non dovrebbero essere automatizzate?
Queste aree sono dove i tuoi DBA o SysAdmins svolgono la maggior parte del lavoro. L'automazione non può sostituire le competenze e l'intelligenza del DBA quando si tratta di cose che non possono essere automatizzate.
Rimane inteso che un DBA deve essere esperto, con una profonda conoscenza di: il database che sta utilizzando e i database che verranno distribuiti; i dati oggetto di trattamento e conservazione; e se il modo in cui vengono elaborati è sicuro o se è conforme agli standard di sicurezza aziendali. Anche i DBA rivedono e per lo più sono considerati DevOps, così come l'architetto dell'automazione. Decidono cosa deve essere fatto e cosa non sarà fatto. Le cose comuni che non dovrebbero essere automatizzate sono le seguenti:
-
Impostazione dei backup pianificati. I backup pianificati sono ovviamente automatizzati e devono essere eseguiti di conseguenza, ma le date pianificate o il periodo di tempo richiesto dovrebbero basarsi sulle ore di punta ridotte che il server eseguirà. Ad esempio, non è possibile eseguire un backup se il cluster è occupato durante il giorno. Ci sono anche casi comuni in cui i server sono ancora occupati di notte a seconda del tipo di applicazione che stai servendo e della sua posizione geografica.
-
Il failover automatico non è riuscito a promuovere un nuovo master. Questo è uno dei casi più importanti e deve essere ben compreso. Se disponi di script automatici progettati per il failover, non dovrebbe essere progettato per eseguire forzatamente un failover nel caso in cui si verifichi un errore. Potresti non sapere mai qual è il problema principale e, in caso di errore, potrebbero esserci transazioni che hanno da recuperare prima di ogni altra cosa. Ad esempio, potrebbe essere una transazione finanziaria archiviata sul master fallito e tu volevi promuovere con la forza uno schiavo, ma lo schiavo candidato non era riuscito a replicare l'ultima transazione. In tal caso, potresti ritrovarti con dati danneggiati.
-
Recupero dati. Ovviamente, quando si verifica un danneggiamento dei dati o un cluster non riesce a eseguire il ripristino dal ripristino automatico del nodo/server, potrebbe essere necessario indagare sulla causa principale. Devi documentarlo per la tua RCA (Root Cause Analysis) per evitarlo in futuro. Tuttavia, ci sono casi in cui l'errore è un bug del software del database che stai utilizzando o può essere un danneggiamento della macchina virtuale.
-
Drift o incoerenza dei dati. Questa non è sicuramente una situazione ideale per l'automazione. Non vuoi che il tuo automa generalizzi o stereotipi i tuoi dati a una pratica che applicherebbe questo concetto:"se i dati sono danneggiati, sistemiamoli automaticamente". Non è sicuramente una buona pratica. Ci sono molti casi che devono prima essere compresi e indagati prima di poter decidere. In MySQL, ad esempio, c'è uno strumento Percona chiamato pt-table-checksum, quindi pt-table-sync per il quale entrambi sono correlati tra loro per correggere le incongruenze dei dati. Sicuramente non vorrai automatizzarlo a meno che tu non conosca molto bene i tuoi dati, o i tuoi dati non siano estesi o i dati possano essere rigenerati.
-
Ottimizzazione del kernel e ottimizzazione del database. Naturalmente, questo può essere visto come contraddittorio a quanto abbiamo affermato sopra. Tuttavia, esistono variabili di ottimizzazione automatica note per tipi specifici di ambienti, come memoria, pool di buffer, HugePages o parametri di memoria virtuale. Tuttavia, ci sono sicuramente molti parametri che necessitano di comprensione, indagine, test, benchmarking prima di decidere di applicare le modifiche o meno.
Sicuramente, ci sono molte cose che non dovresti automatizzare che non abbiamo menzionato. Nel mondo dei database, esiste un gran numero di situazioni che dipendono dal tipo di dati e dall'applicazione che stai servendo. Tienilo a mente e sii sensibile alle cose che possono essere automatizzate. In caso contrario, l'automazione può portare alla distruzione.
Strumenti per l'automazione
Qui è dove puoi iniziare con i tuoi script di automazione. La componente più importante dell'automazione è la velocità! Quando si tratta di velocità, non viene misurata dalla velocità con cui uno strumento è in grado di completare le attività, ma da quanto gli sviluppatori o i manutentori degli script o IaC si trovano a proprio agio con lo strumento. Sicuramente, ci sono pro e contro per questi strumenti di automazione disponibili. Ciò che è più importante è determinare le specifiche di questi strumenti di automazione, poiché c'è altro da offrire oltre alla semplice automazione. Più comunemente, forniscono la gestione della configurazione e meccanismi di distribuzione.
L'automazione è tutta una questione di velocità, ovvero quanto è veloce rispetto all'utilizzo di un approccio tradizionale o all'utilizzo dei propri script di lingua preferiti. Naturalmente, l'uso dei propri script può essere perfetto, ma se la tua organizzazione o azienda è per il progresso tecnologico, l'utilizzo di strumenti di terze parti come Ansible, Puppet, Chef, SaltStack o Terraform è più l'ideale. Perché è più ideale? Questi strumenti di terze parti sono progettati per eseguire attività lunghe e lunghe da eseguire e possono essere eseguiti con poche righe di codice.
Ad esempio, Terraform è noto per i suoi vantaggi di portabilità. Immagina, con Terraform, di avere uno strumento e un linguaggio per descrivere l'infrastruttura per Google Cloud, AWS, OpenStack e QUALSIASI altro cloud. Se passi a un altro provider, non è necessario modificare o ripetere gli script. Ti consente anche di avere una distribuzione full-stack e ciò include la gestione dei tuoi container Kubernetes. Immagina che, da uno strumento, puoi fare molte cose.
Quando avvii l'automazione del database, non iniziare da zero perché l'obiettivo dell'automazione è la velocità! Anche in questo caso, la velocità non viene misurata qui in quanto veloce è finire il lavoro, ma quanto è veloce rispetto a un approccio tradizionale o alle attività manuali. Ovviamente, la velocità con cui è in grado di completare il lavoro dipende, ad esempio, parte dei tuoi script potrebbe causare lunghi ritardi a causa di una serie di dati elaborati e di lunghe esecuzioni di lavori.
Scegli sempre in base alle tue esigenze
Quando scegli gli strumenti, non fare affidamento sull'hype o su ciò che è il più popolare di cui hai sentito parlare. Sebbene gli strumenti tradizionali che sono stati menzionati in precedenza siano in gran parte abbracciati dalla comunità, introducono anche complessità. Ad esempio, quando usi Ansible, devi avere familiarità con YAML, mentre con Puppet o Chef devi avere familiarità con Ruby e il suo linguaggio specifico del dominio sottostante.
Sfrutta gli strumenti aziendali disponibili
Ci sono molti promettenti strumenti di automazione del database con cui iniziare. Se ritieni che sia scomodo e dispendioso in termini di tempo assumere DBA, SysAdmins o DevOps per estendere il tuo team, sono disponibili strumenti che offrono aiuto quando si tratta di gestione del database, gestione del backup e osservabilità.
Severalnines ClusterControl per l'automazione di database
ClusterControl offre molte attività automatizzate che eliminano la necessità di approcci manuali. ClusterControl è progettato per semplificare le operazioni di database per organizzazioni, aziende, DBA, SysAdmins, DevOps e persino sviluppatori. Il suo obiettivo è automatizzare attività di lunga durata e ripetitive. Il grande vantaggio di ClusterControl è che si tratta di uno strumento di gestione del database maturo e dispone di funzionalità estese che sono molto potenti per gestire i server di database. Applica inoltre le migliori pratiche standard del settore più aggiornate per la gestione dei database. Ascoltiamo le richieste dei nostri clienti, quindi implementiamo le capacità per soddisfarle.
Alcune delle funzionalità di automazione ClusterControl più ricche di funzionalità che puoi sfruttare sono:
-
Distribuzione dei server di database. Scegli il provider, specifica la versione corretta, determina quale tipo di cluster, specifica il nome host/IP del server come nome utente, password, ecc.
-
Importazione di server esistenti in ClusterControl
-
Distribuzione nel cloud
-
Monitoraggio e reportistica della salute del database
-
Avvisi e notifiche
-
Backup e ripristino
-
Verifica backup
-
Failover automatico, passaggio
-
Configurazione ad alta disponibilità
-
Promuove uno slave o retrocedi un master
-
Aggiungi una replica nuova/esistente al tuo cluster
-
Estendi un altro cluster come slave di un altro cluster (perfetto per la configurazione geografica per il tuo ripristino di emergenza)
-
Recupero di nodi e cluster
-
Integrazione LDAP
-
Notifiche di avviso di terze parti
-
Distribuzione di un ampio elenco di bilanciatori di carico (pgbouncer, ProxySQL, MaxScale, HAProxy, Keepalived, garbd )
-
Distribuzione del monitoraggio basato su agenti utilizzando gli esportatori Prometheus
-
Analisi delle query
-
Adeguamenti alla sicurezza
-
Ottimizzazione automatica per kernel del sistema operativo e parametri del database
Oltre a tutti questi, ClusterControl dispone anche di advisor integrati che consentono ai DBA o ai DevOps di creare i propri script e integrarsi in ClusterControl Performance Advisors.
Riepilogo
L'automazione del database aiuta a velocizzare le attività complesse ma ripetitive. Aiuta i DBA a portare avanti rapidamente diversi compiti e migliorare le proprie competenze a seconda dell'ambito del lavoro coinvolto. L'automazione del database consente ai DBA di essere più innovativi e allo stesso tempo di gestire comodamente il database. L'automazione del database non sostituisce il ruolo del DBA. Ci sarà sempre bisogno di persone esperte e intelligenti per gestire i tuoi database, specialmente quando si verifica un disastro. Fai sempre affidamento sugli strumenti consigliati dai tuoi DBA, affidandoti allo stesso tempo alle loro competenze per gestire la salute e la vita dei tuoi database.