Опубликован: 16.04.2007 | Уровень: специалист | Доступ: платный
Лекция 8:

Файлы журналов MySQL

< Лекция 7 || Лекция 8: 123 || Лекция 9 >

Журнал медленных запросов

При запуске с параметром -log-slow-queries[=file_name] mysqld создает файл журнала, в котором сохраняются данные обо всех командах SQL, на выполнение которых ушло больше времени, чем указано в значении параметра long_query_time. Время, уходящее на первоначальную блокировку таблиц, не входит во время исполнения запроса.

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

Если имя файла не задано, по умолчанию ему дается имя хоста с окончанием -slow.log. Если файлу присвоено имя, не содержащее пути доступа к нему, этот файл сохраняется в каталоге с данными.

Этот журнал позволяет определить запросы, на выполнение которых ушло слишком много времени, — а, значит, и обнаружить основных кандидатов на оптимизацию. Конечно, при достижении журналом значительного объема эта задача усложняется. В таком случае журнал можно пропустить через команду mysqldumpslow и получить краткий отчет о запросах, попавших в список.

При использовании ключа -log-long-format на экран выводятся и запросы, не работающие с индексами.

Обслуживание файлов журналов

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

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

В системе Linux ( Red Hat ) для этого можно использовать сценарий mysql-log-rotate. При установке MySQL с дистрибутива RPM этот сценарий устанавливается автоматически. Обратите внимание: использовать журнал для репликации необходимо с максимальной аккуратностью!

В других ОС вы можете самостоятельно создать небольшой сценарий для обработки журналов, запускаемый из cron.

Заставить MySQL создать новый файл журнала можно с помощью команды mysqladmin flush-logs или SQL-команды FLUSH LOGS. При работе с MySQL версии 3.21 пользоваться можно только командой mysqladmin refresh.

Эта команда выполняет следующие действия.

  • Если используется стандартный журнал ( -log ) или журнал медленных запросов ( -log-slow-queries ), файл журнала ( mysql.log и `hostname`-slow.log по умолчанию) закрывается и открывается вновь.
  • Если используется журнал обновлений ( -log-update ), файл журнала закрывается, после чего создается новый файл с большим номером.

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

shell> cd mysql-data-directory
shell> mv mysql.log mysql.old
shell> mysqladmin flush-logs

а затем сделать резервную копию файла mysql.old и удалить его.

< Лекция 7 || Лекция 8: 123 || Лекция 9 >
Александра Каева
Александра Каева
Дмитрий Черепенин
Дмитрий Черепенин

Какого года данный курс?

Анна Елисеева
Анна Елисеева
Россия, Великий Новгород, Ногородский государственный университет имени Ярослава Мудрого, 2003
Эмиль Фернандо
Эмиль Фернандо
Россия