Как включить 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';
Ответ 4
Руководство MySQL - файл с медленным запросом-журналом
Это означает, что вы можете запустить следующее, чтобы установить медленный файл журнала (5.1.6):
set global slow_query_log_file = 'path';
Переменная slow_query_log просто контролирует, включена ли она или нет.
Ответ 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:
- Во время выполнения, как вы хотите сделать
- В вашем файле конфигурации (требуется перезагрузка)
Все, что вам действительно нужно сделать, это установить 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]()
Очень просто!