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

Tutorial MySQL – Gestione dei log del server MySQL:ruota, comprimi, conserva ed elimina

MySQL Server genera diversi log che possono aiutarti a monitorare le attività del server. Tuttavia, una volta che questi registri sono abilitati, possono aumentare di dimensioni e iniziare a occupare troppo spazio su disco. Questo è il motivo per cui è importante disporre di un modo automatizzato per archiviare e preservare i file di registro MySQL per una certa durata, oltre a eliminare quelli vecchi. In questo post del blog, descriviamo alcune best practice per impostare e gestire i log degli errori MySQL, i log generali ei log delle query lente per le tue implementazioni MySQL.

Configurazione della registrazione del server MySQL

Diamo un'occhiata a come impostare i seguenti 3 tipi di log:

Registro errori

Registra tutti i problemi riscontrati durante l'avvio, l'esecuzione o l'arresto di mysqld. Questo registro può essere abilitato avendo la seguente opzione nel file /etc/my.cnf:

  • log_error=/var/log/mysql/mysqld.log

Registro delle query generali

Registra le connessioni client stabilite e le dichiarazioni ricevute dai client. Questo registro può essere abilitato avendo la seguente opzione nel file /etc/my.cnf:

  • general_log=ON
  • general_log_file=/var/log/mysql/general.log

Registro query lento

Registra le query che hanno richiesto più di long_query_time secondi per essere eseguite. Questo registro può essere abilitato dalla seguente opzione nel file /etc/my.cnf:

  • slow_query_log=ON
  • slow_query_log_file=/var/log/mysql/mysql-slowquery.log

Impostazione dei criteri per la rotazione del registro

Ad esempio, diamo alcuni criteri per la gestione dei log di query MySQL generali. Possiamo trovare un insieme adeguato di criteri per la gestione dei log ponendo le seguenti domande:

D:Qual è la dimensione massima che può aumentare il file di registro?

R:Diciamo che può crescere fino a 300 MB, dopodiché deve essere ruotato e compresso.

D:Qual è la frequenza con cui vuoi che il file di registro venga ruotato?

R:Possiamo dire che vogliamo che i log vengano ruotati su base giornaliera.

D:Quanti vecchi file di registro vuoi conservare?

R:Vorremmo conservare gli ultimi 30 file di registro.

In base ai criteri precedenti, lo spazio su disco complessivo richiesto per la gestione generale del registro delle query è di circa 1,2 GB. Supponendo un rapporto di compressione del 90%, avremo 30 file di registro compressi di dimensioni 30 MB ciascuno e un file di registro live di circa 300 MB.

Gestione dei log del server MySQL:ruota, comprimi, conserva ed eliminaFai clic per twittare

Gestire i log utilizzando l'utility logrotate di Linux

logrotate è un'utilità Linux che aiuta con l'amministrazione efficiente dei file di registro e fornisce opzioni per la rotazione, la compressione e la rimozione automatiche dei file di registro. I criteri stabiliti sopra possono essere configurati per l'utilità logrotate creando un file di configurazione nella cartella /etc/logrotate.d.

Chiamiamo questo file di configurazione mysqlgeneral e il contenuto del file sarà:

/var/log/mysql/general.log{
        compress
        dateext
        maxsize 300M
        copytruncate
        maxage 365
        dateformat -%Y%m%d%s
        daily
        rotate 30
        notifempty
}

Con le opzioni di cui sopra per logrotate, i registri delle query generali vengono ruotati su base giornaliera o quando la dimensione del file di registro supera i 300 MB. I vecchi registri vengono compressi e verranno conservati 30 file di questo tipo. La rotazione del registro verrà saltata se il file di registro è vuoto a causa dell'impostazione "notifempty".

L'opzione 'copytruncate' serve a garantire che il file di registro corrente non venga mai eliminato durante la rotazione e solo il suo contenuto venga troncato. Questo è importante poiché alcune applicazioni prevedono che il file di registro sia sempre disponibile e non è possibile eliminare il registro senza prima arrestare l'applicazione.

Ora che la configurazione della rotazione del registro è impostata per il registro delle query generali, è necessario eseguire l'utilità logrotate in modo che la configurazione di cui sopra sia eseguita. Questo viene in genere fatto tramite un lavoro cron. Possiamo impostarlo in modo che venga eseguito ogni ora inserendo lo script logrotate nella directory /etc/cron.hourly:

#!/bin/sh

/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

Quindi, con pochi semplici passaggi, abbiamo impostato la rotazione dei log per i log generali di MySQL in base ai nostri criteri. Lo stesso approccio può essere seguito anche per i log di errore MySQL e per i log di query lente. Dai un'occhiata a questi altri post per saperne di più sull'ottimizzazione delle tue implementazioni MySQL:

  • Calcolo della dimensione del pool di buffer InnoDB per il tuo server MySQL
  • Tutorial MySQL – Configurazione e gestione di SSL sul tuo server MySQL
  • Spiegazione di MySQL High Availability Framework – Parte I:Introduzione