Mysql
 sql >> Database >  >> RDS >> Mysql

Monitoraggio e gestione delle operazioni di MySQL 8.0 con ClusterControl

Gli utenti di database open source spesso devono utilizzare una combinazione di strumenti e script interni per gestire i propri ambienti di database di produzione. Tuttavia, anche se nella soluzione sono presenti script interni, è difficile mantenerli e tenere il passo con le nuove funzionalità del database, i requisiti di sicurezza o gli aggiornamenti. Con le nuove versioni principali di un database, incluso MySQL 8.0, questo compito può diventare ancora più difficile.

Al centro di ClusterControl c'è la sua funzionalità di automazione che ti consente di automatizzare le attività del database che devi eseguire regolarmente, come la distribuzione di nuovi database, l'aggiunta e la scalabilità di nuovi nodi, la gestione dei backup, l'elevata disponibilità e il failover, le modifiche alla topologia, gli aggiornamenti e altro ancora. Le procedure automatizzate sono accurate, coerenti e ripetibili in modo da ridurre al minimo il rischio di modifiche negli ambienti di produzione.

Inoltre, con ClusterControl, gli utenti MySQL non sono più soggetti al vendor lock-in; qualcosa che è stato messo in discussione da molti di recente. Puoi distribuire e importare gratuitamente una varietà di versioni e fornitori di MySQL da un'unica console.

In questo articolo, ti mostreremo come distribuire MySQL 8.0 con una configurazione testata in battaglia e gestirla in modo automatizzato. Troverai qui come fare:

  • Installazione ClusterControl
  • Processo di distribuzione MySQL
    • Distribuisci un nuovo cluster
    • Importa il cluster esistente
  • Ridimensionamento di MySQL
  • Protezione di MySQL
  • Monitoraggio e trend
  • Backup e ripristino
  • Ripristino automatico di nodi e cluster (failover automatico)

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. La VM di base può iniziare da 2 GB, 2 core e spazio su disco 20 GB di spazio di archiviazione, in locale o nel cloud.

L'installazione è ben descritta nella documentazione, ma in pratica scarichi uno script di installazione che ti guida attraverso i passaggi. Lo script della procedura guidata configura il database interno, installa i pacchetti necessari, i repository e altre modifiche necessarie. Per gli ambienti senza accesso a Internet, puoi utilizzare il processo di installazione offline.

ClusterControl richiede l'accesso SSH agli host del database e il monitoraggio può essere basato su agente o senza agente. La gestione è senza agenti.

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

Distribuzione e ridimensionamento

Distribuisci MySQL 8.0

Una volta entrati nell'interfaccia ClusterControl, la prima cosa da fare è distribuire un nuovo database o importarne uno esistente. La nuova versione 1.7.2 introduce il supporto per la versione 8.0 di Oracle Community Edition e Percona Server. Al momento della stesura di questo blog, le versioni attuali sono Oracle MySQL Server 8.0.15 e Percona Server for MySQL 8.0-15. Seleziona l'opzione "Distribuisci cluster di database ” e segui le istruzioni visualizzate.

ClusterControl:distribuzione cluster di database

Quando scegliamo MySQL, dobbiamo specificare User, Key o Password e la porta per la connessione tramite SSH ai nostri server. Abbiamo anche bisogno di un nome per il nostro nuovo cluster e se vogliamo che ClusterControl installi per noi il software e le configurazioni corrispondenti.

Dopo aver impostato le informazioni di accesso SSH, dobbiamo inserire i dati per accedere al nostro database. Possiamo anche specificare quale repository utilizzare. La configurazione del repository è un aspetto importante per i server di database ei cluster. È possibile disporre di tre tipi di repository durante la distribuzione di server/cluster di database utilizzando ClusterControl:

  • Utilizza il repository del fornitore
    Esegui il provisioning del software impostando e utilizzando il repository software preferito dal fornitore del database. ClusterControl installerà l'ultima versione di ciò che viene fornito dal repository del fornitore del database.
  • Non impostare repository dei fornitori
    Esegui il provisioning del software utilizzando il repository software preesistente già impostato sui nodi. L'utente deve configurare manualmente il repository del software su ciascun nodo del database e ClusterControl utilizzerà questo repository per la distribuzione. Questo è utile se i nodi del database sono in esecuzione senza connessione a Internet.
  • Usa repository con mirroring (Crea nuovo repository)
    Crea ed esegui il mirroring del repository del fornitore di database corrente, quindi distribuiscilo utilizzando il repository con mirroring locale. Ciò consente di "congelare" le versioni correnti dei pacchetti software.

Nel passaggio successivo, dobbiamo aggiungere i nostri server al cluster che creeremo. Quando aggiungiamo i nostri server, possiamo inserire IP o nome host, quindi scegliere l'interfaccia di rete. Per quest'ultimo, dobbiamo avere un server DNS o aver aggiunto i nostri server MySQL al file di risoluzione locale (/etc/hosts) del nostro ClusterControl, in modo che possa risolvere il nome corrispondente che vuoi aggiungere.

Sullo schermo possiamo vedere un esempio di implementazione con un server master e due slave. L'elenco dei server è dinamico e consente di creare topologie sofisticate che possono essere estese dopo l'installazione iniziale.

ClusterControl:Definisci topologia

Quando tutto è pronto, premi il pulsante di distribuzione. È possibile monitorare lo stato della creazione della nostra nuova configurazione di replica dal monitor attività ClusterControl. Il processo di distribuzione si occuperà anche dell'installazione di popolari strumenti MySQL come percona toolkit e percona-xtradb-backup.

ClusterControl:distribuzione dei dettagli del cluster

Al termine dell'attività, possiamo vedere il nostro cluster nella schermata principale di ClusterControl e nella vista della topologia. Nota che abbiamo anche aggiunto un sistema di bilanciamento del carico (ProxySQL) davanti alle istanze del database.

ClusterControl:Topologia

Come possiamo vedere nell'immagine, una volta creato il nostro cluster, possiamo eseguire diverse attività su di esso, direttamente dalla sezione della topologia.

ClusterControl:gestione della topologia

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.

ClusterControl:importa cluster esistente

Innanzitutto, dobbiamo inserire le credenziali di accesso SSH ai nostri server. 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.

Ridimensionamento di MySQL

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 della risorsa per espandere automaticamente il tuo cluster.

Quando aggiungi un nuovo nodo alla configurazione, hai la possibilità di utilizzare il backup esistente, quindi non è necessario sovraccaricare il nodo principale di produzione con lavoro aggiuntivo.

ClusterControl Scaling MySQL

Con il supporto integrato per i sistemi di bilanciamento del carico (ProxySQL, Maxscale, HAProxy), puoi aggiungere e rimuovere nodi MySQL in modo dinamico. Se desideri saperne di più su come gestire al meglio la replicazione MySQL e il clustering, leggi il whitepaper Replica MySQL per replica HA.

Protezione di MySQL

MySQL viene fornito con pochissima sicurezza pronta all'uso. Questo è stato migliorato con la versione recente, tuttavia i sistemi di livello di produzione richiedono ancora tweeks nella configurazione my.cnf predefinita.

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 abilita il supporto SSL per le connessioni MySQL. L'abilitazione di SSL aggiunge un altro livello di sicurezza per la comunicazione tra le applicazioni (incluso ClusterControl) e il database. I client MySQL 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.

ClusterControl:chiavi SSL di gestione

Le installazioni del server Percona vengono fornite con un supporto aggiuntivo per un plug-in di controllo. 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.

ClusterControl:Abilita registro di controllo per Percona Server 8.0

Monitoraggio

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.

Il nuovo ClusterControl 1.7.2 viene fornito con un monitoraggio aggiornato ad alta risoluzione per MySQL 8.0. Utilizza Prometheus come archivio dati con il linguaggio di query PromQL. L'elenco dei dashboard include MySQL Server General, MySQL Server Caches, MySQL InnoDB Metrics, MySQL Replication Master, MySQL Replication Slave, Panoramica del sistema e Panoramica del cluster 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). Abbiamo descritto in dettaglio cosa è possibile monitorare di recente nell'articolo Come monitorare MySQL con Prometheus e ClusterControl.

ClusterControl:Dashboard

Avvisi

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

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

ClusterControl:notifica

Il metodo successivo consiste nell'utilizzare i servizi di integrazione. Questo serve per passare 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.

ClusterControl:integrazione

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

ClusterControl:consulenti automatici

Backup e ripristino

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

ClusterControl:crea backup

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

  • Logico:mysqldump
  • Binario:xtrabackup/mariabackup
ClusterControl:crea opzioni di backup

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

ClusterControl:pianificazione backup e repository di backup

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 datacenter e per i backup caricati nel cloud.

Recupero 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.

ClusterControl:ripristino automatico del nodo

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.

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.