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

Zero tempi di inattività Aggiornamenti semplificati con ClusterControl

"Mantieni aggiornato il tuo database all'ultima versione - è per la tua sicurezza" è qualcosa che potresti sentire spesso come un valido consiglio e una migliore pratica quando si tratta di gestione del database. D'altra parte, l'aggiornamento del database può richiedere molto tempo. Anche un aggiornamento di versione minore richiede di testare accuratamente l'aggiornamento in un ambiente di gestione temporanea prima di aggiornare la configurazione di produzione. Allora qual è il problema? Se sei solo in ritardo rispetto a una versione minore, non dovrebbe importare, giusto? Beh, potrebbe non farlo... finché non lo fa. E sei davvero pronto a correre questo tipo di rischio?

All'inizio di quest'anno è stata identificata una nuova vulnerabilità potenzialmente pericolosa nel cluster Galera (CVE-2021-27928). A prima vista, vediamo che la gravità è stata contrassegnata come alta e quando iniziamo a scavare ulteriormente nel problema, sembra davvero grave. Sembra che un utente SUPER possa eseguire qualsiasi codice arbitrario modificando le variabili wsrep_provider e wsrep_notify_cmd in fase di esecuzione. Consente all'utente di caricare la libreria .so e puntare verso uno script che verrà eseguito dal server. Come puoi immaginare, questa non è una buona situazione. Certo, devi avere accesso all'utente SUPER e dovresti avere qualcosa disponibile da eseguire sul nodo del database, ma il fatto che Galera possa essere configurato per eseguire codice arbitrario come utente "mysql" è già abbastanza grave per il suo proprio.

Come al solito, in casi come questi, sono state create le correzioni e sono state inviate nuove versioni del software, non interessate dalla vulnerabilità. Questo particolare problema è stato risolto in MariaDB 10.5.9, 10.4.18, 10.3.28 e 10.2.37, nonché in Percona XtraDB Cluster 5.6.51-28.46, Percona XtraDB Cluster 5.7.33-31.49 e Percona XtraDB Cluster 8.0.22-13.1. Tutto sembra essere tornato alla normalità. Giusto?

Sbagliato. Ci sono innumerevoli sistemi in esecuzione in produzione che non sono stati ancora aggiornati alla nuova versione inalterata. Il team di supporto di Multiplenines è in contatto con molti ambienti di database in natura e lavoriamo costantemente con potenziali clienti per aiutarli a migrare verso un ambiente gestito da ClusterControl. Vediamo tutti i tipi di MySQL (e non solo MySQL) in esecuzione in versioni obsolete, a volte anche versioni che hanno raggiunto la fine del loro ciclo di vita e non ricevono più aggiornamenti di sicurezza. Non dovrebbe essere così, soprattutto se sei un utente ClusterControl.

ClusterControl viene fornito con una serie di funzionalità che ti aiuteranno a rimanere aggiornato con tutte le correzioni di sicurezza. Diamo un'occhiata:

In primo luogo, ClusterControl viene fornito con Report operativi, uno dei quali è il Package Upgrade Report:

Come tutti i report operativi di ClusterControl, il Package Upgrade Report può essere pianificato per essere eseguito regolarmente e quindi consegnato via e-mail. Conterrà informazioni sulle versioni del pacchetto installate sui nodi e se ci sono aggiornamenti da eseguire:

Il rapporto sull'aggiornamento dei pacchetti presenta un elenco di pacchetti che dovrebbero essere aggiornati per tutti database, sistemi di bilanciamento del carico, correzioni di sicurezza e qualsiasi altro pacchetto installato sul nodo. Per tutti i pacchetti di sistema, la soluzione è aggiornarli utilizzando metodi standard (apt, yum). Quando si tratta di database e loadbalancer, ClusterControl è dotato di funzionalità che consentono di eseguire l'aggiornamento della versione secondaria direttamente dall'interfaccia utente.

Prima di andare lì, supponiamo che il database debba essere aggiornato. Non si desidera semplicemente procedere ed eseguire l'aggiornamento alla cieca:potrebbe potenzialmente causare problemi all'applicazione. Non dovrebbe - le versioni minori non interrompono la compatibilità con le versioni precedenti (tranne quando usi MySQL 8.0 - quindi sì, potresti aspettarti qualsiasi cosa passando da 8.0.x a 8.0.x+1); tuttavia, c'è sempre qualche rischio. La prima cosa da fare è testare l'aggiornamento in un ambiente separato.

Abbiamo un semplice cluster MariaDB Galera con ProxySQL e Keepalived:

Vorremmo creare un cluster di test in modo da poter testare l'aggiornamento processi. Con ClusterControl, è facile come usare il processo Crea cluster di replica:

Possiamo ottenere i dati aggiornati dal cluster esistente oppure possiamo utilizzare i dati da un backup.

Dobbiamo anche scegliere un nodo sorgente nel cluster di produzione:

Quindi dobbiamo eseguire una normale procedura guidata di distribuzione, scegliere la versione e fornitore del database, definizione della password di root e così via. Concludiamo passando i nodi su cui verrà installato il cluster.

Di conseguenza, vedrai un nuovo cluster nell'elenco con un chiaro segno che si sta replicando fuori dal cluster di produzione. Una cosa degna di nota, nella configurazione predefinita, ClusterControl utilizzerà le ultime versioni dei pacchetti per creare il cluster di replica. Se vuoi ricontrollare solo le query, questo è sufficiente. Se si desidera eseguire l'intero processo di aggiornamento, è necessario definire le versioni precedenti dei pacchetti MySQL per installare una versione precedente (quindi sbloccarle e testare l'aggiornamento).

In un modo o nell'altro, dopo aver superato i test, alla fine vorrai eseguire l'aggiornamento. ClusterControl può aiutarti a raggiungere questo obiettivo:

In Gestione -> Aggiornamenti, troverai un'interfaccia utente per eseguire l'aggiornamento .

Puoi usare "Cerca nuovi pacchetti" per aggiornare il database di Pacchetti. Possiamo anche scegliere quali nodi vogliamo aggiornare e quali servizi: 

Conferma semplicemente e il gioco è fatto - ClusterControl eseguirà l'aggiornamento e ti fornirà il ultima versione dei pacchetti.

Come puoi vedere, ClusterControl rende l'aggiornamento dei database facile e diretto. L'unico passaggio che devi gestire manualmente è il test corretto. Altrimenti, tutto il resto può essere eseguito per te da ClusterControl. Interessato a saperne di più su come ClusterControl può aiutarti a gestire efficacemente il tuo database? Provalo gratuitamente per 30 giorni.