Spec-Zone.ru › MySQL 5.7

5.4.1 Выбор мест хранения журнала запросов и журнала медленных запросов

Сервер MySQL предоставляет гибкий контроль над местом хранения данных, записываемых в общий журнал запросов и журнал медленных запросов, если эти журналы включены. Возможные места хранения записей журнала — это файлы журналов или таблицы general_log и slow_log в базе данных системы mysql. Можно выбрать вывод в файлы, в таблицы или в оба места.

  • Управление журналом при запуске сервера

  • Управление журналом во время работы

  • Преимущества и характеристики таблиц журнала

Управление журналом при запуске сервера

Система переменная log_output определяет место хранения вывода журнала. Установка этой переменной сама по себе не включает журналы; они должны быть включены отдельно.

  • Если log_output не указана при запуске, по умолчанию место хранения журнала — FILE.

  • Если log_output указана при запуске, её значение представляет собой список одного или нескольких слов, разделённых запятыми, выбранных из TABLE (запись в таблицы), FILE (запись в файлы) или NONE (не записывать в таблицы или файлы). NONE, если присутствует, имеет приоритет перед другими спецификаторами.

Переменная системы general_log управляет записью в общий журнал запросов для выбранных мест хранения журнала. Если задана при запуске сервера, general_log принимает необязательный аргумент 1 или 0 для включения или отключения журнала. Чтобы указать имя файла, отличное от значения по умолчанию для файлового логирования, установите переменную general_log_file. Аналогично, переменная slow_query_log управляет записью в журнал медленных запросов для выбранных мест хранения, а установка slow_query_log_file определяет имя файла для файлового логирования. Если любой из журналов включен, сервер открывает соответствующий файл журнала и записывает в него сообщения о запуске. Однако дальнейшая запись запросов в файл не происходит, если не выбрано место хранения FILE.

Примеры:

  • Чтобы записывать записи общего журнала запросов в таблицу журнала и в файл журнала, используйте --log_output=TABLE,FILE для выбора обоих мест хранения журнала и --general_log для включения общего журнала запросов.

  • Чтобы записывать записи общего и журнала медленных запросов только в таблицы журнала, используйте --log_output=TABLE для выбора таблиц как места хранения журнала и --general_log и --slow_query_log для включения обоих журналов.

  • Чтобы записывать записи журнала медленных запросов только в файл журнала, используйте --log_output=FILE для выбора файлов как места хранения журнала и --slow_query_log для включения журнала медленных запросов. В этом случае, поскольку по умолчанию место хранения журнала — FILE, можно опустить установку log_output.

Управление журналом во время работы

Системные переменные, связанные с таблицами и файлами журналов, обеспечивают управление журналом во время работы:

  • Переменная log_output указывает текущее место хранения журнала. Её можно изменить во время работы, чтобы изменить место хранения.

  • Переменные general_log и slow_query_log указывают, включен (ON) или отключен (OFF) общий журнал запросов и журнал медленных запросов. Вы можете установить эти переменные во время работы, чтобы контролировать включение журналов.

  • Переменные general_log_file и slow_query_log_file указывают имена файлов общего журнала запросов и журнала медленных запросов. Вы можете установить эти переменные при запуске сервера или во время работы, чтобы изменить имена файлов журнала.

  • Чтобы отключить или включить общий журнал запросов для текущей сессии, установите переменную сессии sql_log_off в значение ON или OFF. (Это предполагает, что сам общий журнал запросов включён.)

Преимущества и характеристики таблиц логов

Использование таблиц для вывода логов обеспечивает следующие преимущества:

  • Записи лога имеют стандартный формат. Для отображения текущей структуры таблиц логов используйте следующие операторы:

    SHOW CREATE TABLE mysql.general_log;
    SHOW CREATE TABLE mysql.slow_log;
    
  • Содержание логов доступно через операторы SQL. Это позволяет использовать запросы, выбирающие только те записи логов, которые удовлетворяют определённым критериям. Например, для выбора записей логов, связанных с конкретным клиентом (что может быть полезно для выявления проблемных запросов этого клиента), проще использовать таблицу логов, чем файл логов.

  • Логи доступны удалённо через любой клиент, который может подключиться к серверу и выполнить запросы (если у клиента есть соответствующие привилегии на таблицы логов). Не нужно подключаться к хосту сервера и напрямую обращаться к файловой системе.

Реализация таблиц логов имеет следующие характеристики:

  • В целом, основная цель таблиц логов — предоставить пользователям интерфейс для наблюдения за выполнением сервера во время работы, а не для вмешательства в его выполнение.

  • CREATE TABLE, ALTER TABLE и DROP TABLE являются допустимыми операциями для таблицы логов. Для ALTER TABLE и DROP TABLE, таблица логов не может использоваться и должна быть отключена, как описано далее.

  • По умолчанию таблицы логов используют движок хранения CSV, который записывает данные в формате CSV (значения, разделённые запятыми). Для пользователей, имеющих доступ к файлам .CSV, содержащим данные таблиц логов, файлы легко импортируются в другие программы, такие как электронные таблицы, которые могут обрабатывать входные данные в формате CSV.

    Таблицы логов могут быть изменены для использования движка хранения MyISAM. Вы не можете использовать ALTER TABLE для изменения таблицы логов, которая используется. Сначала необходимо отключить лог. Движки, отличные от CSV или MyISAM, не допускаются для таблиц логов.

    Таблицы логов и ошибки «слишком много открытых файлов». Если вы выбираете TABLE в качестве назначения логов, и таблицы логов используют движок хранения CSV, вы можете обнаружить, что повторное отключение и включение общего журнала запросов или журнала медленных запросов во время работы приводит к большому количеству открытых дескрипторов файла для файла .CSV, что может привести к ошибке «слишком много открытых файлов». Чтобы обойти эту проблему, выполните FLUSH TABLES или убедитесь, что значение open_files_limit больше, чем значение table_open_cache_instances.

  • Для отключения ведения журнала, чтобы вы могли изменить (или удалить) таблицу логов, можно использовать следующую стратегию. В примере используется общий журнал запросов; процедура для журнала медленных запросов аналогична, но использует таблицу slow_log и переменную системы slow_query_log.

    SET @old_log_state = @@GLOBAL.general_log;
    SET GLOBAL general_log = 'OFF';
    ALTER TABLE mysql.general_log ENGINE = MyISAM;
    SET GLOBAL general_log = @old_log_state;
    
  • TRUNCATE TABLE — допустимая операция для таблицы логов. Она может использоваться для удаления записей логов.

  • RENAME TABLE — допустимая операция для таблицы логов. Вы можете атомарно переименовать таблицу логов (например, для выполнения ротации логов) с помощью следующей стратегии:

    USE mysql;
    DROP TABLE IF EXISTS general_log2;
    CREATE TABLE general_log2 LIKE general_log;
    RENAME TABLE general_log TO general_log_backup, general_log2 TO general_log;
    
  • CHECK TABLE — допустимая операция для таблицы логов.

  • LOCK TABLES не может использоваться для таблицы логов.

  • INSERT, DELETE и UPDATE не могут использоваться для таблицы логов. Эти операции разрешены только внутри самого сервера.

  • FLUSH TABLES WITH READ LOCK и состояние переменной системы read_only не влияют на таблицы логов. Сервер всегда может записывать в таблицы логов.

  • Записи, записанные в таблицы логов, не записываются в бинарный журнал и, следовательно, не реплицируются на реплики.

  • Для сброса таблиц логов или файлов логов используйте соответственно FLUSH TABLES или FLUSH LOGS.

  • Разбиение таблиц логов запрещено.

  • Сводка mysqldump включает операторы для восстановления этих таблиц, чтобы они не отсутствовали после перезагрузки файла сводки. Содержимое таблиц логов не экспортируется.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/log-destinations.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API