MySQL Server генерира няколко журнала, които могат да ви помогнат да наблюдавате дейностите на сървъра. Въпреки това, след като тези регистрационни файлове са активирани, те могат да нараснат по размер и да започнат да заемат твърде много дисково пространство. Ето защо е важно да имате автоматизиран начин за архивиране и запазване на лог файловете на MySQL за определена продължителност, както и за изтриване на старите. В тази публикация в блога ние описваме някои най-добри практики за настройка и управление на MySQL регистрационни файлове за грешки, общи регистрационни файлове и бавни регистрационни файлове за заявки за вашите MySQL внедрявания.
Настройване на записване на MySQL сървър
Нека да разгледаме как да настроите следните 3 типа регистрационни файлове:
Регистър на грешките
Регистрира всички проблеми, възникнали по време на стартиране, изпълнение или спиране на mysqld. Този дневник може да бъде активиран, като имате следната опция във файла /etc/my.cnf:
- log_error=/var/log/mysql/mysqld.log
Общ регистър на заявките
Регистрира установени клиентски връзки и изявления, получени от клиенти. Този дневник може да бъде активиран, като имате следната опция във файла /etc/my.cnf:
- general_log=ON
- general_log_file=/var/log/mysql/general.log
Регистър на бавените заявки
Регистрира заявки, чието изпълнение е отнело повече от long_query_time секунди. Този журнал може да бъде активиран чрез следната опция във файла /etc/my.cnf:
- slow_query_log=ON
- slow_query_log_file=/var/log/mysql/mysql-slowquery.log
Настройване на критерии за ротация на журнал
Като пример, нека имаме някои критерии за управление на общи регистрационни файлове на MySQL заявки. Можем да измислим подходящ набор от критерии за управление на регистрационни файлове, като зададем следните въпроси:
В:Какъв е максималният размер, който може да увеличи регистрационният файл?
О:Да приемем, че може да нарасне до 300 MB, след което трябва да се завърти и компресира.
В:Каква е честотата, с която искате да се завърта регистрационният файл?
О:Можем да кажем, че искаме дневниците да се ротират ежедневно.
В:Колко стари регистрационни файла искате да запазите?
О:Бихме искали да запазим последните 30 регистрационни файла.
Въз основа на горните критерии, общото дисково пространство, необходимо за общо управление на регистрационния файл на заявки, е около 1,2 GB. Ако приемем 90% коефициент на компресия – ще имаме 30 компресирани регистрационни файла с размер 30 MB всеки и жив лог файл от около 300 MB.
Управление на регистрационните файлове на MySQL сървъра:завъртане, компресиране, задържане и изтриване Щракнете за туит
Управление на регистрационните файлове с помощта на помощната програма logrotate на Linux
logrotate е помощна програма за Linux, която помага за ефективното администриране на регистрационни файлове и предоставя опции за автоматично завъртане, компресиране и премахване на регистрационни файлове. Критериите, установени по-горе, могат да бъдат конфигурирани за помощната програма logrotate чрез създаване на конфигурационен файл в папката /etc/logrotate.d.
Нека наречем този конфигурационен файл mysqlgeneral и съдържанието на файла ще бъде:
/var/log/mysql/general.log{
compress
dateext
maxsize 300M
copytruncate
maxage 365
dateformat -%Y%m%d%s
daily
rotate 30
notifempty
}
С горните опции за logrotate общите регистрационни файлове на заявките се редуват или на дневна база, или когато размерът на регистрационния файл надвиши 300 MB. Старите логове са компресирани и 30 такива файла ще бъдат запазени. Редуването на журнала ще бъде пропуснато, ако регистрационният файл е празен поради настройката „notifempty“.
Опцията „copytruncate“ е да гарантира, че текущият регистрационен файл никога не се изтрива по време на ротация и само съдържанието му се съкращава. Това е важно, тъй като някои приложения очакват регистрационният файл да е винаги наличен и не е възможно да изтриете дневника, без първо да спрете приложението.
Сега, когато конфигурацията за ротация на журнала е зададена за общия дневник на заявките, трябва да се стартира помощната програма logrotate, така че да се изпълни горната конфигурация. Това обикновено се прави чрез cron работа. Можем да настроим това да се изпълнява на всеки час, като поставим скрипта logrotate в директорията /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
И така, с няколко прости стъпки настроихме ротация на регистрационни файлове за общи регистрационни файлове на MySQL въз основа на нашите критерии. Същият подход може да се следва и за регистрационните файлове за грешки в MySQL и за бавни регистрационни файлове на заявки. Вижте тези други публикации, за да научите повече за оптимизирането на внедряванията на MySQL:
- Изчисляване на размера на InnoDB буферен пул за вашия MySQL сървър
- Урок за MySQL – Конфигуриране и управление на SSL на вашия MySQL сървър
- Обяснена рамка за висока достъпност на MySQL – част I:Въведение