Il plugin SQL_ERROR_LOG
MariaDB starting with 5.5.22
Questo plugin è stato introdotto in MariaDB 5.5.22
Talvolta risulta utile registrare in un file di log gli errori restituiti ai client, per poterli analizzare successivamente. Il plugin SQL_ERROR_LOG, aggiunto in MariaDB 5.5, serve proprio a questo. E' implementato come MYSQL_AUDIT_PLUGIN, pertanto una volta installato questo plugin riceve le notifiche degli errori dal server e le registra nel file specificato. Supporta la rotazione dei file d log.
Ecco il comando tipico per abilitare il plugin per il log degli errori SQL:
install plugin SQL_ERROR_LOG soname 'sql_errlog.so';
Oppure si può aggiungere --plugin-load=sql_errlog.so alla riga di comando del server, o alla sezione [mysqld] del file my.cnf utilizzato.
Per disabilitarlo:
uninstall plugin SQL_ERROR_LOG;
Il plugin SQL_ERROR_LOG dichiara 5 variabili, che ne influenzano il comportamento:
- @sql_error_log_filename - valore stringa. Il nome del file di log.
La rotazione produrrà file con nomi come @sql_error_log_filename.001
- @sql_error_log_rate - valore intero, la velocità del logging.
SET @sql_error_log_rate:=300; significa che un errore ogni 300 verrà scritto nel log.
Se @sql_error_log_rate è 0 - il logging è disabilitato.
Il default è 1 (tutti gli errori vengono loggati).
- @sql_error_log_size_limit - valore intero, le dimensioni massime del file di log.
Dopo aver raggiunto questo limite, avverrà la rotazione dei file.
Il limite predefinito è di 1M.
- @sql_error_log_rotations - valore intero, il numero di rotazioni.
Durante la rotazione il file corrente cambia nome e ne viene creato uno nuovo, vuoto.
@sql_error_log_rotations è il numero di vecchi log che vengono conservati, gli altri saranno eliminati.
- @sql_error_log_rotate - valore booleano.
E una variabile di sola scrittura. Se è TRUE, si forza la rotazione dei log.
Esempi
install plugin SQL_ERROR_LOG soname 'sql_errlog.so'; Query OK, 0 rows affected (0.00 sec) use test; Database changed set sql_mode='STRICT_ALL_TABLES,NO_ENGINE_SUBSTITUTION'; Query OK, 0 rows affected (0.00 sec) CREATE TABLE foo2 (id int) ENGINE=WHOOPSIE; ERROR 1286 (42000): Unknown storage engine 'WHOOPSIE' \! cat data/sql_errors.log 2013-03-19 9:38:40 msandbox[msandbox] @ localhost [] ERROR 1286: Unknown storage engine 'WHOOPSIE' : CREATE TABLE foo2 (id int) ENGINE=WHOOPSIE