Spec-Zone.ru › MySQL 8.4

7.4.1 Выбор мест хранения логов запросов и медленных запросов

MySQL Server предоставляет гибкий контроль над местом вывода записей, генерируемых общим журналом запросов и журналом медленных запросов, если эти журналы включены. Возможными местами хранения записей журнала являются файлы или таблицы 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-8.4-en/log-destinations.html

Spec-Zone.ru

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