常规查询日志

通用查询日志包含来自客户端连接,断开连接和查询的常规信息列表。它对于调试是非常宝贵的,但它却成为性能的障碍(引用?)。

一般查询日志的示例视图如下所示:

http://i.stack.imgur.com/3dWFH.jpg

要确定当前是否正在捕获常规日志:

SELECT @@general_log; -- 1 = Capture is active; 0 = It is not.

要确定捕获文件的文件名:

SELECT @@general_log_file; -- Full path to capture file

如果未显示文件的完整路径,则文件存在于 datadir 中。

Windows 示例:

+----------------------------------------------------------+
| @@general_log_file                                       |
+----------------------------------------------------------+
| C:\ProgramData\MySQL\MySQL Server 5.7\Data\GuySmiley.log |
+----------------------------------------------------------+

Linux:

+-----------------------------------+
| @@general_log_file                |
+-----------------------------------+
| /var/lib/mysql/ip-ww-xx-yy-zz.log |
+-----------------------------------+

当对 general_log_file GLOBAL 变量进行更改时,新日志将保存在 datadir 中。但是,通过检查变量可能不再反映完整路径。

如果配置文件中没有 general_log_file 的条目,它将默认为 datadir 中的 @@hostname.log。

最佳做法是关闭捕获。将日志文件保存到备份目录,其文件名反映捕获的开始/结束日期时间。如果该文件没有发生文件系统*移动,*则删除先前的文件。为日志文件建立一个新文件名并打开捕获(全部显示如下)。如果你现在想要捕获,最佳实践还包括仔细确定。通常,捕获为 ON 仅用于调试目的。

备份日志的典型文件系统文件名可能是:

/LogBackup/GeneralLog_20160802_1520_to_20160802_1815.log

其中日期和时间是文件名的一部分作为范围。

对于 Windows,请注意以下序列并进行设置更改。

SELECT @@general_log; -- 0. Not being captured
SELECT @@general_log_file; -- C:\ProgramData\MySQL\MySQL Server 5.6\Data\GuySmiley.log
SELECT @@datadir; -- C:\ProgramData\MySQL\MySQL Server 5.7\Data\
SET GLOBAL general_log_file='GeneralLogBegin_20160803_1420.log'; -- datetime clue
SET GLOBAL general_log=1; -- Turns on actual log capture. File is created under `datadir`
SET GLOBAL general_log=0; -- Turn logging off

Linux 类似。这些将代表动态变化。任何重启服务器都会获取配置文件设置。

对于配置文件,请考虑以下相关变量设置:

[mysqld]
general_log_file = /path/to/currentquery.log
general_log      = 1

另外,变量 log_output 可以配置为 TABLE 输出,而不仅仅是 FILE。为此,请参阅目的地

请参阅 MySQL 手册页 常规查询日志