MySQL服务器提供灵活的控制目标输出写入到通用查询日志和慢速查询日志,如果这些日志启用。可能的目的地是日志文件或日志条目general_log
和slow_log
表mysql
系统数据库。文件输出,表输出,或者两个都可以选择。
的log_output
系统变量指定日志输出的目的地。设置这个变量本身不启用日志;他们必须单独启用。
如果
log_output
在启动时没有指定,缺省日志目的地吗文件
。如果
log_output
指定在启动时,它的值是一个列表选择一个或多个以逗号分隔的单词表
(日志表),文件
(日志文件),或没有一个
(不要日志表或文件)。没有一个
如果存在,优先于任何其他说明符。
的general_log
系统变量控制日志一般为选中的日志目的地查询日志。如果指定在服务器启动时,general_log
接受一个可选参数的1或0来启用或禁用日志。指定非默认文件名文件日志记录、设置general_log_file
变量。类似地,slow_query_log
变量控制日志为选定的目的地和慢速查询日志设置slow_query_log_file
指定一个文件名文件日志记录。如果启用了日志,服务器打开相应的日志文件和启动消息写道。然而,进一步的查询日志文件不会,除非发生文件
选择日志目的地。
例子:
编写通用查询日志记录到日志表和日志文件,使用
——log_output =表,文件
选择日志目的地和——general_log
启用查询日志。一般只和慢速查询日志条目写入日志表,使用
——log_output =表
日志目的地,选择表——general_log
和——slow_query_log
启用日志。只写慢查询日志记录到日志文件,使用
——log_output =文件
选择文件和日志目的地——slow_query_log
使慢速查询日志。在这种情况下,因为默认日志目的地文件
,你可以省略了log_output
设置。
与日志表和文件相关的系统变量启用运行时控制日志记录:
的
log_output
变量显示当前日志目的地。它可以在运行时修改改变目的地。的
general_log
和slow_query_log
变量显示通用查询日志和慢速查询日志是否启用(在
)或禁用(从
)。你可以设置这些变量在运行时控制是否启用了日志。的
general_log_file
和slow_query_log_file
变量表示的名称一般查询日志和慢速查询日志文件。你可以设置这些变量在服务器启动或在运行时改变日志文件的名称。禁用或启用通用查询日志记录当前会话,设置会话
sql_log_off
变量来在
或从
。(这个假设启用了通用查询日志本身)。
表的使用日志输出提供了以下好处:
日志条目有一个标准的格式。显示当前日志表的结构,使用这些语句:
显示创建表mysql.general_log;显示创建表mysql.slow_log;
日志内容通过SQL语句来访问。这使得使用查询,只选择那些满足特定条件的日志条目。例如,选择与一个特定的客户端相关的日志内容(可用于识别有问题的查询从客户端),更容易做到这一点比一个日志文件使用日志表。
日志可以通过任何远程访问客户端可以连接到服务器和发出查询(如果客户有适当的日志表特权)。不需要登录到服务器主机和直接访问文件系统。
日志表实现具有以下特点:
一般来说,日志表的主要目的是为用户提供一个接口观察服务器的运行时执行,不要干扰它的运行时执行。
创建表
,ALTER TABLE
,删除表
是有效的操作日志表。为ALTER TABLE
和删除表
,日志表中不能使用,必须禁用,如后所述。默认情况下,日志表使用
CSV
以逗号分隔值格式写入数据的存储引擎。用户访问. csv
包含日志表数据的文件,这些文件很容易导入电子表格等其他程序可以处理CSV输入。可以改变使用日志表
MyISAM
存储引擎。你不能使用ALTER TABLE
改变一个日志表的使用。日志必须先被禁用。没有引擎以外CSV
或MyISAM
日志表是合法的。日志表和”打开的文件太多”错误。如果您选择
表
作为一个使用日志目的地和日志表CSV
存储引擎,你会发现禁用和启用一般查询日志或慢速查询日志反复在运行时的结果在一个打开的文件描述符的数量. csv
文件,可能导致”打开的文件太多”错误。为了解决这个问题,执行刷新表
或保证的价值open_files_limit
大于的价值table_open_cache_instances
。禁用日志记录,这样你就可以改变(或下降)日志表,您可以使用以下策略。例子使用了通用查询日志;慢速查询日志的过程是相似的,但使用
slow_log
表和slow_query_log
系统变量。设置@old_log_state = @@GLOBAL.general_log;集全球general_log =“关闭”;ALTER TABLE mysql。general_logENGINE = MyISAM; SET GLOBAL general_log = @old_log_state;
截断表
是一个有效的操作日志表。它可以用于日志条目过期。重命名表
是一个有效的操作日志表。您可以自动重命名一个日志表(例如执行日志轮换)使用以下策略:使用mysql;删除表如果存在general_log2;创建表general_log2像general_log;重命名表general_log general_log_backup, general_log2 general_log;
检查表
是一个有效的操作日志表。锁表
不能使用日志表。条目写入到日志表未写入二进制日志,从而不复制副本。
日志表的分区是不允许的。
一个,mysqldump转储包括语句来创建这些表,这样他们不会失踪重载转储文件。日志表内容不倾倒。