【问题标题】:Cant get general log to show queries in mysql无法获取常规日志以在 mysql 中显示查询
【发布时间】:2013-05-26 18:54:11
【问题描述】:

不确定这里发生了什么,据我所知,一切都已按预期设置,但日志保持为空:

[root@myLaptop Me]# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
[mysqld_safe]
log-error=/var/log/mysqld.log
log=/var/log/mysqld.general.log
general_log_file=/var/log/mysqld.general.log
pid-file=/var/run/mysqld/mysqld.pid
[root@myLaptop Me]# service mysqld stop
Redirecting to /bin/systemctl stop  mysqld.service
[root@myLaptop Me]# service mysqld start
Redirecting to /bin/systemctl start  mysqld.service
[root@myLaptop Me]# mysql -u root -p
Enter password: 
... Welcome stuff
Server version: 5.5.30 MySQL Community Server (GPL)
mysql> SET GLOBAL log_output = "FILE";SET GLOBAL general_log = 'ON';
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.05 sec)

mysql> SHOW PROCESSLIST;
+----+------+-----------+------+---------+------+-------+------------------+
| Id | User | Host      | db   | Command | Time | State | Info             |
+----+------+-----------+------+---------+------+-------+------------------+
|  3 | root | localhost | NULL | Query   |    0 | NULL  | SHOW PROCESSLIST |
+----+------+-----------+------+---------+------+-------+------------------+
1 row in set (0.00 sec)

mysql> quit
Bye
[root@myLaptop Me]# tail /var/log/mysqld.general.log 
[root@myLaptop Me]# <= shows nothing at all
[root@myLaptop Me]# ls -l /var/log/mysqld.general.log 
-rw-r--r--. 1 mysql mysql 0 May 31 10:06 /var/log/mysqld.general.log
[root@myLaptop Me]# tail /var/log/mysqld.log
130531 10:28:04 InnoDB: Completed initialization of buffer pool
130531 10:28:04 InnoDB: highest supported file format is Barracuda.
130531 10:28:04  InnoDB: Waiting for the background threads to start
130531 10:28:05 InnoDB: 5.5.30 started; log sequence number 2969208
130531 10:28:05 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
130531 10:28:05 [Note]   - '0.0.0.0' resolves to '0.0.0.0';
130531 10:28:05 [Note] Server socket created on IP: '0.0.0.0'.
130531 10:28:05 [Note] Event Scheduler: Loaded 0 events
130531 10:28:05 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.5.30'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MySQL Community Server (GPL)

[更新]

我认为fedora 17使用覆盖my.cnf的参数启动mysql,日志不是my.cnf告诉它的位置:

[root@Laptop Symfony]# mysql -u root -p
mysql> select @@global.general_log_file;
+----------------------------+
| @@global.general_log_file  |
+----------------------------+
| /var/lib/mysql/Laptop.log |
+----------------------------+

【问题讨论】:

    标签: mysql logging


    【解决方案1】:

    首先,我会检查日志记录选项

    在我的服务器上,我总是在 /var/log 中创建一个新目录并将其“提供”给 mysql(以 root 或通过 sudo 执行)

    sudo mkdir /var/log/mysql
    sudo chown mysql:mysql /var/log/mysql
    

    那么 my.cnf 中的所有日志记录选项都是该目录中的一个文件

    log=/var/log/mysql/general.log
    log-error=/var/log/mysql/error.log
    log-slow-queries=/var/log/mysql/slowquery.log
    

    无论如何,mysql 可以创建和访问文件。此外,它有助于一次访问所有 mysql 日志文件,因为 /var/log 目录非常忙于处理许多与 mysql 无关的事情。

    那么,作为当前日志文件为空的原因,可能是在查看文件的时候缓存了一些日志信息。要强制 mysql 写入文件(或底层 IO 库)以使文本在 mysql 外部可见(即tail),您可以执行 (mysql命令)

    FLUSH LOGS;
    

    空日志文件上有一个interesting article

    【讨论】:

    • 感谢您的回复,即使在数小时后检查 /var/log/mysqld.general.log 仍然为空,可能某些内容覆盖了日志位置,当启动 mysql 时,fedora 可能会添加需要占用的命令参数优先于 my.cnf 不知道如何从 mysql 中读取这些值。
    • 是的,似乎 mysql 在使用 service mysqld start 启动它时完全忽略了 my.cnf 它可能会添加启动参数。我已经用 Fedora 17 中日志的实际位置更新了我的问题
    • 环,请您添加:select @@global.general_log_file;检查mysql记录的位置。我可以选择你的答案作为正确的答案。
    • 我的准确给出了我的 my.cnf (这是一个非常私密的目录)中的内容 - 再次检查 [mysqld] 部分以确保您没有重复声明。还要注意 cnf 位置发生了变化:检查您是否有一个带有 cnf/etc/mysql/ 目录,或者是否有 my.cnf直接在/etc ...
    • 我不确定这里发生了什么尝试启动 mysqld,如:su mysql;/usr/libexec/mysqld;没有关于配置文件的警告或错误,但仍然记录到 /var/lib/mysql/Laptop.log 几乎就像 my.cgf 可能不存在一样。
    【解决方案2】:

    确保变量:general_log=ON,如果该变量为“OFF”,mysql不会向general_log文件打印任何内容。

    你可以查看mysql错误日志文件来查找是否有任何错误发生

    【讨论】:

    • 在 my.cnf 中添加 general_log=ON 并获取日志。我确实重新安装了所有东西,所以可能还有其他一些变化。删除该行(并使用 SQL 语句设置)时没有测试它,但它现在可以工作
    猜你喜欢
    • 2012-08-12
    • 2011-08-04
    • 1970-01-01
    • 1970-01-01
    • 2011-06-05
    • 2014-03-26
    • 1970-01-01
    • 2017-04-29
    • 1970-01-01
    相关资源
    最近更新 更多