Ottimizzare le prestazioni di MySQL e MariaDB con MySQLTuner

Non appena abbiamo fatto il setup di un nuovo server, è necessario spesso effettuare un controllo sulle prestazioni del server MySQL, MariaDB o Percona installato sulla macchina. Ottimizzare la scrittura delle tabelle, la cache e tutti i piccoli errori di configurazione può portare anche ad un significativo incremento di prestazioni. Ricordiamo, inoltre, che le configurazioni di default possono non essere sicure!

Per effettuare un controllo sistematico, possiamo usare il MySQLTuner, uno script open source scritto in Perl che effettua una lunga lista di controlli  (circa 300) sul database installato sul nostro server, tra i quali:

  • Informazioni di sicurezza e accesso
  • Confronto della versione installata sul server con un database di bollettini di sicurezza per capire se è vulnerabile
  • Controlla cache, indici e connessioni
  • Controlla slow queries e performance di join e altre operazioni comuni

Questo script NON modifica alcuna configurazione. Si tratta di uno script di sola lettura che analizza e vi suggerisce le impostazioni più veloce e sicure. Sta a noi, eventualmente, modificare la configurazione del server e beneficiare dei consigli.

Come detto, è uno script in perl, pertanto è necessario scaricare un singolo file più due file aggiuntivi che contengono rispettivamente un dizionario delle password non sicure e una lista di vulnerabilità note.

Eseguiamo questi comandi nella shell:

A questo punto eseguiamo lo script:

Otterremo a schermo una lunga lista di valutazioni segnate da un [OK], se la configurazione è corretta, e [!!] dove lo script ci suggerisce che ci sarebbe bisogno di un qualche aggiustamento.

Ecco ad esempio una serie di raccomandazioni che MySQLTuner ci indica:

Modifichiamo la configurazione di MySQL o MariaDB

Proviamo ad applicare qualche consiglio che lo script ci indica, nello specifico, proveremo a modificare questi valori:

  • wait_timeout sotto 28000
  • query_cache_size maggiore o uguale a 8M
  • innodb_file_per_table settato a ON

Per prima cosa, troviamo il file my.cnf, che si troverà in posizione diversa a seconda del sistema. Generalmente, si trova in /etc/mysql/my.cnf oppure /etc/my.cnf. Apriamo il file con un qualsiasi editor, nel nostro caso vim

Modifichiamo le variabili come suggerito e, se non esistono, aggiungiamole al file.

Una volta salvato il file my.cnf, riavviamo MySQL o MariaDB per applicare la nuova configurazione:

Per verificare che i nuovi setting siano applicati possiamo rilanciare MySQLTuner: non dovremmo trovare i parametri appena modificati tra i suggerimenti.