Практика
Задача: включить ведение логов (журнала) запросов, кладя их (логи) в системную базу данных самого сервера MySQL. Т.е. писаться будут все запросы, проходящие через этот сервер СУБД.
Ведение журнала (лога) запросов в базе данных MySQL сервера является важным аспектом администрирования и мониторинга баз данных. Это позволяет записывать и анализировать запросы, выполняемые в базе данных, и может быть полезным для различных целей:
Отладка и поиск ошибок: Ведение лога запросов помогает выявлять и исправлять ошибки в SQL-запросах. Если запросы выдают нежелательные результаты или приводят к проблемам с производительностью, логи могут помочь определить, где возникла проблема.
Оптимизация производительности: Анализ логов запросов может помочь оптимизировать производительность базы данных. Вы можете выявить медленные запросы и попытаться улучшить их выполнение, например, добавив индексы или переписав запросы.
Мониторинг активности: Журнал запросов позволяет отслеживать активность пользователей в базе данных. Это полезно для обнаружения несанкционированного доступа или неправомерных действий.
Анализ безопасности: С помощью логов можно выявить попытки взлома или несанкционированный доступ к базе данных. Это помогает обеспечивать безопасность данных.
Аудит и соблюдение требований: В некоторых случаях, особенно в корпоративной среде, ведение логов запросов обязательно для соблюдения требований законодательства или стандартов безопасности.
Перед изменением вы можите посмотреть перечисленные ниже переменные для того чтобы понять включены ли уже логи?
Для решения подобных задач открываем файл my.cnf сервера MySQL и вносим в конец секции [mysqld] следующие изменения::
Например, вы можете использовать параметр general_log
для включения общего лога запросов или slow_query_log
для логирования медленных запросов.
... # Вести лог "долгих" запросов в базе slow-log slow-query-log # Выводить лог в базу данных log_output = TABLE # Время (в секундах), которое должен длиться запрос, чтобы считаться "долгим" long_query_time = 1 # Вести лог записей в журнале general-log general-log # Подтирать логи за (дней) - т.е. автоматически ротировать таблицу логов expire_logs_days = 1
Установите путь и имя файла лога: Выберите место и имя файла, в котором будут храниться логи запросов. Укажите этот путь и имя в конфигурационном файле.
Перезапустите сервер: После внесения изменений в конфигурацию, перезапустите MySQL сервер, чтобы активировать логирование.
Мониторинг и анализ: После включения логирования запросов, следите за логами, анализируйте их и предпринимайте необходимые действия на основе полученных данных.
Как смотреть эти лолги?
Логи по конфигу выше хранятся в 2х таблицах системной базы данных MySQL.
Просмотреть общий журнал можно командой:
mysql> SELECT * FROM mysql.general_log ORDER BY event_time DESC;
А из журнала "тяжелых" запросов:
mysql> SELECT * FROM mysql.slow_log ORDER BY event_time DESC;
Учитывая, что логи могут занимать дополнительное дисковое пространство и влиять на производительность, важно балансировать объем информации, которую вы записываете, и не забывать регулярно архивировать и очищать старые логи.
Комментарии
Оставить комментарий
Базы данных - MySql (Maria DB)
Термины: Базы данных - MySql (Maria DB)