MySQL
Loggfiler
Sök…
En lista
- Allmän logg - alla frågor - se VARIABLE general_log
- Långsam log - frågor långsammare än long_query_time - slow_query_log_file
- Binlog - för replikering och säkerhetskopiering - log_bin_basename
- Relälogg - också för replikering
- allmänna fel - mysqld.err
- start / stopp - mysql.log (inte särskilt intressant) - log_error
- InnoDB gör om logg - iblog *
Se variablerna basedir
och datadir
för standardplats för många loggar
Vissa loggar slås på / av av andra VARIABLER. Vissa skrivs antingen till en fil eller till en tabell.
(Obs till granskarna: Detta behöver mer information och mer förklaring.)
Dokumentatorer : Vänligen inkludera standardplats och namn för varje loggtyp, både för Windows och * nix. (Eller åtminstone så mycket du kan.)
Slow Query Log
Slow Query-loggen består av logghändelser för frågor som tar upp till long_query_time
sekunder att slutföra. Till exempel upp till 10 sekunder att slutföra. Om du vill se den tidsgräns som för närvarande är inställd, utfärda följande:
SELECT @@long_query_time;
+-------------------+
| @@long_query_time |
+-------------------+
| 10.000000 |
+-------------------+
Det kan ställas in som en GLOBAL-variabel, i my.cnf
eller my.ini
filen. Eller det kan ställas in via anslutningen, men detta är ovanligt. Värdet kan ställas in mellan 0 till 10 (sekunder). Vilket värde ska du använda?
- 10 är så hög att den nästan är värdelös;
- 2 är en kompromiss;
- 0,5 och andra fraktioner är möjliga;
- 0 fångar allt; detta kan fylla hårddisk farligt snabbt, men kan vara mycket användbart.
Att ta långsamma frågor är antingen på eller av. Och filen som är inloggad anges också. Nedan fångar dessa begrepp:
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)
För mer information, se MySQL Manual Page The Slow Query Log
Obs: Ovanstående information om att slå på / stänga av slowlog ändrades i 5.6 (?); äldre version hade en annan mekanism.
Det "bästa" sättet att se vad som bromsar ditt system:
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
Allmän fråga logg
General Query Log innehåller en lista över allmän information från klientanslutningar, kopplingar och frågor. Det är ovärderligt för felsökning, men ändå utgör det ett hinder för prestanda (citationstecken?).
En exempelvy av en allmän fråglogg visas nedan:
För att avgöra om den allmänna loggen för närvarande fångas:
SELECT @@general_log; -- 1 = Capture is active; 0 = It is not.
Så här bestämmer du filnamnet på infångningsfilen:
SELECT @@general_log_file; -- Full path to capture file
Om helvägen till filen inte visas finns filen i datadir
.
Windows-exempel:
+----------------------------------------------------------+
| @@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 |
+-----------------------------------+
När ändringar görs i general_log_file
general_log_file general_log_file
sparas den nya loggen i datadir
. Hela vägen kan dock inte längre återspeglas genom att undersöka variabeln.
Om det inte finns någon post för general_log_file
i konfigurationsfilen, kommer den som standard att @@hostname
.log i datadir
.
Bästa praxis är att stänga av fångst. Spara loggfilen i en säkerhetskatalog med ett filnamn som speglar början / slutdatum för inspelningen. Radera tidigare fil om ett filsystem flytta inte skedde i den filen. Upprätta ett nytt filnamn för loggfilen och slå på fångsten (alla visas nedan). Bästa praxis inkluderar också en noggrann beslutsamhet om du ens vill fånga just nu. Vanligtvis är inspelning PÅ endast för felsökning.
Ett typiskt filsystemfilnamn för en säkerhetskopierad logg kan vara:
/LogBackup/GeneralLog_20160802_1520_to_20160802_1815.log
där datum och tid ingår i filnamnet som ett intervall.
För Windows noterar du följande sekvens med ändringsinställningar.
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 liknar. Dessa skulle representera dynamiska förändringar. Varje omstart av servern skulle hämta inställningar för konfigurationsfil.
När det gäller konfigurationsfilen, överväg följande relevanta variabla inställningar:
[mysqld]
general_log_file = /path/to/currentquery.log
general_log = 1
Dessutom kan variabeln log_output
konfigureras för TABLE
utgång, inte bara FILE
. För detta, se Destinationer .
Se MySQL Manual-sidan Den allmänna frågloggen .
Felloggen
Felloggen fylls med start- och stoppinformation och kritiska händelser som servern stöter på.
Följande är ett exempel på dess innehåll:
Variabeln log_error
håller sökvägen till loggfilen för felloggning.
I avsaknad av en konfigurationsfilpost för log_error
kommer systemet att standardvärdena till @@hostname
.err i datadir
. Observera att log_error
inte är en dynamisk variabel. Som sådant görs ändringar genom en cnf- eller ini-filändring och en serverstart (eller genom att se "Spola och byta namn på felloggfilen" i länken Manuell sida längst ner här).
Loggning kan inte inaktiveras för fel. De är viktiga för systemhälsan vid felsökning av problem. Dessutom är poster sällan jämfört med den allmänna frågloggen.
GLOBAL-variabeln log_warnings
anger nivån för verbositet som varierar beroende på serverversion. Följande utdrag illustrerar:
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
som ses ovan är en dynamisk variabel.
Konfigurationsfiländringar i cnf
och ini
filer kan se ut som följande.
[mysqld]
log_error = /path/to/CurrentError.log
log_warnings = 2
MySQL 5.7.2 utökade varningsnivån till 3 och lägg till log_error_verbosity
. Återigen introducerades det i 5.7.2. Det kan ställas in dynamiskt och kontrolleras som en variabel eller ställa in via cnf
eller ini
konfigurationsfilinställningar.
Från och med MySQL 5.7.2:
[mysqld]
log_error = /path/to/CurrentError.log
log_warnings = 2
log_error_verbosity = 3
Se MySQL Manual-sidan med titeln Felloggen speciellt för att log_warnings
och error_log_verbosity
och dess felloggsverbositet med versioner relaterade till log_warnings
och error_log_verbosity
.