SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 28.01.2009 03:39:15

Mik
Участник
Зарегистрирован: 28.01.2009
Сообщений: 2

Как посмотреть текст выполняемых запросов (пытался, не получилось)

Доброе время суток, уважаемые форумчане!

Помогите, пожалуйста, разобраться с задачей. Ее решение, чувствую, должно быть на поверхности, но я уже второй день нервы изматываю, и все на месте топчусь. И так как в данном деле я более чем новичок, решил сдаться и обратиться за помощью к опытной общественности.

Задача:
Нужно видеть, какие на сервере выполняются 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).

Подскажите, пожалуйста, что надо сделать, чтобы увидеть, какие выполняются запросы? Спасибо заранее.

Неактивен

 

#2 28.01.2009 14:24:44

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Как посмотреть текст выполняемых запросов (пытался, не получилось)

Самый простой способ включить журналирование запросов - добавить параметр log в my.ini:
[mysqld]
log = c:/logfile
После перезапуска службы, сервер будет писать запросы в этот файл.

Остальные параметры введены в 5.1, их писать не нужно.

Неактивен

 

#3 28.01.2009 20:19:16

Mik
Участник
Зарегистрирован: 28.01.2009
Сообщений: 2

Re: Как посмотреть текст выполняемых запросов (пытался, не получилось)

Спасибо, paulus!

Неактивен

 

#4 18.10.2009 21:53:58

zeleniy
Участник
Зарегистрирован: 18.10.2009
Сообщений: 5

Re: Как посмотреть текст выполняемых запросов (пытался, не получилось)

Здравствуйте. У меня тоже возникла необходимость проматривать все запросы... но вот логирование что то не хочет включаться, а вроде всё правильно настроено...

Код:

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=

В чём может быть проблема ?

Неактивен

 

#5 19.10.2009 21:48:29

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Как посмотреть текст выполняемых запросов (пытался, не получилось)

Проблема в том, что логи принято сохранять в /var/log, а в /var/run хранится
информация по сокетам и пидам smile

Корень Ваших бед кроется в файлике /etc/apparmor.d/usr.sbin.mysqld, возможно,
вообще apparmor стоит выключить. С другой стороны, хранить логи в /var/log —
здравая идея.

Неактивен

 

#6 20.10.2009 13:20:49

zeleniy
Участник
Зарегистрирован: 18.10.2009
Сообщений: 5

Re: Как посмотреть текст выполняемых запросов (пытался, не получилось)

Хм хм хм... большое спасибо ))

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson