MySQL
Log files
Ricerca…
Una lista
- Registro generale - tutte le query - vedi VARIABLE general_log
- Registro lento: query più lente di long_query_time - slow_query_log_file
- Binlog: per la replica e il backup: log_bin_basename
- Log di inoltro - anche per la replica
- errori generali - mysqld.err
- start / stop - mysql.log (non molto interessante) - log_error
- InnoDB redo log - iblog *
Vedere le variabili basedir
e datadir
per la posizione predefinita per molti registri
Alcuni registri sono attivati / disattivati da altre VARIABILI. Alcuni sono scritti su un file o su un tavolo.
(Nota per i revisori: questo richiede più dettagli e maggiori spiegazioni).
Documentatori : includere la posizione e il nome predefiniti per ciascun tipo di registro, sia per Windows che per * nix. (O almeno il più possibile.)
Log delle query lente
Il registro delle query lente è costituito da eventi di registro per le query che long_query_time
fino a long_query_time
secondi per terminare. Ad esempio, fino a 10 secondi per il completamento. Per vedere la soglia temporale attualmente impostata, emettere il seguente messaggio:
SELECT @@long_query_time;
+-------------------+
| @@long_query_time |
+-------------------+
| 10.000000 |
+-------------------+
Può essere impostato come variabile GLOBAL, nel file my.cnf
o my.ini
. Oppure può essere impostato dalla connessione, anche se questo è insolito. Il valore può essere impostato tra 0 e 10 (secondi). Quale valore usare?
- 10 è così alto da essere quasi inutile;
- 2 è un compromesso;
- 0,5 e altre frazioni sono possibili;
- 0 cattura tutto; questo potrebbe riempire il disco pericolosamente velocemente, ma può essere molto utile.
L'acquisizione di query lente è attivata o disattivata. E anche il file registrato è specificato. Il sotto cattura questi concetti:
SELECT @@slow_query_log; -- Is capture currently active? (1=On, 0=Off)
SELECT @@slow_query_log_file; -- filename for capture. Resides in datadir
SELECT @@datadir; -- to see current value of the location for capture file
SET GLOBAL slow_query_log=0; -- Turn Off
-- make a backup of the Slow Query Log capture file. Then delete it.
SET GLOBAL slow_query_log=1; -- Turn it back On (new empty file is created)
Per ulteriori informazioni, consultare la pagina del manuale MySQL. Il registro delle query lente
Nota: le informazioni di cui sopra sull'accensione / spegnimento del registro lento sono state modificate in 5.6 (?); la versione precedente aveva un altro meccanismo.
Il modo "migliore" per vedere cosa sta rallentando il tuo sistema:
long_query_time=...
turn on the slowlog
run for a few hours
turn off the slowlog (or raise the cutoff)
run pt-query-digest to find the 'worst' couple of queries. Or mysqldumpslow -s t
Log di query generale
Il registro delle query generali contiene un elenco di informazioni generali da client si connette, disconnette e query. È di valore inestimabile per il debug, eppure si pone come un ostacolo alle prestazioni (citazione?).
Di seguito è riportata una vista di esempio di un log di query generale:
Per determinare se il registro generale è attualmente in fase di acquisizione:
SELECT @@general_log; -- 1 = Capture is active; 0 = It is not.
Per determinare il nome file del file di acquisizione:
SELECT @@general_log_file; -- Full path to capture file
Se il percorso completo del file non viene mostrato, il file esiste nel datadir
.
Esempio di Windows:
+----------------------------------------------------------+
| @@general_log_file |
+----------------------------------------------------------+
| C:\ProgramData\MySQL\MySQL Server 5.7\Data\GuySmiley.log |
+----------------------------------------------------------+
Linux:
+-----------------------------------+
| @@general_log_file |
+-----------------------------------+
| /var/lib/mysql/ip-ww-xx-yy-zz.log |
+-----------------------------------+
Quando vengono apportate modifiche alla variabile GLOBAL general_log_file
, il nuovo log viene salvato nel datadir
. Tuttavia, il percorso completo potrebbe non riflettersi più esaminando la variabile.
Nel caso di nessuna voce per general_log_file
nel file di configurazione, per impostazione predefinita sarà @@hostname
.log nel datadir
.
Le migliori pratiche sono per disattivare l'acquisizione. Salvare il file di registro in una directory di backup con un nome file che riflette il tempo di inizio / fine della cattura. Cancellare il file precedente se non si verificava un trasferimento del filesystem di quel file. Stabilire un nuovo nome file per il file di registro e attivare la cattura su ON (tutti vengono visualizzati di seguito). Le migliori pratiche includono anche un'attenta determinazione se vuoi anche catturare al momento. In genere, l'acquisizione è attiva solo a scopo di debug.
Un tipico nome file del filesystem per un registro di backup potrebbe essere:
/LogBackup/GeneralLog_20160802_1520_to_20160802_1815.log
dove la data e l'ora sono parte del nome del file come intervallo.
Per Windows, osserva la seguente sequenza con le modifiche alle impostazioni.
SELECT @@general_log; -- 0. Not being captured
SELECT @@general_log_file; -- C:\ProgramData\MySQL\MySQL Server 5.6\Data\GuySmiley.log
SELECT @@datadir; -- C:\ProgramData\MySQL\MySQL Server 5.7\Data\
SET GLOBAL general_log_file='GeneralLogBegin_20160803_1420.log'; -- datetime clue
SET GLOBAL general_log=1; -- Turns on actual log capture. File is created under `datadir`
SET GLOBAL general_log=0; -- Turn logging off
Linux è simile. Questi rappresenterebbero cambiamenti dinamici. Qualsiasi riavvio del server avrebbe rilevato le impostazioni del file di configurazione.
Per quanto riguarda il file di configurazione, considerare le seguenti impostazioni delle variabili rilevanti:
[mysqld]
general_log_file = /path/to/currentquery.log
general_log = 1
Inoltre, la variabile log_output
può essere configurata per l'output TABLE
, non solo FILE
. Per quello, per favore vedi Destinazioni .
Si prega di consultare la pagina del manuale MySQL Il registro generale delle query .
Registro errori
Il registro degli errori è popolato con le informazioni di avvio e arresto e gli eventi critici incontrati dal server.
Quello che segue è un esempio dei suoi contenuti:
La variabile log_error
contiene il percorso del file di registro per la registrazione degli errori.
In assenza di una voce del file di configurazione per log_error
, il sistema log_error
i suoi valori su @@hostname
.err nel datadir
. Nota che log_error
non è una variabile dinamica. Di conseguenza, le modifiche vengono apportate tramite modifiche al file cnf o ini e al riavvio del server (oppure visualizzando "Flushing e Renaming the Error Log File" nel collegamento Pagina manuale in basso qui).
La registrazione non può essere disabilitata per errori. Sono importanti per la salute del sistema durante la risoluzione dei problemi. Inoltre, le voci non sono frequenti rispetto al registro delle query generali.
La variabile GLOBAL log_warnings
imposta il livello di verbosità che varia in base alla versione del server. Il seguente frammento illustra:
SELECT @@log_warnings; -- make a note of your prior setting
SET GLOBAL log_warnings=2; -- setting above 1 increases output (see server version)
log_warnings
come visto sopra è una variabile dinamica.
Le modifiche del file di configurazione nei file cnf
e ini
potrebbero essere le seguenti.
[mysqld]
log_error = /path/to/CurrentError.log
log_warnings = 2
MySQL 5.7.2 ha espanso il livello di avviso verbosità a 3 e ha aggiunto GLOBAL log_error_verbosity
. Ancora una volta, è stato introdotto in 5.7.2. Può essere impostato dinamicamente e controllato come variabile o impostato tramite le impostazioni del file di configurazione cnf
o ini
.
A partire da MySQL 5.7.2:
[mysqld]
log_error = /path/to/CurrentError.log
log_warnings = 2
log_error_verbosity = 3
Si prega di consultare la pagina del manuale MySQL intitolata The Error Log, in particolare per Flushing e Renaming del file di log degli errori, e la sua sezione Verbosità del registro degli errori con le versioni relative a log_warnings
e error_log_verbosity
.