Spec-Zone.ru › MySQL 8.4

7.4.2.1 Настройка журнала ошибок

В MySQL 8.4 ведение журнала ошибок использует архитектуру компонентов MySQL, описанную в разделе 7.5 «Компоненты MySQL». Подсистема журнала ошибок состоит из компонентов, выполняющих фильтрацию и запись событий журнала, а также системной переменной, которая настраивает, какие компоненты загружать и включать для достижения желаемого результата ведения журнала.

В этом разделе рассматривается, как загрузить и включить компоненты для ведения журнала ошибок. Инструкции, специфичные для фильтров журнала, см. в разделе 7.4.2.4 «Типы фильтрации журнала ошибок». Инструкции, специфичные для приемников JSON и системного журнала, см. в разделе 7.4.2.7 «Ведение журнала ошибок в формате JSON» и разделе 7.4.2.8 «Ведение журнала ошибок в системном журнале». Дополнительные сведения обо всех доступных компонентах журнала см. в разделе 7.5.3 «Компоненты журнала ошибок».

Компонентно-ориентированное ведение журнала ошибок предоставляет следующие возможности:

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

  • События журнала, которые выводятся компонентами приемников (запись). Можно включить несколько компонентов приемников для записи вывода журнала ошибок в несколько пунктов назначения.

  • Встроенные компоненты фильтрации и приемника, которые реализуют стандартный формат журнала ошибок.

  • Загружаемый приемник, который позволяет вести журнал в формате JSON.

  • Загружаемый приемник, который позволяет вести журнал в системном журнале.

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

Настройка журнала ошибок описана в следующих разделах этого раздела:

  • По умолчанию настройка журнала ошибок

  • Способы настройки журнала ошибок

  • Неявная настройка журнала ошибок

  • Явная настройка журнала ошибок

  • Изменение способа настройки журнала ошибок

  • Поиск и устранение проблем с настройкой

  • Настройка нескольких приемников журнала

  • Поддержка Performance Schema для приемников журнала

По умолчанию настройка журнала ошибок

Системная переменная log_error_services управляет загрузкой загружаемых компонентов журнала и включением компонентов журнала для ведения журнала ошибок. По умолчанию log_error_services имеет значение, показанное здесь:

mysql> SELECT @@GLOBAL.log_error_services;
+----------------------------------------+
| @@GLOBAL.log_error_services            |
+----------------------------------------+
| log_filter_internal; log_sink_internal |
+----------------------------------------+

Это значение указывает, что события журнала сначала проходят через компонент фильтрации log_filter_internal, а затем через компонент приемника log_sink_internal, оба из которых являются встроенными компонентами. Фильтр изменяет события журнала, которые видят компоненты, указанные позже в значении log_error_services. Приемник — это пункт назначения для событий журнала. Как правило, приемник обрабатывает события журнала в сообщения журнала с определенным форматом и записывает эти сообщения в соответствующий вывод, такой как файл или системный журнал.

Сочетание log_filter_internal и log_sink_internal реализует стандартное поведение фильтрации и вывода журнала ошибок. Действие этих компонентов зависит от других параметров сервера и системных переменных:

  • Пункт назначения вывода определяется параметром --log-error (и, в Windows, --pid-file и --console). Они определяют, записывать ли сообщения об ошибках в консоль или файл, и, если в файл, имя файла журнала ошибок. См. раздел 7.4.2.2 «Настройка пункта назначения стандартного журнала ошибок».

  • Системные переменные log_error_verbosity и log_error_suppression_list влияют на типы событий журнала, которые log_filter_internal разрешает или подавляет. См. раздел 7.4.2.5 «Фильтрация журнала ошибок на основе приоритета (log_filter_internal)».

При настройке log_error_services, обратите внимание на следующие особенности:

  • Список компонентов журнала может быть разделен точками с запятой или запятыми, необязательно с пробелами. В данном задании нельзя использовать оба разделителя (точку с запятой и запятую). Порядок компонентов важен, так как сервер выполняет компоненты в указанном порядке.

  • Последним компонентом в значении log_error_services не может быть фильтр. Это ошибка, так как любые изменения, которые он внес бы в события, не повлияют на вывод:

    mysql> SET GLOBAL log_error_services = 'log_filter_internal';
    ERROR 1231 (42000): Variable 'log_error_services' can't be set to the value
    of 'log_filter_internal'
    

    Чтобы исправить проблему, добавьте приемник в конец значения:

    mysql> SET GLOBAL log_error_services = 'log_filter_internal; log_sink_internal';
    
  • Порядок компонентов, указанных в log_error_services, имеет значение, особенно в отношении относительного порядка фильтров и приемников. Рассмотрим это значение log_error_services:

    log_filter_internal; log_sink_1; log_sink_2
    

    В этом случае события журнала передаются встроенному фильтру, затем первому приемнику, а затем второму приемнику. Оба приемника получают отфильтрованные события журнала.

    Сравните это со значением log_error_services:

    log_sink_1; log_filter_internal; log_sink_2
    

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

Методы конфигурации журнала ошибок

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

Существует два метода конфигурации журнала ошибок: неявный и явный. Рекомендуется выбрать один метод конфигурации и использовать его исключительно. Использование обоих методов может привести к предупреждениям при запуске. Дополнительную информацию см. в разделе Устранение неполадок при конфигурации.

  • Неявная конфигурация журнала ошибок

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

    • Компоненты журнала загружаются на ранней стадии процесса запуска, до движка хранения InnoDB, что делает информацию, записанную в журнал, доступной раньше.

    • Это предотвращает потерю буферизованной информации журнала в случае сбоя во время запуска.

    • Установка компонентов журнала ошибок с помощью INSTALL COMPONENT не требуется, что упрощает конфигурацию журнала ошибок.

    Чтобы использовать этот метод, см. Неявную конфигурацию журнала ошибок.

  • Явная конфигурация журнала ошибок

    Примечание

    Этот метод конфигурации поддерживается для обратной совместимости. Рекомендуется использовать неявный метод конфигурации.

    Этот метод конфигурации требует загрузки компонентов журнала ошибок с помощью INSTALL COMPONENT, а затем настройки log_error_services для активации компонентов журнала. INSTALL COMPONENT добавляет компонент в таблицу mysql.component (таблица InnoDB), и компоненты, которые необходимо загрузить при запуске, считываются из этой таблицы, которая доступна только после инициализации InnoDB.

    Информация, записанная в журнал, буферизуется во время последовательности запуска, пока инициализируется движок хранения InnoDB, что иногда затягивается операциями, такими как восстановление и обновление словаря данных, которые происходят во время последовательности запуска InnoDB.

    Чтобы использовать этот метод, см. Явную конфигурацию журнала ошибок.

Неявная конфигурация журнала ошибок

В этом разделе описано, как неявным образом загрузить и активировать компоненты журнала ошибок с использованием log_error_services. Обсуждение методов конфигурации журнала ошибок см. в разделе Методы конфигурации журнала ошибок.

Чтобы неявным образом загрузить и активировать компоненты журнала ошибок:

  1. Перечислите компоненты журнала ошибок в значении log_error_services.

    Для загрузки и активации компонентов журнала ошибок при запуске сервера установите log_error_services в файле параметров. Следующий пример настраивает использование JSON-потока журнала (log_sink_json) в дополнение к встроенному фильтру и потоку журнала (log_filter_internal, log_sink_internal).

    [mysqld]
    log_error_services='log_filter_internal; log_sink_internal; log_sink_json'
    
    Примечание

    Для использования JSON-потока журнала (log_sink_syseventlog) вместо стандартного потока (log_sink_internal) необходимо заменить log_sink_internal на log_sink_json.

    Для немедленной загрузки и активации компонента и последующих перезапусков установите log_error_services с помощью SET PERSIST:

    SET PERSIST log_error_services = 'log_filter_internal; log_sink_internal; log_sink_json';
    
  2. Если компонент журнала ошибок предоставляет системные переменные, которые должны быть установлены для успешной инициализации компонента, присвойте этим переменным соответствующие значения. Вы можете установить эти переменные в файле параметров или с помощью SET PERSIST.

    Важно

    При реализации неявной конфигурации сначала установите log_error_services для загрузки компонента и экспонирования его системных переменных, а затем установите переменные компонента после этого. Этот порядок конфигурации требуется независимо от того, выполняется ли присвоение переменных в командной строке, в файле параметров или с помощью SET PERSIST.

Чтобы отключить компонент журнала, удалите его из значения log_error_services. Также удалите все связанные настройки переменных компонента, которые вы определили.

Примечание

Неявная загрузка компонента журнала с использованием log_error_services не влияет на таблицу mysql.component. Он не добавляет компонент в таблицу mysql.component, а также не удаляет компонент, ранее установленный с помощью INSTALL COMPONENT, из таблицы mysql.component.

Явное конфигурирование журнала ошибок

Данная процедура описывает, как явно загрузить и включить компоненты ведения журнала ошибок, загрузив компоненты с помощью INSTALL COMPONENT, а затем включив их с помощью log_error_services. Для обсуждения методов конфигурации журнала ошибок см. Методы конфигурации журнала ошибок.

Для явного загрузки и включения компонентов ведения журнала ошибок:

  1. Загрузите компонент с помощью INSTALL COMPONENT (если он не встроен или не загружен). Например, для загрузки приемника JSON-логирования выполните следующую команду:

    INSTALL COMPONENT 'file://component_log_sink_json';
    

    Загрузка компонента с помощью INSTALL COMPONENT регистрирует его в системе mysql.component, чтобы сервер автоматически загружал его при последующих запусках после инициализации InnoDB.

    Используемый URN при загрузке компонента журнала с помощью INSTALL COMPONENT — это имя компонента, предваряемое file://component_. Например, для компонента log_sink_json соответствующий URN — file://component_log_sink_json. Список URN для компонентов журнала ошибок см. в разделе 7.5.3 «Компоненты журнала ошибок».

  2. Если компонент журнала ошибок использует системные переменные, которые должны быть заданы для успешной инициализации компонента, присвойте соответствующие значения этим переменным. Вы можете задать эти переменные в файле опций или с помощью SET PERSIST.

  3. Включите компонент, указав его в значении log_error_services.

    Важно

    При явном загрузке компонентов журнала с помощью INSTALL COMPONENT не сохраняйте и не задавайте log_error_services в файле опций, который подразумевает загрузку компонентов журнала при запуске. Вместо этого включайте компоненты журнала во время выполнения с помощью оператора SET GLOBAL.

    Следующий пример настраивает использование приемника JSON-логирования (log_sink_json) в дополнение к встроенному фильтру и приемнику журнала (log_filter_internal, log_sink_internal).

    SET GLOBAL log_error_services = 'log_filter_internal; log_sink_internal; log_sink_json';
    
    Примечание

    Для использования приемника JSON-логирования (log_sink_syseventlog) вместо стандартного приемника (log_sink_internal), замените log_sink_internal на log_sink_json.

Для отключения компонента журнала, удалите его из значения log_error_services. Затем, если компонент загружаемый, и вы хотите его разгрузить, используйте UNINSTALL COMPONENT. Также удалите все связанные с ним настройки переменных компонента.

Попытки использовать UNINSTALL COMPONENT для разгрузки загружаемого компонента, который всё ещё указан в значении log_error_services, приведут к ошибке.

Изменение метода конфигурации журнала ошибок

Если вы ранее загружали компоненты журнала ошибок явно с помощью INSTALL COMPONENT и хотите переключиться на неявную конфигурацию, как описано в Неявной конфигурации журнала ошибок, рекомендуются следующие шаги:

  1. Верните log_error_services к его значению по умолчанию.

    SET GLOBAL log_error_services = 'log_filter_internal,log_sink_internal';
  2. Используйте UNINSTALL COMPONENT для удаления ранее установленных загружаемых компонентов логирования. Например, если вы ранее установили приемник JSON-логирования, удалите его так:

    UNINSTALL COMPONENT 'file://component_log_sink_json';
    
  3. Удалите все настройки переменных компонента для удалённого компонента. Например, если переменные компонента были заданы в файле опций, удалите эти настройки из файла. Если переменные компонента были заданы с помощью SET PERSIST, используйте RESET PERSIST для сброса настроек.

  4. Выполните шаги, описанные в Неявной конфигурации журнала ошибок для повторной реализации конфигурации.

Если вам нужно перейти от неявной конфигурации к явной, выполните следующие шаги:

  1. Верните log_error_services к значению по умолчанию, чтобы разгрузить неявные компоненты журнала.

    SET GLOBAL log_error_services = 'log_filter_internal,log_sink_internal';
  2. Удалите все настройки переменных компонентов, связанные с удалёнными компонентами. Например, если переменные компонентов были заданы в файле опций, удалите эти настройки из файла. Если переменные компонентов были заданы с помощью SET PERSIST, используйте RESET PERSIST для сброса настроек.

  3. Перезапустите сервер, чтобы удалить компоненты журнала, которые были загружены неявно.

  4. Следуйте инструкциям в Явной конфигурации журнала ошибок для повторной реализации конфигурации.

Устранение неполадок конфигурации

Компоненты журнала, перечисленные в значении log_error_services при запуске, загружаются неявно на ранней стадии запуска MySQL Server. Если компонент журнала был загружен ранее с помощью INSTALL COMPONENT, сервер пытается загрузить компонент позже в последовательности запуска, что приводит к предупреждению Невозможно загрузить компонент из указанного URN: 'file://component_component_name'.

Вы можете проверить это предупреждение в журнале ошибок или запросив таблицу Performance Schema error_log с помощью следующего запроса:

SELECT error_code, data
  FROM performance_schema.error_log
 WHERE data LIKE "%'file://component_%"
   AND error_code="MY-013129" AND data LIKE "%MY-003529%";

Для предотвращения этого предупреждения следуйте инструкциям в Методе изменения конфигурации журнала ошибок, чтобы настроить конфигурацию журнала ошибок. Нужно использовать либо явную, либо неявную конфигурацию журнала ошибок, но не обе одновременно.

Аналогичная ошибка возникает при попытке явной загрузки компонента, который был загружен неявно при запуске. Например, если log_error_services содержит компонент JSON-приёмника журнала, этот компонент загружается неявно при запуске. Попытка явной загрузки того же компонента позже возвращает эту ошибку:

mysql> INSTALL COMPONENT 'file://component_log_sink_json';
ERROR 3529 (HY000): Cannot load component from specified URN: 'file://component_log_sink_json'.
Настройка нескольких приемников журнала

Возможна настройка нескольких приемников журналов, что позволяет отправлять выходные данные на несколько пунктов назначения. Для включения приемника JSON-логирования в дополнение к (а не вместо) стандартного приемника задайте значение log_error_services следующим образом:

SET GLOBAL log_error_services = 'log_filter_internal; log_sink_internal; log_sink_json';

Для возврата к использованию только стандартного приемника и разгрузки системного приемника журнала, выполните эти команды:

SET GLOBAL log_error_services = 'log_filter_internal; log_sink_internal;
UNINSTALL COMPONENT 'file://component_log_sink_json';
Поддержка приемника журнала в Performance Schema

Если включенные компоненты журнала включают приемник, поддерживающий Performance Schema, события, записанные в журнал ошибок, также записываются в таблицу Performance Schema error_log. Это позволяет анализировать содержимое журнала ошибок с помощью запросов SQL. В настоящее время традиционный log_sink_internal и JSON-формат log_sink_json приемники поддерживают эту функциональность. См. Раздел 29.12.22.2, «Таблица error_log».

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

Spec-Zone.ru

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