Как включить функцию MySQL, которая регистрирует каждый оператор SQL-запроса, полученный от клиентов, и время отправки этого запроса? Могу ли я сделать это в phpmyadmin или NaviCat? Как мне проанализировать журнал?
252
Во-первых, помните, что этот файл журнала может быть очень большим на занятом сервере.
Для mysql <5.1.29:
Чтобы включить журнал запросов, поместить это в /etc/my.cnf
в [mysqld]
разделе
log = /path/to/query.log #works for mysql < 5.1.29
Кроме того, чтобы включить его из консоли MySQL
SET general_log = 1;
См. Http://dev.mysql.com/doc/refman/5.1/en/query-log.html.
Для MySQL 5.1.29+
В mysql 5.1.29+ эта log
опция устарела. Чтобы указать файл журнала и включить ведение журнала, используйте это в my.cnf в [mysqld]
разделе:
general_log_file = /path/to/query.log
general_log = 1
В качестве альтернативы, чтобы включить ведение журнала с консоли MySQL (необходимо также указать местоположение файла журнала или найти местоположение по умолчанию):
SET global general_log = 1;
Также обратите внимание, что есть дополнительные опции для регистрации только медленных запросов или тех, которые не используют индексы.
SET global general_log_file='c:/Temp/mysql.log';
SET global general_log = on;
SET global log_output = 'file';
Посмотрите на этот ответ на другой связанный вопрос. Он показывает, как включать, отключать и просматривать журналы на живых серверах без перезагрузки.
Войти все запросы в MySQL
Вот резюме:
Если вы не хотите или не можете перезапустить сервер MySQL, вы можете продолжить на своем работающем сервере следующим образом:
Создайте свои журнальные таблицы (см. Ответ )
Включите ведение журнала запросов в базе данных (обратите внимание, что строка 'таблица' должна быть помещена буквально, а не заменена каким-либо именем таблицы. Спасибо Николас Пикеринг )
источник
Я использую этот метод для регистрации, когда я хочу быстро оптимизировать различные загрузки страниц. Это маленький совет ...
Вход в СТОЛ
Затем вы можете выбрать из моей
mysql.general_log
таблицы, чтобы получить последние запросы.Затем я могу сделать что-то похожее
tail -f
на mysql.log, но с некоторыми уточнениями ...Это позволяет легко увидеть мои запросы, которые я могу попытаться сократить. Я использую интервал 8 секунд, чтобы получать только запросы, выполненные за последние 8 секунд.
источник
Это было уже в комментарии, но заслуживает отдельного ответа: без редактирования файлов конфигурации: в mysql, от имени root, выполните
Не забудьте потом выключить его:
источник
/tmp/
, он может оказаться где-то вроде/tmp/systemd-private-...-mariadb.service-.../tmp/
Вы можете отключить или включить общий журнал запросов (который регистрирует все запросы) с помощью
источник
Я также хотел включить файл журнала MySQL, чтобы увидеть запросы, и я решил это с помощью приведенных ниже инструкций
/etc/mysql/mysql.conf.d
и включите следующие строки
/etc/init.d/mysql restart
/var/log/mysql/
и проверить журналыисточник
источник
В Windows вы можете просто перейти на
Вставьте эту строку в my.ini
My.ini файл , наконец , выглядит следующим образом
источник
В версии MySQL 5.6 есть ошибка. Даже mysqld показывают как:
Действительно настройки читаются в следующем порядке:
Проверьте файл: «C: \ ProgramData \ MySQL \ MySQL Server 5.6 \ my.ini»
Надеюсь, это поможет кому-нибудь.
источник
для mysql> = 5.5 только для медленных запросов (1 секунда и более) my.cfg
источник
Чтобы включить журнал запросов в MAC Machine:
Откройте следующий файл:
Установите URL журнала запросов в разделе «mysqld» следующим образом:
Немногие машины не регистрируют запросы должным образом, так что в этом случае вы можете включить его из консоли MySQL
источник
Не совсем ответ на вопрос, потому что у вопроса уже есть отличные ответы. Это дополнительная информация. Включение general_log действительно влияет на производительность MySQL. Я
general_log =1
случайно ушел на рабочий сервер и часами выяснял, почему производительность не сравнима с аналогичной настройкой на других серверах. Затем я обнаружил, что это объясняет влияние включения общего журнала. http://www.fromdual.com/general_query_log_vs_mysql_performance .Суть истории, не помещайте
general_log=1
в.cnf
файл. Вместо этого используйтеset global general_log =1
на короткое время только для того, чтобы войти в систему, чтобы выяснить, что вы пытаетесь выяснить, и затем отключите ее.источник
В phpMyAdmin 4.0 вы идете в Статус> Монитор. Там вы можете включить медленный журнал запросов и общий журнал, посмотреть текущий монитор, выбрать часть графика, посмотреть связанные запросы и проанализировать их.
источник
Мне пришлось сбросить и воссоздать общий журнал в одной точке. Во время воссоздания наборы символов испортились, и в итоге я обнаружил эту ошибку в логах:
[ERROR] Incorrect definition of table mysql.general_log: expected the type of column 'user_host' at position 1 to have character set 'utf8' but found character set 'latin1'
Так что, если стандартный ответ «проверить, чтобы убедиться, что регистрация включена» не работает, проверьте, чтобы убедиться, что ваши поля имеют правильный набор символов.
источник