MySQL
Logboek bestanden
Zoeken…
Een overzicht
- Algemeen logboek - alle vragen - zie VARIABLE general_log
- Langzaam logboek - zoekopdrachten zijn langzamer dan long_query_time - slow_query_log_file
- Binlog - voor replicatie en back-up - log_bin_basename
- Relay-logboek - ook voor replicatie
- algemene fouten - mysqld.err
- start / stop - mysql.log (niet erg interessant) - log_error
- InnoDB redo log - iblog *
Zie de variabelen basedir
en datadir
voor standaardlocatie voor veel logs
Sommige logboeken worden door andere VARIABLES in- of uitgeschakeld. Sommige worden naar een bestand of naar een tabel geschreven.
(Opmerking voor reviewers: dit heeft meer details en meer uitleg nodig.)
Documenters : geef de standaardlocatie en -naam op voor elk logboektype, voor zowel Windows als * nix. (Of minstens zoveel als je kunt.)
Langzaam zoeklogboek
Het trage long_query_time
bestaat uit long_query_time
voor query's die tot het long_query_time
van long_query_time
seconden long_query_time
. Bijvoorbeeld tot 10 seconden om te voltooien. Geef het volgende op om de momenteel ingestelde tijdsdrempel te bekijken:
SELECT @@long_query_time;
+-------------------+
| @@long_query_time |
+-------------------+
| 10.000000 |
+-------------------+
Het kan worden ingesteld als een GLOBAL-variabele, in het bestand my.cnf
of my.ini
. Of het kan worden ingesteld door de verbinding, hoewel dit ongebruikelijk is. De waarde kan worden ingesteld tussen 0 en 10 (seconden). Welke waarde te gebruiken?
- 10 is zo hoog dat het bijna nutteloos is;
- 2 is een compromis;
- 0,5 en andere fracties zijn mogelijk;
- 0 legt alles vast; dit kan de schijf gevaarlijk snel vullen, maar kan erg handig zijn.
Het vastleggen van trage zoekopdrachten is in- of uitgeschakeld. En het bestand dat is aangemeld, wordt ook opgegeven. Hieronder staan deze concepten:
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)
Voor meer informatie, zie de MySQL Manual Page The Slow Query Log
Opmerking: de bovenstaande informatie over het in- / uitschakelen van de slowlog is gewijzigd in 5.6 (?); oudere versie had een ander mechanisme.
De "beste" manier om te zien wat uw systeem vertraagt:
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
Algemeen querylogboek
Het algemene querylogboek bevat een lijst met algemene informatie van clientverbindingen, verbroken verbindingen en query's. Het is van onschatbare waarde voor het debuggen, maar het vormt een belemmering voor de uitvoering (citaat?).
Hieronder ziet u een voorbeeldweergave van een algemeen querylogboek:
Bepalen of het algemene logboek momenteel wordt vastgelegd:
SELECT @@general_log; -- 1 = Capture is active; 0 = It is not.
Om de bestandsnaam van het opnamebestand te bepalen:
SELECT @@general_log_file; -- Full path to capture file
Als het volledige pad naar het bestand niet wordt weergegeven, bestaat het bestand in de datadir
.
Windows-voorbeeld:
+----------------------------------------------------------+
| @@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 |
+-----------------------------------+
Wanneer wijzigingen worden aangebracht in de GLOBAL-variabele general_log_file
, wordt het nieuwe logboek opgeslagen in de datadir
. Het volledige pad kan echter niet langer worden weerspiegeld door de variabele te onderzoeken.
In het geval van geen invoer voor general_log_file
in het configuratiebestand, wordt dit standaard ingesteld op @@hostname
.log in de datadir
.
Het beste is om het vastleggen uit te schakelen. Sla het logbestand op in een back-upmap met een bestandsnaam die de begintijd / einddatum van de opname aangeeft. Voorafgaande bestand verwijderen Als een bestandssysteem beweging kwam niet bij van dat bestand. Stel een nieuwe bestandsnaam in voor het logboekbestand en zet vastleggen AAN (alles hieronder weergegeven). Best practices omvatten ook een zorgvuldige bepaling of u zelfs op dit moment wilt vastleggen. Normaal gesproken is vastleggen alleen ingeschakeld voor foutopsporing.
Een typische bestandssysteembestandsnaam voor een geback-upt logboek kan zijn:
/LogBackup/GeneralLog_20160802_1520_to_20160802_1815.log
waarbij de datum en tijd deel uitmaken van de bestandsnaam als een bereik.
Voor Windows, let op de volgende volgorde met instellingswijzigingen.
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 is vergelijkbaar. Deze zouden dynamische veranderingen vertegenwoordigen. Elke herstart van de server zou de instellingen van het configuratiebestand ophalen.
Overweeg voor het configuratiebestand de volgende relevante variabele instellingen:
[mysqld]
general_log_file = /path/to/currentquery.log
general_log = 1
Bovendien kan de variabele log_output
worden geconfigureerd voor TABLE
uitvoer, niet alleen FILE
. Zie daarvoor Bestemmingen .
Raadpleeg de MySQL-handleidingpagina Het algemene querylogboek .
Foutenlogboek
Het foutenlogboek is gevuld met start- en stopinformatie en kritieke gebeurtenissen die de server heeft ondervonden.
Het volgende is een voorbeeld van de inhoud:
De variabele log_error
bevat het pad naar het logbestand voor foutregistratie.
Bij afwezigheid van een invoer in het configuratiebestand voor log_error
, zal het systeem zijn waarden standaard instellen op @@hostname
.err in de datadir
. Merk op dat log_error
geen dynamische variabele is. Als zodanig worden wijzigingen doorgevoerd via een cnf- of ini-bestandswijziging en een server opnieuw opgestart (of door "Het foutenlogbestand doorspoelen en hernoemen" te zien in de koppeling Handmatige pagina onderaan hier).
Loggen kan niet worden uitgeschakeld voor fouten. Ze zijn belangrijk voor de gezondheid van het systeem terwijl u problemen oplost. Bovendien zijn vermeldingen zeldzaam in vergelijking met het algemene querylogboek.
De GLOBAL variabele log_warnings
stelt het niveau voor verbosity in dat varieert per serverversie. Het volgende fragment illustreert:
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
zoals hierboven te zien is een dynamische variabele.
Wijzigingen in configuratiebestanden in cnf
en ini
bestanden kunnen er als volgt uitzien.
[mysqld]
log_error = /path/to/CurrentError.log
log_warnings = 2
MySQL 5.7.2 breidde de verbosity van het waarschuwingsniveau uit naar 3 en voegde de GLOBAL log_error_verbosity
. Nogmaals, het werd geïntroduceerd in 5.7.2. Het kan dynamisch worden ingesteld en als een variabele worden gecontroleerd of worden ingesteld via cnf
of ini
configuratiebestandinstellingen.
Vanaf MySQL 5.7.2:
[mysqld]
log_error = /path/to/CurrentError.log
log_warnings = 2
log_error_verbosity = 3
Zie de MySQL-handleiding Page getiteld De Error Log speciaal voor Vlissingen en hernoemen Foutenlog bestand en haar Foutenlog Verbosity sectie met versies met betrekking tot log_warnings
en error_log_verbosity
.