Mysql
 sql >> база данни >  >> RDS >> Mysql

Урок за MySQL – Управление на регистрационни файлове на MySQL сървър:завъртане, компресиране, запазване и изтриване

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:Въведение


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. (mysql, php) Как да получа стойност на полето auto_increment преди вмъкване на данни?

  2. Как да ограничим резултатите в MySQL, PostgreSQL и SQLite

  3. Как да създадете композитен първичен ключ в MySQL

  4. MySQL Резултати като списък, разделен със запетая

  5. Mysql разделяне на низ