MySQL. Журналирование.
MySQL поддерживает несколько типов логов, которые призваны помочь отслеживать все те события
которые происходят в mysqld:
- The error log - содержит информацию об ошибках, которые имели место при запуске, работе или
останове mysql. - The general query log - содержит данные о клиентских подключениях и о всех тех запросах, которые были от них получены.
- The binary log - включает в себя сведения обо всех запросах, вследствие выполнения которых были произведены изменения в таблицах или самой базе, например UPDATE, DELETE, но не SELECT.
- The slow query log - содержит информацию о тех запросах, которые превысили лимит времени выполнения (long_query_time) или же не использовали индексы.
До MySQL 5.1.6 журналирование велось на основе log-файлов. Однако, начиная с MySQL 5.1.6, добавилась возможность записывать логи еще и в таблицы. Для этих целей в БД mysql отведены 2 таблицы general_log и slow_log. Теперь администратору базы данных на выбор представляется возможность хранить логи либо в файлах, либо же в таблицах.
Параметр log-output как раз и призван указывать место хранения данных журналирования. Однако наличие этого параметра не включает сам процесс логирования.
log-output может принимать несколько значений:
TABLE - логи пишутся в таблицу.
FILE - логи пишутся в файл.
NONE - логи не пишутся ни в таблицу, ни в файл.
Задавать эти значения можно как по отдельности, так и вместе разделяя их с помощью запятых, запись log-output=FILE, TABLE - указывает, что журналирование будет происходить как в файл, так и в таблицу, а вот при записи log-output=FILE, TABLE, NONE, журналирование не будет никуда записываться, поскольку значение NONE имеет более высокий приоритет по сравнению с другими.
Если же параметру log-output не задать ни какое значение, то по умолчанию, будет присвоено TABLE.
Итак, включить журналирование типа The general query log можно с помощью параметра log[=file_name]
The slow query log - запускаем с помощью параметра log-slow-queries[=file_name], где file_name - это имя файла, в который будет происходить запись, но не забываем, что для записи в файл у нас должен быть указан атрибут FILE.
Теперь каждый тип журналирования рассмотрим подробней:
Error Log
Содержит в себе информацию о запуске и остановке mysqld а так же обо всех критических ошибках, которые возникали во время работы сервера.
Для включения такого типа логирования используется параметр log-error[=file_name].
Если мы не укажем имя файла, то сервер сам автоматически создаст файл с именем host_name.err
Если выполнить команду FLUSH LOGS, то существующий log-файл будет переименован (к имени добавится приставка -old) и будет создан новый пустой log-файл.
The general query log
Чуть выше я уже описывал, как запустить такой тип журналирования, сейчас слегка повторюсь:
используем параметр log[=file_name] или -l [file_name]. Если мы не укажем имя log-файла, то будет создан файл host_name.log
The Binary Log
Отслеживаются все те запросы, которые напрямую или косвенно обновляют данные в таблицах.
Кроме того, также отслеживается время, затраченное на выполнение данных запросов.
Использование Binary Log ухудшает производительность сервера примерно на 1%. Однако выгоды, которые можно получить в отдельных случаях от такого типа журналирования могут с верхом перекрыть тот 1 %.
Включение журналирования: log-bin[=base_name].
Если не задано имя файла, то используется имя host_name-bin.log.
Сервер отслеживает размер этого файла и в случае достижения заданного размера, который определяется параметром max_binlog_size, будет создан новый файл, и запись логов будет вестись уже там.
The Slow Query Log
Протоколируются слишком длинные во временном диапазоне запросы.
Включение: log-slow-queries[=file_name].
Имя файла по умолчанию: host_name-slow.log.
Материалы, которые могут вас заинтересовать
- Oracle SQL Developer: Не работает dbms_output.put_line()
- День 1. Минимальный проект с использованием java + hibernate + mysql
- Grails. Включаем SQL Logging.
- Grails HSQL Database. Смотрим внутрь.
- Grails. Domain Class. Значения по умолчанию.
- Grails. Domain Class. Задаем имя таблицы.
- Websphere. Таймаут на транзакциях. Transaction has timed out after 120 second
- Так что же все-таки такое курсоры в базах данных и зачем они нужны?
- Ленивая инициализация или Lazy Initialization в Hibernate







Отправить комментарий