Запись логов в таблицы
По умолчанию все логи отключены или записываются в файлы. Лог общих запросов и лог медленных запросов также могут быть записаны в специальные таблицы в базе данных mysql. Во время запуска записи всегда будут производиться в файлы.
Обратите внимание, что вывод EXPLAIN будет записан только в том случае, если лог медленных запросов записывается в файл, а не в таблицу.
Для записи логов в таблицы используется переменная сервера log_output. Допустимые значения — FILE, TABLE и NONE. Можно указать несколько значений, разделенных запятыми, чтобы записать логи как в таблицы, так и в файлы. NONE отключает ведение логов и имеет приоритет над другими значениями.
Итак, для записи логов в таблицы можно использовать следующие настройки:
SET GLOBAL log_output = 'TABLE'; SET GLOBAL log_output = 'FILE,TABLE';
Лог общих запросов будет записан в таблицу general_log, а лог медленных запросов — в таблицу slow_log. Для этих специальных таблиц поддерживается ограниченный набор операций. Например, прямые операторы DML (например, INSERT) над этими таблицами завершатся ошибкой, подобной следующей:
ERROR 1556 (HY000): You can't use locks with log tables.
Для записи данных в таблицы используйте FLUSH TABLES вместо FLUSH LOGS.
Для очистки содержимого таблиц логов можно использовать TRUNCATE TABLE.
Таблицы логов по умолчанию используют движок хранения CSV. Это позволяет внешней программе читать файлы при необходимости: обычные CSV-файлы хранятся в подкаталоге mysql в каталоге данных. Однако этот движок медленный, так как не поддерживает индексы, поэтому вы можете преобразовать таблицы в MyISAM (но не в другие движки хранения). Для этого сначала временно отключите ведение логов:
SET GLOBAL general_log = 'OFF'; ALTER TABLE mysql.general_log ENGINE = MyISAM; ALTER TABLE mysql.slow_log ENGINE = MyISAM; SET GLOBAL general_log = @old_log_state;
CHECK TABLE и CHECKSUM TABLE поддерживаются.
CREATE TABLE поддерживается. ALTER TABLE, RENAME TABLE и DROP TABLE поддерживаются при отключенных логах, но таблицы логов не могут быть разграничены.
Содержимое таблиц логов не регистрируется в бинарном логе, поэтому не может быть реплицировано.
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/writing-logs-into-tables/