Как включить MySQL медленный журнал запросов без перезагрузки MySQL?

Я следил за инструкциями здесь: http://crazytoon.com/2007/07/23/mysql-changing-runtime-variables-with-out-restarting-mysql-server/, но, похоже, только устанавливает порог.

Мне нужно сделать что-нибудь еще, например, установить путь к файлу?

В соответствии с документами MySQL

If no file_name value is given for --log-slow-queries, the default name is 
host_name-slow.log. The server creates the file in the data directory unless 
an absolute path name is given to specify a different directory. 

Запуск

SHOW VARIABLES

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

ИЗМЕНИТЬ

Похоже, я использую серверную версию 5.0.77, поэтому мне нужно было сделать:

SET GLOBAL log_slow_queries = 1;

но я получаю: ОШИБКА 1238 (HY000): переменная 'log_slow_queries' является переменной только для чтения

Я предполагаю, что мне потребуется перезапустить сервер и установить log_slow_queries в моей конфигурации?

Ответ 1

Попробуйте SET GLOBAL slow_query_log = 'ON'; и, возможно, FLUSH LOGS;

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

Ответ 2

Для медленных запросов в версии < 5.1, для меня работала следующая конфигурация:

log_slow_queries=/var/log/mysql/slow-query.log
long_query_time=20
log_queries_not_using_indexes=YES

Также обратите внимание, чтобы разместить его в [mysqld] части конфигурационного файла и перезапустить mysqld.

Ответ 3

Найти журнал включен или нет?

SHOW VARIABLES LIKE '%log%';

Задайте журналы: -

SET GLOBAL general_log = 'ON'; 

SET GLOBAL slow_query_log = 'ON'; 

Ответ 5

Эти работы

SET GLOBAL LOG_SLOW_TIME = 1;
SET GLOBAL LOG_QUERIES_NOT_USING_INDEXES = ON;

Сломанный на моей установке 5.1.42

SET GLOBAL LOG_SLOW_QUERIES = ON;
SET GLOBAL SLOW_QUERY_LOG = ON;
set @@global.log_slow_queries=1;

http://bugs.mysql.com/bug.php?id=32565

Похоже, лучший способ сделать это - установить log_slow_time очень высоко, таким образом, "выключение" медленного журнала запросов. Понизьте log_slow_time, чтобы включить его. Используйте тот же трюк (установленный в положение OFF) для log_queries_not_using_indexes.

Ответ 6

Я думаю, проблема в том, что сервер MySQL имеет права на файл и может его редактировать.

Если вы можете получить доступ к файлу, попробуйте установить:
SET GLOBAL slow_query_log = 1;

Если нет, вы всегда можете "перезагрузить" сервер после изменения файла конфигурации. В linux обычно /etc/init.d/mysql reload

Ответ 7

Это должно работать на mysql > 5.5

ПОКАЖИТЕ ПЕРЕМЕННЫЕ ЛЮБЫЕ '% long%';

SET GLOBAL long_query_time = 1;

Ответ 8

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

Чтобы начать запись в таблицу вместо файла:

set global log_output = "TABLE";

Чтобы включить общий и медленный журнал запросов:

set global general_log = 1;
set global slow_query_log = 1;

Для просмотра журналов:

select * from mysql.slow_log;
select * from mysql.general_log;

Для получения дополнительной информации посетите эту ссылку

http://easysolutionweb.com/technology/mysql-server-logs/

Ответ 9

Есть два способа установить переменные сервера MySQL, начиная с 5.7:

  1. Во время выполнения, как вы хотите сделать
  2. В вашем файле конфигурации (требуется перезагрузка)

Все, что вам действительно нужно сделать, это установить slow_query_log в 1, как в:

SET GLOBAL slow_query_log = 1;

Вам не нужно указывать имя для файла журнала медленных запросов. По умолчанию это будет имя [host_name] -slow.log. Сервер создаст файл в каталоге данных, если не указывается абсолютное имя пути, чтобы указать другой каталог. Вы можете использовать "slow_query_log_file", чтобы указать имя файла журнала, то есть:

set slow_query_log_file = "C:\mylogfile.log"

Документы MySQL имеют всю информацию, необходимую для работы с журналом Slow Query.

Если вам нужен простой способ увидеть переменные и их значения, вы можете использовать такой инструмент, как Navicat for MySQL (или Premium). В Navicat вы можете искать системные переменные с помощью средства Server Monitor. Он доступен с помощью команды главного меню Инструменты.

В "Мониторе сервера" щелкните среднюю вкладку "Переменные" и прокрутите страницу вниз, чтобы просмотреть переменные сервера slow_query_log и slow_query_log_file в списке:

slow_query_log server variables in the Navicat

Очень просто!