Negli ultimi cinque post della serie di blog, abbiamo trattato l'implementazione di clustering/replica (MySQL / Galera, MySQL Replication, MongoDB e PostgreSQL), la gestione e il monitoraggio dei database e dei cluster esistenti, il monitoraggio delle prestazioni e l'integrità, come effettuare la configurazione altamente disponibile tramite HAProxy e MaxScale e nell'ultimo post, come prepararsi ai disastri pianificando i backup.
A partire da ClusterControl 1.2.11, abbiamo apportato importanti miglioramenti al gestore di configurazione del database. La nuova versione consente di modificare i parametri su più host di database contemporaneamente e, se possibile, di modificarne i valori in fase di esecuzione.
Abbiamo presentato il nuovo MySQL Configuration Management in un post del blog Tips &Tricks, ma questo post del blog andrà più in profondità e tratterà la gestione della configurazione all'interno di ClusterControl per MySQL, PostgreSQL e MongoDB.
Gestione Configurazione ClusterControl
L'interfaccia di gestione della configurazione si trova in Gestisci> Configurazioni. Da qui è possibile visualizzare o modificare le configurazioni dei nodi del database e di altri strumenti gestiti da ClusterControl. ClusterControl importerà la configurazione più recente da tutti i nodi e sovrascriverà le copie precedenti. Al momento non sono conservati dati storici.
Se preferisci modificare manualmente i file di configurazione direttamente sui nodi, puoi reimportare la configurazione modificata premendo il pulsante Importa.
E ultimo ma non meno importante:puoi creare o modificare modelli di configurazione. Questi modelli vengono utilizzati ogni volta che distribuisci nuovi nodi nel tuo cluster. Ovviamente tutte le modifiche apportate ai modelli non verranno applicate retroattivamente ai nodi già distribuiti che sono stati creati utilizzando questi modelli.
Gestione della configurazione di MySQL
Come accennato in precedenza, la gestione della configurazione di MySQL ha ricevuto una revisione completa in ClusterControl 1.2.11. L'interfaccia è ora più intuitiva. Quando si modificano i parametri, ClusterControl verifica se il parametro esiste effettivamente. Ciò garantisce che la tua configurazione non neghi l'avvio di MySQL a causa di parametri che non esistono.
Da Gestisci -> Configurazioni, troverai una panoramica di tutti i file di configurazione utilizzati all'interno del cluster selezionato, inclusi i nodi di bilanciamento del carico.
Utilizziamo una struttura ad albero per visualizzare facilmente gli host e i rispettivi file di configurazione. Nella parte inferiore dell'albero troverai i modelli di configurazione disponibili per questo cluster.
Modifica dei parametri
Supponiamo di dover modificare un semplice parametro come il numero massimo di connessioni consentite (max_connections), possiamo semplicemente modificare questo parametro in fase di esecuzione.
Per prima cosa seleziona gli host a cui applicare questa modifica.
Quindi seleziona la sezione che desideri modificare. Nella maggior parte dei casi, vorrai cambiare la sezione MYSQLD. Se desideri modificare il set di caratteri predefinito per MySQL, dovrai cambiarlo in entrambe le sezioni MYSQLD e client.
Se necessario puoi anche creare una nuova sezione semplicemente digitando il nome della nuova sezione. Questo creerà una nuova sezione in my.cnf.
Dopo aver modificato un parametro e impostato il suo nuovo valore premendo "Procedi", ClusterControl verificherà se il parametro esiste per questa versione di MySQL. Questo per evitare che parametri inesistenti blocchino l'inizializzazione di MySQL al prossimo riavvio.
Quando premiamo "procedi" per la modifica di max_connections, riceveremo una conferma che è stato applicato alla configurazione e impostato a runtime utilizzando SET GLOBAL. Non è richiesto un riavvio poiché max_connections è un parametro che possiamo modificare in fase di esecuzione.
Supponiamo ora di voler modificare la dimensione del bufferpool, ciò richiederebbe un riavvio di MySQL prima che abbia effetto:
E come previsto, il valore è stato modificato nel file di configurazione, ma è necessario un riavvio. Puoi farlo accedendo manualmente all'host e riavviando il processo MySQL. Un altro modo per farlo da ClusterControl consiste nell'usare il dashboard Nodes.
Riavvio di nodi in un cluster Galera
Puoi eseguire un riavvio per nodo selezionando "Riavvia nodo" e premendo il pulsante "Procedi".
Quando selezioni "Inizio iniziale" su un nodo Galera, ClusterControl svuoterà la directory dei dati MySQL e forzerà una copia completa in questo modo. Questo, ovviamente, non è necessario per una modifica della configurazione. Assicurati di lasciare la casella di controllo "iniziale" deselezionata nella finestra di dialogo di conferma. Ciò arresterà e avvierà MySQL sull'host, ma a seconda del carico di lavoro e delle dimensioni del pool di buffer, ciò potrebbe richiedere del tempo poiché MySQL inizierà a svuotare le pagine sporche dal bufferpool InnoDB sul disco. Queste sono le pagine che sono state modificate in memoria ma non su disco.
Riavvio di nodi in topologie MySQL Master-Slave
Per le topologie master-slave MySQL non puoi semplicemente riavviare nodo per nodo. A meno che i tempi di inattività del master non siano accettabili, dovrai prima applicare le modifiche alla configurazione agli slave e poi promuovere uno slave per diventare il nuovo master.
Puoi esaminare gli slave uno per uno ed eseguire un "Restart Node" su di essi.
Dopo aver applicato le modifiche a tutti gli slave, promuovi uno slave per diventare il nuovo master:
Dopo che lo slave è diventato il nuovo master, puoi spegnere e riavviare il vecchio nodo master per applicare la modifica.
Importazione delle configurazioni
Ora che abbiamo applicato la modifica direttamente al database, oltre al file di configurazione, ci vorrà fino alla successiva importazione della configurazione per vedere la modifica riflessa nella configurazione archiviata in ClusterControl. Se sei meno paziente, puoi programmare un'importazione immediata della configurazione premendo il pulsante “Importa”.
Gestione della configurazione di PostgreSQL
Per PostgreSQL, la gestione della configurazione funziona in modo leggermente diverso dalla gestione della configurazione di MySQL. In generale, qui hai le stesse funzionalità:modifica la configurazione, importa le configurazioni per tutti i nodi e definisci/modifica i modelli.
La differenza qui è che puoi modificare immediatamente l'intero file di configurazione e riscrivere questa configurazione nel nodo del database.
Se le modifiche apportate richiedono un riavvio, verrà visualizzato un pulsante "Riavvia" che consente di riavviare il nodo per applicare le modifiche.
Gestione della configurazione di MongoDB
La gestione della configurazione di MongoDB funziona in modo simile alla gestione della configurazione di MySQL:puoi modificare la configurazione, importare le configurazioni per tutti i nodi, modificare i parametri e alterare i modelli.
La modifica della configurazione è piuttosto semplice, utilizzando la finestra di dialogo Modifica parametro (come descritto nella sezione "Modifica parametri":
Una volta modificata, è possibile visualizzare l'azione di post-modifica proposta da ClusterControl nella finestra di dialogo "Config Change Log":
Puoi quindi procedere al riavvio dei rispettivi nodi MongoDB, un nodo alla volta, per caricare le modifiche.
Pensieri finali
In questo post del blog abbiamo appreso come gestire, modificare e modellare le tue configurazioni in ClusterControl. La modifica dei modelli può farti risparmiare molto tempo quando hai distribuito un solo nodo nella tua topologia. Poiché il modello verrà utilizzato per i nuovi nodi, ciò ti eviterà di modificare tutte le configurazioni in seguito. Tuttavia, per i nodi basati su MySQL e MongoDB, la modifica della configurazione su tutti i nodi è diventata banale a causa della nuova interfaccia di gestione della configurazione.
Come promemoria, abbiamo recentemente trattato nella stessa serie di distribuzione di clustering/replica (MySQL / Galera, MySQL Replication, MongoDB e PostgreSQL), gestione e monitoraggio dei database e dei cluster esistenti, monitoraggio delle prestazioni e integrità, come rendere altamente la tua configurazione disponibile tramite HAProxy e MaxScale e nell'ultimo post, come prepararsi ai disastri pianificando i backup.