常规查询日志
通用查询日志包含来自客户端连接,断开连接和查询的常规信息列表。它对于调试是非常宝贵的,但它却成为性能的障碍(引用?)。
一般查询日志的示例视图如下所示:
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 手册页 常规查询日志 。