MariaDB
 sql >> Database >  >> RDS >> MariaDB

Come gestire MariaDB 10.3 con ClusterControl

MariaDB Server non è più un'imitazione diretta di MySQL. È diventato un fork maturo, che implementa nuove funzionalità simili a quelle offerte dai sistemi di database proprietari a monte. MariaDB 10.3 estende notevolmente l'elenco delle funzionalità aziendali e con il nuovo SQL_MODE=Oracle diventa una scelta interessante per le aziende che desiderano migrare i propri database Oracle in un database open source. Tuttavia, la gestione operativa è un'area in cui c'è ancora qualcosa da recuperare e MariaDB richiede che tu crei i tuoi script.

Forse una buona occasione per approfondire un sistema di automazione?

Le procedure automatizzate sono accurate e coerenti. Possono darti la necessaria ripetibilità in modo da ridurre al minimo il rischio di modifiche ai sistemi di produzione. Tuttavia, poiché i moderni database open source si sviluppano così velocemente, è più difficile mantenere i tuoi sistemi di gestione alla pari con tutte le nuove funzionalità.

Il passo successivo naturale è cercare piattaforme di automazione. Esistono molte piattaforme che è possibile utilizzare per distribuire i sistemi. Puppet, Chef e Ansible sono probabilmente i migliori esempi di questa nuova tendenza. Queste piattaforme sono adatte per la rapida implementazione di vari servizi software. Sono perfetti per le implementazioni, ma richiedono comunque la manutenzione del codice, la copertura delle modifiche alle funzionalità e, di solito, coprono solo un aspetto del tuo lavoro. Cose come backup, prestazioni e manutenzione richiedono ancora strumenti o script esterni.

Dall'altro lato, abbiamo piattaforme cloud, con interfacce raffinate e una varietà di servizi aggiuntivi per un'esperienza completamente gestita. Tuttavia, potrebbe non essere fattibile; ad esempio, ambienti ibridi in cui potresti utilizzare il cloud, ma con ancora un'impronta in loco significativa.

Allora, che ne dici di un livello di gestione dedicato per i tuoi database MariaDB?

ClusterControl è stato progettato per automatizzare la distribuzione e la gestione di MariaDB e di altri database open source. Al centro di ClusterControl c'è la funzionalità che ti consente di automatizzare le attività del database che devi eseguire regolarmente, come la distribuzione di nuove istanze di database e cluster, la gestione dei backup, l'elevata disponibilità e il failover, le modifiche alla topologia, gli aggiornamenti, il ridimensionamento di nuovi nodi e altro ancora.

Installazione ClusterControl

Per iniziare con ClusterControl, è necessaria una macchina virtuale o un host dedicato. La macchina virtuale e i requisiti di sistema supportati sono descritti qui. Come minimo puoi partire da una minuscola VM 2 GB di RAM, 2 core di CPU e 20 GB di spazio di archiviazione, sia in locale che nel cloud.

Il metodo di installazione principale consiste nel scaricare una procedura guidata di installazione che ti guida attraverso tutti i passaggi (configurazione del sistema operativo, download e installazione del pacchetto, creazione di metadati e altro).

Per gli ambienti senza accesso a Internet, puoi utilizzare il processo di installazione offline.

ClusterControl è agentless, quindi non è necessario installare software aggiuntivo. Richiede solo l'accesso SSH agli host del database. Supporta anche il monitoraggio basato su agenti per dati di monitoraggio a risoluzione più elevata.

Per configurare SSH senza password su tutti i nodi di destinazione (ClusterControl e tutti gli host di database), eseguire i seguenti comandi sul server ClusterControl:

$ ssh-keygen -t rsa # press enter on all prompts
$ ssh-copy-id -i ~/.ssh/id_rsa [ClusterControl IP address]
$ ssh-copy-id -i ~/.ssh/id_rsa [Database nodes IP address] # repeat this to all target database nodes

Uno dei modi più convenienti per provare il controllo del cluster potrebbe essere l'opzione per eseguirlo in un contenitore mobile.

docker run -d --name clustercontrol \
--network db-cluster \
--ip 192.168.10.10 \
-h clustercontrol \
-p 5000:80 \
-p 5001:443 \
-v /storage/clustercontrol/cmon.d:/etc/cmon.d \
-v /storage/clustercontrol/datadir:/var/lib/mysql \
-v /storage/clustercontrol/sshkey:/root/.ssh \
-v /storage/clustercontrol/cmonlib:/var/lib/cmon \
-v /storage/clustercontrol/backups:/root/backups \
severalnines/clustercontrol

Dopo la corretta distribuzione, dovresti essere in grado di accedere all'interfaccia utente Web di ClusterControl all'{indirizzo IP dell'host}:{porta dell'host}, ad esempio:

HTTP: http://192.168.10.100:5000/clustercontrol
HTTPS: https://192.168.10.100:5001/clustercontrol

Installazione del cluster MariaDB

Una volta entrati nell'interfaccia ClusterControl, la prima cosa da fare è distribuire un nuovo database o importarne uno esistente. La versione 1.7.2 ha introdotto il supporto per la versione 10.3 (insieme a 10.0,10.1,10.2). Nella versione 1.7.3 rilasciata questa settimana, possiamo vedere il miglioramento della distribuzione dell'installazione nel cloud.

ClusterControl:distribuzione/importazione

Al momento della stesura di questo blog, le versioni attuali sono 10.3.16. I pacchi più recenti vengono ritirati per impostazione predefinita. Seleziona l'opzione "Deploy Database Cluster" e segui le istruzioni che appaiono.

Ora è il momento di fornire i dati necessari per la connessione tra ClusterControl e i nodi DB. A questo punto, avresti pulito le VM o le immagini del sistema operativo che usi all'interno della tua organizzazione. Quando scegliamo MariaDB, dobbiamo specificare Utente, Chiave o Password e la porta per la connessione tramite SSH ai nostri server.

ClusterControl:distribuzione cluster di database

Dopo aver impostato le informazioni di accesso SSH, dobbiamo inserire i dati per accedere al nostro database, per MariaDB che sarà il root del superutente. Possiamo anche specificare quale repository utilizzare. È possibile disporre di tre tipi di repository durante la distribuzione di server/cluster di database utilizzando ClusterControl:

  • Usa il repository del fornitore. Esegui il provisioning del software impostando e utilizzando l'archivio software preferito dal fornitore del database. ClusterControl installerà l'ultima versione di ciò che viene fornito dal repository del fornitore del database.
  • Non configurare i repository dei fornitori. Nessun repository verrà impostato da ClusterControl. ClusterControl si baserà sulla configurazione del sistema (i file di repository predefiniti).
  • Creare ed eseguire il mirroring del repository del fornitore di database corrente e quindi distribuire utilizzando il repository con mirroring locale. Ciò consente di "congelare" le versioni correnti dei pacchetti software.

Quando tutto è pronto, premi il pulsante di distribuzione. Il processo di distribuzione si occuperà anche dell'installazione di strumenti aggiuntivi forniti da MariaDB come mariabackup e strumenti di fornitori esterni, diffusi nell'amministrazione di database.

Importa un nuovo cluster

Abbiamo anche la possibilità di gestire una configurazione esistente importandola in ClusterControl. Un tale ambiente può essere creato da ClusterControl o altri metodi (puppet, chef, ansible, docker…). Il processo è semplice e non richiede conoscenze specialistiche.

Innanzitutto, dobbiamo inserire le credenziali di accesso SSH ai nostri server di database esistenti. Quindi inseriamo le credenziali di accesso al nostro database, la directory dei dati del server e la versione. Aggiungiamo i nodi per IP o nome host, allo stesso modo di quando distribuiamo, e premiamo su Importa. Una volta terminata l'attività, siamo pronti per gestire il nostro cluster da ClusterControl. A questo punto, possiamo anche definire le opzioni per il ripristino automatico del nodo o del cluster.

ClusterControl:importa il cluster di database 10.3 esistente

Ridimensionamento di MariaDB, aggiunta di più nodi al cluster di database

Con ClusterControl, l'aggiunta di più server al server è un passaggio facile. Puoi farlo dalla GUI o dalla CLI. Per gli utenti più avanzati, puoi utilizzare ClusterControl Developer Studio e scrivere una condizione di base delle risorse per espandere automaticamente il tuo cluster.

ClusterControl:aggiunta del nodo MariaDB

ClusterControl supporta un'opzione per utilizzare un backup esistente, quindi non è necessario sovraccaricare il nodo principale di produzione con lavoro aggiuntivo.

Protezione di MariaDB

L'installazione predefinita di MariaDB viene fornita con una sicurezza rilassata. Questo è stato migliorato con le versioni recenti, tuttavia i sistemi di livello produttivo richiedono ancora modifiche nella configurazione predefinita my.cnf. Le distribuzioni ClusterControl sono dotate di impostazioni my.cnf non predefinite (diverse per i diversi tipi di cluster).

ClusterControl rimuove l'errore umano e fornisce l'accesso a una suite di funzionalità di sicurezza, per proteggere automaticamente i database da hack e altre minacce.

ClusterControl:Pannello di sicurezza

ClusterControl abilita il supporto SSL per le connessioni MariaDB. L'abilitazione di SSL aggiunge un altro livello di sicurezza per la comunicazione tra le applicazioni (incluso ClusterControl) e il database. I client MariaDB aprono connessioni crittografate ai server di database e verificano l'identità di tali server prima di trasferire qualsiasi informazione sensibile.

ClusterControl eseguirà tutti i passaggi necessari, inclusa la creazione di certificati su tutti i nodi del database. Tali certificati possono essere mantenuti in seguito nella scheda Gestione chiavi.

Con ClusterControl puoi anche abilitare l'auditing. Utilizza il plugin di controllo fornito da MariaDB. Il controllo continuo è un'attività fondamentale per il monitoraggio dell'ambiente del database. Controllando il tuo database, puoi ottenere la responsabilità per le azioni intraprese o per i contenuti consultati. Inoltre, l'audit può includere alcune componenti critiche del sistema, come quelle associate ai dati finanziari per supportare un preciso insieme di normative come SOX o il regolamento GDPR dell'UE. Il processo guidato ti consente di scegliere cosa deve essere controllato e come mantenere i file di registro di controllo.

Monitoraggio e avvisi

Quando si lavora con i sistemi di database, dovresti essere in grado di monitorarli. Ciò ti consentirà di identificare tendenze, pianificare aggiornamenti o miglioramenti o reagire in modo efficace a eventuali problemi o errori che potrebbero sorgere.

ClusterControl:Panoramica

Il nuovo ClusterControl utilizza Prometheus come archivio dati con il linguaggio di query PromQL. L'elenco dei dashboard include dashboard Server General, Server Caches, InnoDB Metrics, Replication Master, Replication Slave, System Overview e Cluster Overview.

ClusterControl:DashBoard

ClusterControl installa gli agenti Prometheus, configura le metriche e mantiene l'accesso alla configurazione degli esportatori di Prometheus tramite la sua GUI, in modo da poter gestire meglio la configurazione dei parametri come i flag di raccolta per gli esportatori (Prometheus).

In qualità di operatore di database, dobbiamo essere informati ogni volta che si verifica qualcosa di critico nel nostro database. I tre metodi principali in ClusterControl per ricevere un avviso includono:

  • notifiche e-mail
  • integrazioni
  • consiglieri
ClusterControl:servizi di integrazione

È possibile impostare le notifiche e-mail a livello di utente. Vai su Impostazioni> Notifiche e-mail. Dove puoi scegliere tra criticità e tipo di avviso da inviare.

Il metodo successivo consiste nell'utilizzare i servizi di integrazione. Questo serve per trasferire la categoria specifica di eventi all'altro servizio come ticket ServiceNow, Slack, PagerDuty, ecc. in modo da poter creare metodi di notifica avanzati e integrazioni all'interno della tua organizzazione.

L'ultimo consiste nel coinvolgere sofisticate analisi delle metriche nella sezione Advisor, dove puoi creare controlli e attivatori intelligenti.

ClusterControl:consulenti

Monitoraggio SQL

Il monitoraggio SQL è diviso in tre sezioni.

  • Ricerche principali - presenta le informazioni sulle query che richiedono una parte significativa di risorse. Monitoraggio query:query principali
  • Esecuzione di query - è un elenco di processi di informazioni combinate da tutti i nodi del cluster di database in un'unica vista. Puoi usarlo per terminare le query che influiscono sulle operazioni del database. Query Monitor:esecuzione di query
  • Query valori anomali - presentare l'elenco delle query con tempo di esecuzione superiore alla media. Monitoraggio query:valori anomali query

Backup e ripristino

Ora che hai il tuo MariaDB attivo e funzionante e hai il monitoraggio in atto, è il momento del passaggio successivo:assicurati di avere un backup dei tuoi dati.

ClusterControl:repository di backup

ClusterControl fornisce un'interfaccia per la gestione del backup di MariaDB con supporto per la pianificazione e report creativi. Ti offre due opzioni per i metodi di backup.

  • Backup logico (testo):mysqldump
  • Backup binari:xtrabackup (versioni inferiori), mariabackup

Una buona strategia di backup è una parte fondamentale di qualsiasi sistema di gestione del database. ClusterControl offre molte opzioni per backup e ripristino/ripristino.

La conservazione del backup di ClusterControl è configurabile; puoi scegliere di conservare il backup per qualsiasi periodo di tempo o di non eliminare mai i backup. La crittografia AES256 viene utilizzata per proteggere i tuoi backup da elementi non autorizzati. Per un rapido ripristino, i backup possono essere ripristinati direttamente in un nuovo cluster:ClusterControl gestisce l'intero processo di ripristino dall'avvio di una nuova configurazione del database al ripristino dei dati, rimuovendo dal processo i passaggi manuali soggetti a errori.

I backup possono essere verificati automaticamente al completamento e quindi caricati sui servizi di archiviazione cloud (AWS, Azure e Google). È possibile definire criteri di conservazione diversi per i backup locali nel data center e per i backup caricati nel cloud.

Ripristino automatico di nodi e cluster

ClusterControl fornisce un supporto avanzato per il rilevamento e la gestione degli errori. Consente inoltre di distribuire diversi proxy per integrarli con lo stack HA, quindi non è necessario modificare la stringa di connessione dell'applicazione o la voce DNS per reindirizzare l'applicazione al nuovo nodo master.

Quando il server master è inattivo, ClusterControl creerà un processo per eseguire il failover automatico. ClusterControl esegue tutto il lavoro in background per eleggere un nuovo master, distribuire server slave di failover e configurare i bilanciamenti del carico.

Il failover automatico di ClusterControl è stato progettato con i seguenti principi:

  • Assicurati che il master sia davvero morto prima di eseguire il failover
  • Failover solo una volta
  • Non eseguire il failover su uno slave incoerente
  • Scrivi solo al maestro
  • Non recuperare automaticamente il master guasto

Con gli algoritmi integrati, il failover può spesso essere eseguito abbastanza rapidamente in modo da poter garantire gli SLA più elevati per il tuo ambiente di database.

ClusterControl:ripristino automatico

Il processo è altamente configurabile. Viene fornito con più parametri che puoi utilizzare per adottare il ripristino in base alle specifiche del tuo ambiente. Tra le diverse opzioni puoi trovare replication_stop_on_error, replication_auto_rebuild_slave, replication_failover_blacklist, replication_failover_whitelist, replication_skip_apply_missing_txs, replication_onfail_failover_script e molti altri.

Il failover è il processo di passaggio a un componente di standby integro, durante un guasto o un evento di manutenzione, al fine di preservare i tempi di attività. Più velocemente può essere fatto, più velocemente potrai essere di nuovo online. Se stai cercando di ridurre al minimo i tempi di inattività e rispettare i tuoi SLA attraverso un approccio automatizzato per TimescaleDB, allora questo blog fa per te.

Bilanciatore del carico MaxScale

Oltre a MariaDB 10.3, ClusterControl aggiunge un'opzione di bilanciamento del carico MaxScale 2.3. MaxScale è un proxy compatibile con SQL che può essere utilizzato per creare ambienti a disponibilità elevata. Viene fornito con numerose funzionalità, tuttavia, l'obiettivo principale è consentire il bilanciamento del carico e l'elevata disponibilità.

ClusterControl:MaxScale

MaxScale può essere utilizzato per tenere traccia dello stato di salute del nodo MariaDB principale e, in caso di errore, eseguire un failover rapido e automatico. Il failover automatizzato è fondamentale per creare una soluzione ad alta disponibilità in grado di riprendersi prontamente dall'errore.

Sessioni del database di bilanciamento del carico

La suddivisione in lettura/scrittura è una funzionalità fondamentale per consentire il ridimensionamento in lettura. È sufficiente che l'applicazione si connetta a MaxScale, che rileva la topologia, determina quale MariaDB funge da master e quali da slave. Instrada il traffico di conseguenza.

Riepilogo

Ci auguriamo che questo blog ti aiuti a familiarizzare con i moduli di amministrazione ClusterControl e MariaDB 10.3. L'opzione migliore è scaricare ClusterControl e testare ciascuno di essi.