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:

ange bildbeskrivning här

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:

ange bildbeskrivning här

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 .



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow