V tomto krátkém a snadno sledovatelném průvodci popisujeme, jak povolit protokolování dotazů MySQL/MariaDB a ukládat dotazy do souboru.
Při používání databáze se často stává, že vývojáři chtějí vědět, co se děje za scénou. Ať už jde o řešení problémů, ladění výkonu nebo z pouhé zvědavosti.
Obecné protokoly dotazů zůstávají jedním z nejoblíbenějších zdrojů auditních a diagnostických informací v databázích MySQL/MariaDB. Po povolení protokolování zapíše databázový server informace do souboru protokolu, když se klienti připojí nebo odpojí, a zaznamená každý příkaz SQL.
Mějte však na paměti, že povolení obecného protokolu dotazů ovlivňuje výkon MySQL/MariaDB. To sníží propustnost asi o 13 % a prodlouží dobu odezvy serveru MySQL/MariaDB asi o 17 %.
Takže bez dalších okolků začněme, protože proces je docela přímočarý.
Povolit protokolování obecných dotazů MySQL/MariaDB
V MySQL/MariaDB je obecný protokol dotazů ve výchozím nastavení zakázán.
1. Vstupte do nástroje příkazového řádku serveru MySQL/MariaDB jako root:
mysql -u root -p
2. Nastavte cestu k souboru obecného protokolu na /var/logs/mysql/general-query.log
provedením níže uvedeného dotazu.
SET GLOBAL general_log_file='/var/log/mysql/general-query.log';
Ve výchozím nastavení je obecný protokol dotazů zapsán ve stejném datovém adresáři, který obsahuje samotné podadresáře databáze (obvykle /var/lib/mysql
) a název souboru protokolu je výchozí název hostitele. Jak však vidíte, lze to změnit.
3. Povolte obecný protokol serveru:
SET GLOBAL general_log = 1;
Pojďme znovu zkontrolovat stav obecného protokolu dotazů MySQL/MariaDB:
SHOW VARIABLES LIKE "general_log%";
A je to. Od této chvíle můžete provést něco podobného jako sudo tail -f
na general-query.log
soubor z příkazového řádku a sledujte věci.
Jakmile dokončíte kontrolu, můžete zakázat protokolování dotazů MySQL/MariaDB následovně:
SET GLOBAL general_log = 0;
Rozhodně je nežádoucí mít zapnuté protokolování na produkčním serveru. Takže buďte opatrní, soubor protokolu se může velmi rychle zvětšit.
Pokud nechcete spouštět dotazy přímo, stále můžete povolit protokolování dotazů MySQL/MariaDB přímou úpravou konfiguračního souboru MySQL/MariaDB, ale mějte na paměti, že tento přístup vyžaduje restart databázového serveru.
Závěr
Obecný protokol dotazů MySQL/MariaDB může být velmi užitečný, když máte podezření na chybu v klientovi a chcete přesně vědět, co klient poslal do databáze. Takže pokud máte nějakou chybu nebo problém s databází, jeden ze způsobů, jak problém vysledovat, zapnout tento protokol a zkontrolovat, co se děje.
Více o povolení obecného protokolu dotazů MySQL/MariaDB si můžete přečíst zde a zde.