Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Доброе время суток, уважаемые форумчане!
Помогите, пожалуйста, разобраться с задачей. Ее решение, чувствую, должно быть на поверхности, но я уже второй день нервы изматываю, и все на месте топчусь. И так как в данном деле я более чем новичок, решил сдаться и обратиться за помощью к опытной общественности.
Задача:
Нужно видеть, какие на сервере выполняются sql-запросы.
Условия:
ОС: Windows XP,
Установлен Денвер (версия mysql 5.0.45) на localhost.
Что пытался сделать: Вывести текст запросов в файл.
Выполнил из командной строки следующие команды (не уверен на 100%, что правильный синтаксис, но по документации, вроде, так):
mysqld --log=allquery.log
mysqld --general_log=1 (это выдало ошибку unknown variable. Судя по документации http://dev.mysql.com/doc/refman/5.0/en/query-log.html , это подходит для боле новых версий mysql)
mysqld --log-output=FILE (это тоже выдало ошибку unknown variable)
В результате появился файл allquery.log, но кроме первоначальной системной записи ничего туда не пишется. В интернете читал, что надо указать FILE для log-output для возможности вывода логов, но это у меня не получилось (да и об этой возможности говорится в документации только для MySQL 5.1 и выше - http://dev.mysql.com/doc/refman/5.1/en/query-log.html).
Подскажите, пожалуйста, что надо сделать, чтобы увидеть, какие выполняются запросы? Спасибо заранее.
Неактивен
Самый простой способ включить журналирование запросов - добавить параметр log в my.ini:
[mysqld]
log = c:/logfile
После перезапуска службы, сервер будет писать запросы в этот файл.
Остальные параметры введены в 5.1, их писать не нужно.
Неактивен
Спасибо, paulus!
Неактивен
Здравствуйте. У меня тоже возникла необходимость проматривать все запросы... но вот логирование что то не хочет включаться, а вроде всё правильно настроено...
mysql> SELECT VERSION(); +---------------------+ | VERSION() | +---------------------+ | 5.1.37-1ubuntu4-log | +---------------------+ 1 row in set (0,00 sec) mysql> SHOW VARIABLES LIKE "%log%"; +---------------------------------+---------------------------------+ | Variable_name | Value | +---------------------------------+---------------------------------+ | back_log | 50 | | binlog_cache_size | 32768 | | binlog_format | STATEMENT | | expire_logs_days | 10 | | general_log | ON | | general_log_file | /var/run/mysqld/mysqld.log | | innodb_flush_log_at_trx_commit | 1 | | innodb_locks_unsafe_for_binlog | OFF | | innodb_log_buffer_size | 1048576 | | innodb_log_file_size | 5242880 | | innodb_log_files_in_group | 2 | | innodb_log_group_home_dir | ./ | | innodb_mirrored_log_groups | 1 | | log | ON | | log_bin | OFF | | log_bin_trust_function_creators | OFF | | log_bin_trust_routine_creators | OFF | | log_error | | | log_output | FILE | | log_queries_not_using_indexes | OFF | | log_slave_updates | OFF | | log_slow_queries | OFF | | log_warnings | 1 | | max_binlog_cache_size | 4294963200 | | max_binlog_size | 104857600 | | max_relay_log_size | 0 | | relay_log | | | relay_log_index | | | relay_log_info_file | relay-log.info | | relay_log_purge | ON | | relay_log_space_limit | 0 | | slow_query_log | OFF | | slow_query_log_file | /var/run/mysqld/mysqld-slow.log | | sql_log_bin | ON | | sql_log_off | OFF | | sql_log_update | ON | | sync_binlog | 0 | +---------------------------------+---------------------------------+ 37 rows in set (0,00 sec) mysql> SELECT * FROM user ORDER BY RAND() LIMIT 1; +------+------------+-----------+---------------------+---------------+----------+ | id | first_name | last_name | create_date | friends_count | user_id | +------+------------+-----------+---------------------+---------------+----------+ | 8510 | ??????? | ?????? | 2009-08-28 23:23:42 | 0 | 12321473 | +------+------------+-----------+---------------------+---------------+----------+ 1 row in set (0,13 sec)
Вроде все переменные, необходимые для того, чтобы вёлся общий лог включены, однако, после всех этих махинаций смотрим на файл, куда должен валиться лог и видим, что его размер - 0 байт... т.е. там ничего нету.
zeleniy@zeleniy-laptop:/var/run/mysqld$ ls -l total 4 -rw-rw---- 1 mysql mysql 0 2009-10-18 16:54 mysqld.log -rw-rw---- 1 mysql mysql 6 2009-10-18 21:32 mysqld.pid -rw-rw---- 1 mysql mysql 0 2009-10-18 17:27 mysqld-slow.log srwxrwxrwx 1 mysql mysql 0 2009-10-18 21:32 mysqld.sock=
В чём может быть проблема ?
Неактивен
Проблема в том, что логи принято сохранять в /var/log, а в /var/run хранится
информация по сокетам и пидам
Корень Ваших бед кроется в файлике /etc/apparmor.d/usr.sbin.mysqld, возможно,
вообще apparmor стоит выключить. С другой стороны, хранить логи в /var/log —
здравая идея.
Неактивен
Хм хм хм... большое спасибо ))
Неактивен
Страниц: 1