sql >> Databáze >  >> RDS >> Mysql

Výukový program MySQL – Správa protokolů serveru MySQL:Otáčet, komprimovat, uchovávat a mazat

MySQL Server generuje několik protokolů, které vám mohou pomoci sledovat aktivity serveru. Jakmile jsou však tyto protokoly povoleny, mohou se zvětšit a začít zabírat příliš mnoho místa na disku. To je důvod, proč je důležité mít automatizovaný způsob archivace a uchovávání souborů protokolu MySQL po určitou dobu a také mazání starých. V tomto příspěvku na blogu popisujeme některé osvědčené postupy pro nastavení a správu protokolů chyb MySQL, obecných protokolů a protokolů pomalých dotazů pro vaše nasazení MySQL.

Nastavení protokolování serveru MySQL

Podívejme se, jak nastavit následující 3 typy protokolů:

Protokol chyb

Zaznamenává všechny problémy, které se vyskytly při spouštění, spouštění nebo zastavování mysqld. Tento protokol lze aktivovat pomocí následující možnosti v souboru /etc/my.cnf:

  • log_error=/var/log/mysql/mysqld.log

Protokol obecných dotazů

Zaznamenává navázaná připojení klientů a výpisy přijaté od klientů. Tento protokol lze aktivovat pomocí následující možnosti v souboru /etc/my.cnf:

  • general_log=ON
  • general_log_file=/var/log/mysql/general.log

Protokol pomalého dotazu

Zaznamenává dotazy, jejichž provedení trvalo déle než long_query_time sekund. Tento protokol lze aktivovat následující možností v souboru /etc/my.cnf:

  • slow_query_log=ON
  • slow_query_log_file=/var/log/mysql/mysql-slowquery.log

Nastavení kritérií pro rotaci protokolu

Jako příklad si uveďme některá kritéria pro správu obecných protokolů dotazů MySQL. Můžeme přijít s vhodnou sadou kritérií pro správu protokolů položením následujících otázek:

O:Jaká je maximální velikost, o kterou může soubor protokolu narůst?

Odpověď:Řekněme, že může narůst až na 300 MB, poté je potřeba jej otočit a zkomprimovat.

O:Jak často chcete soubor protokolu střídat?

Odpověď:Můžeme říci, že chceme, aby se protokoly střídaly každý den.

O:Kolik starých souborů protokolu chcete zachovat?

Odpověď:Rádi bychom uchovali posledních 30 souborů protokolu.

Na základě výše uvedených kritérií je celkový diskový prostor požadovaný pro obecnou správu protokolu dotazů asi 1,2 GB. Za předpokladu 90% kompresního poměru – budeme mít 30 komprimovaných souborů protokolu o velikosti 30 MB a živý soubor protokolu o velikosti přibližně 300 MB.

Správa protokolů serveru MySQL:Otáčet, komprimovat, uchovávat a mazat kliknutím na tweet

Správa protokolů pomocí nástroje logrotate pro Linux

logrotate je nástroj pro Linux, který pomáhá s efektivní správou souborů protokolu a poskytuje možnosti pro automatické otáčení, kompresi a odstraňování souborů protokolu. Výše stanovená kritéria lze nakonfigurovat pro nástroj logrotate vytvořením konfiguračního souboru ve složce /etc/logrotate.d.

Nazvěme tento konfigurační soubor mysqlgeneral a obsah souboru bude:

/var/log/mysql/general.log{
        compress
        dateext
        maxsize 300M
        copytruncate
        maxage 365
        dateformat -%Y%m%d%s
        daily
        rotate 30
        notifempty
}

S výše uvedenými možnostmi logrotate se obecné protokoly dotazů střídají buď denně, nebo když velikost souboru protokolu přesáhne 300 MB. Staré protokoly jsou komprimovány a 30 takových souborů bude zachováno. Rotace protokolu bude přeskočena, pokud je soubor protokolu prázdný kvůli nastavení „notifempty“.

Volba ‚copytruncate‘ má zajistit, že aktuální soubor protokolu nebude během rotace nikdy smazán a bude zkrácen pouze jeho obsah. To je důležité, protože některé aplikace očekávají, že soubor protokolu je vždy k dispozici a není možné protokol odstranit bez předchozího zastavení aplikace.

Nyní, když je konfigurace rotace protokolu nastavena pro obecný protokol dotazů, je třeba spustit obslužný program logrotate, aby byla provedena výše uvedená konfigurace. To se obvykle provádí prostřednictvím úlohy cron. Můžeme to nastavit tak, aby se spouštělo každou hodinu umístěním skriptu logrotate do adresáře /etc/cron.hourly:

#!/bin/sh

/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

Takže pomocí několika jednoduchých kroků jsme nastavili rotaci protokolů pro obecné protokoly MySQL na základě našich kritérií. Stejný přístup lze použít pro protokoly chyb MySQL a protokoly pomalých dotazů. Podívejte se na tyto další příspěvky, kde se dozvíte více o optimalizaci nasazení MySQL:

  • Výpočet velikosti fondu vyrovnávací paměti InnoDB pro váš server MySQL
  • Výukový program MySQL – Konfigurace a správa SSL na vašem serveru MySQL
  • Vysvětlení rámce MySQL High Availability Framework – Část I:Úvod


  1. Jak formátovat čísla jako měnu v SQL Server (T-SQL)

  2. Vysvětlení rámce MySQL High Availability Framework – Část II:Semisynchronní replikace

  3. 1052:Sloupec 'id' v seznamu polí je nejednoznačný

  4. Jak mohu získat počet dní mezi 2 daty v Oracle 11g?