Вы также можете регистрировать только медленные запросы, используя --log-slow-queriesопцию вместо --log. По умолчанию запросы, которые занимают 10 секунд или дольше, считаются медленными, вы можете изменить это, указав long_query_timeколичество секунд, которое должен выполнить запрос до регистрации.
Это должно быть само собой разумеется, но если оставить это включенным в производственной коробке, то это очень быстро станет неинтересным. g
ceejayoz
6
Если у вас есть проблемы с включением регистрации таким образом, сомневайтесь, что пользователь mysql может записать в соответствующее местоположение файла.
Джон Топпер
3
Можно ли регистрировать запросы только по 1 дБ / таблице?
Темуджин
2
@Temujin phpmyadmin теперь имеет опцию «отслеживания» для таблиц, в которой вы указываете журнал («версия»), и он будет вести учет запросов, влияющих на него, с информацией о времени и всем запросе.
gadget00
3
Этот принятый ответ следует удалить или отредактировать, чтобы отразить тот факт, что он не работает с MySQL 5.6. +.
итопоп
233
( Примечание : для mysql-5.6 + это не сработает. Есть решение, которое применимо к mysql-5.6 +, если вы прокрутите вниз или нажмете здесь .)
Если вы не хотите или не можете перезапустить сервер MySQL, вы можете продолжить на своем работающем сервере следующим образом:
Создайте свои журнальные таблицы в mysqlбазе данных
Я не уверен, верно ли это для каждой версии MySQL (я на 5.5), но мне не нужно было создавать таблицы. Я следовал тому же совету за исключением создания таблиц, который упоминается здесь: stackoverflow.com/a/678310/135101
Тайлер Кольер
Может быть, он уже был создан по той или иной причине, @TylerCollier
Александр
3
Следует отметить, что CREATE TABLEкоманды должны (если таблицы еще не существуют) выполняться в mysqlбазе данных, а не в любых пользовательских базах данных. Возможно, операторы SQL можно обновить, чтобы отразить это.
Роберт Россманн
2
Для просмотра журнала SELECT * FROM mysql.general_log order by (event_time) descбудет лучше. просто говорю. :-)
Винрав
Не соглашайтесь с примечанием - с версией сервера 5.6.37 работает полностью корректно. Спасибо.
Дмитрий Ольховский
215
Помимо того, что я наткнулся здесь, выполнение следующего было самым простым способом вывести запросы в файл журнала без перезапуска
SET global log_output ='FILE';SET global general_log_file='/Applications/MAMP/logs/mysql_general.log';SET global general_log =1;
Абсолютно люблю это, работает для существующих и новых соединений в БД
Carlton
1
Было несколько записей статистики - не уверен, что это такое, но в остальном работает очень хорошо.
Snowcrash
Чтобы это работало, ваш пользователь должен иметь привилегию SUPER, которая является глобальной привилегией БД и поэтому не может быть ограничена конкретными схемами или таблицами:GRANT SUPER ON *.* TO user1@localhost
RobM
Я бы подтвердил это не раз, если бы мог, у меня есть закладка, указывающая здесь :) Большое спасибо!
RESI
125
Топ ответ не работает в MySQL 5.6+. Используйте это вместо:
Если вы использовали его, можете ли вы сказать мне о влиянии на производительность вышеупомянутого, и было бы разумно включить ведение журнала таким образом?
Рамеш Парик
1
Влияние производительности Ramesh на 5-15% снижается. Более подробная информация здесь percona.com/blog/2009/02/10/…
Firze
1
Я не понимаю, почему Mysql 5.6 не позволяет установить файл журнала из запросов? Как регистрировать все запросы в MySQL 5.6 и более поздних версиях, когда у вас нет доступа к дереву каталогов сервера, а только phpMyAdmin?
Вики Дев
перезапустите службу mysql из панели управления xampp после этих изменений.
Paramjeet
Это работало для меня в моей локальной среде Xampp Apache, но мне все равно пришлось включить вход через phpMyAdmin. Кроме того, он не мог найти файл в папке / usr / log и не создавал его, но он работал просто отличноgeneral_log_file=filename.log
JoeP
36
Включить журнал для таблицы
mysql>SET GLOBAL general_log ='ON';
mysql>SET global log_output ='table';
5.2.1. Выбор общих выходных данных для журнала запросов и медленных запросов
Начиная с MySQL 5.1.6, MySQL Server обеспечивает гибкий контроль над назначением вывода в общий журнал запросов и медленный журнал запросов, если эти журналы включены. Возможные места назначения для записей журнала - файлы журнала или таблицы general_log и slow_log в базе данных mysql.
$ uname -a
Darwin Raphaels-MacBook-Pro.local 15.6.0 Darwin Kernel Version 15.6.0: Thu Jun 2120:07:40 PDT 2018; root:xnu-3248.73.11~1/RELEASE_X86_64 x86_64
$ mysql --version/usr/local/mysql/bin/mysql Ver 14.14 Distrib 5.6.23,for osx10.8(x86_64)using EditLine wrapper
Добавление регистрации (например, я не думаю, что /var/log/...это лучший путь в Mac OS, но это сработало:
sudo vi ./usr/local/mysql-5.6.23-osx10.8-x86_64/my.cnf
[mysqld]
general_log =on
general_log_file=/var/log/mysql/mysqld_general.log
Перезапущенный Mysql
Результат:
$ sudo tail -f /var/log/mysql/mysqld_general.log
1812109:41:0421Connect root@localhost on employees
21 Query /* mysql-connector-java-5.1.47 ( Revision: fe1903b1ecb4a96a917f7ed3190d80c049b1de29 ) */SELECT@@session.auto_increment_increment AS auto_increment_increment,@@character_set_client AS character_set_client,@@character_set_connection AS character_set_connection,@@character_set_results AS character_set_results,@@character_set_server AS character_set_server,@@collation_server AS collation_server,@@collation_connection AS collation_connection,@@init_connect AS init_connect,@@interactive_timeout AS interactive_timeout,@@license AS license,@@lower_case_table_names AS lower_case_table_names,@@max_allowed_packet AS max_allowed_packet,@@net_buffer_length AS net_buffer_length,@@net_write_timeout AS net_write_timeout,@@query_cache_size AS query_cache_size,@@query_cache_type AS query_cache_type,@@sql_mode AS sql_mode,@@system_time_zone AS system_time_zone,@@time_zone AS time_zone,@@tx_isolation AS transaction_isolation,@@wait_timeout AS wait_timeout
21 Query SET NAMES latin1
21 Query SET character_set_results =NULL21 Query SET autocommit=121 Query SELECTUSER()21 Query SELECTUSER()1812109:41:1021 Query show tables
1812109:41:2521 Query select count(*)from current_dept_emp
Ответы:
Запустите mysql с параметром --log:
или поместите следующее в ваш
my.cnf
файл:Любой из них запишет все запросы в log_file_name.
Вы также можете регистрировать только медленные запросы, используя
--log-slow-queries
опцию вместо--log
. По умолчанию запросы, которые занимают 10 секунд или дольше, считаются медленными, вы можете изменить это, указавlong_query_time
количество секунд, которое должен выполнить запрос до регистрации.источник
( Примечание : для mysql-5.6 + это не сработает. Есть решение, которое применимо к mysql-5.6 +, если вы прокрутите вниз или нажмете здесь .)
Если вы не хотите или не можете перезапустить сервер MySQL, вы можете продолжить на своем работающем сервере следующим образом:
mysql
базе данныхисточник
CREATE TABLE
команды должны (если таблицы еще не существуют) выполняться вmysql
базе данных, а не в любых пользовательских базах данных. Возможно, операторы SQL можно обновить, чтобы отразить это.SELECT * FROM mysql.general_log order by (event_time) desc
будет лучше. просто говорю. :-)Помимо того, что я наткнулся здесь, выполнение следующего было самым простым способом вывести запросы в файл журнала без перезапуска
можно отключить с помощью
источник
GRANT SUPER ON *.* TO user1@localhost
Топ ответ не работает в MySQL 5.6+. Используйте это вместо:
в вашем файле my.cnf / my.ini
Ubuntu / Debian : /etc/mysql/my.cnf
ОС Windows : C: \ ProgramData \ MySQL \ MySQL Server 5.x
WAMP : C: \ WAMP \ Bin \ MySQL \ mysqlx.yz \ my.ini
XAMPP : C: \ XAMPP \ MySQL \ Bin \ my.ini.
источник
phpMyAdmin
?general_log_file=filename.log
Включить журнал для таблицы
Просмотр журнала по запросу
источник
Быстрый способ включить MySQL General Query Log без перезапуска.
Я установил mysql через homebrew, версия mysql: mysql Ver 14.14 Distrib 5.7.15, для osx10.11 (x86_64) с использованием оболочки EditLine
источник
Для записи, general_log и slow_log были введены в 5.1.6:
http://dev.mysql.com/doc/refman/5.1/en/log-destinations.html
источник
Вы должны знать, что вход в MySQL действительно влияет на производительность, но это может быть мудрым решением.
Я обычно оставляю это включенным на сервере dev (кроме случаев, когда это сводит нас с ума :))
источник
Версия OS / mysql:
Добавление регистрации (например, я не думаю, что
/var/log/...
это лучший путь в Mac OS, но это сработало:Перезапущенный Mysql
Результат:
источник
В случае использования AWS RDS MYSQL пошаговое руководство здесь.
Если выбран выход «файл», вы можете просматривать журнал непосредственно из консоли «Журнал» AWS RDS.
Регистрация в AWS RDS MYSQL
источник