一、配置mysqlrizhi/ target=_blank class=infotextkey>mysql日志输出路径
从5.1.6版本开始,mysql提供了更灵活的方式控制日志文件的输出以及输出路径。
在mysql数据库日志文件中,mysql的标准日志(特指general_log和slow_log),即可以输出到文件,同时也能够以表的形式保存在数据库mysql中的同名表内,而在5.1.6版本之前,只记录日志到文件。
提示:
从5.1.6版本开始,日志表会在安装过程中随其它系统表一同创建。如果是从5.1.6之前的版本升级而来,那么dba需要注意,要手动升级系统表,以确保相关日志表存在。
当前,日志记录到系统的专用日志表中,要比记录到文件耗费更多的系统资源,因此对于需要启用日志,又需要能够获得更高的系统性能,那么建议优先记录到文件。
不过,记录到系统表当然也有它的好处,比如说这类表可以通过简单的授权,即可让所有连接到mysql数据库的用户查看到日志中记录的内容,而且日志表可以通过sql语句访问,这样也可以快速通过sql语句的强大功能进行数据过滤,这都是日志文件不易做到的功能。
二、服务启动时进行配置
mysql命令行在启动时可以加载很多参数,其中就提供了一个日志专用的参数--log-output,用来指定日志文件的输出方式。
注意,说的是输出方式,也就是说到底是记录到操作系统中的文件,还是记录到数据库系统中的专用表。
--log-output参数可选值有三个:
table:记录到数据库中的日志表;
file:记录到日志文件,默认值即为file (在5.1.6到5.1.20版本时,默认值为table);
none:不记录。
上述参数值在设置时可以同时指定多个,相互之间以","逗号分隔即可。
在指定--log-output参数值不为none的基础上,才有可能继续日志文件输出路径的设置,要控制普通查询日志或是慢查询日志文件的生成,又有另外的参数:
--general_log:控制是否生成普通查询日志,可选值有两个:1表示启用,0表示禁用,默认值为:0,不过当指定了该参数而不指定参数值时,默认值为1;
--general_log_file:5.1.29版本后开始支持该参数,用来指定普通查询日志文件的文件名及输出路径,默认文件名为[host_name].log;
--slow_query_log:控制是否生成慢查询日志,可选值有两个:1表示启用,0表示禁用,默认值为:0,不过当指定了该参数而不指定参数值时,默认值为1;
--slow_query_log_file:5.1.29版本后开始支持该参数,用来指定慢查询日志文件的文件名及输出路径,默认文件名为[host_name]-slow.log:
提示:
在5.1.29版本之前,没有--general_log_file和--slow_query_log_file这两个参数,控制文件名及输出路径是通过--log和--log-slow-queries两个参数。
--log:指定普通查询日志的输出路径,并启用日志输出功能,默认文件名为[host_name].log,该参数在5.1.29版本后废弃;
--log-slow_queries:指定慢查询日志的输出路径,并启用日志输出功能,默认文件名为[host_name]-slow.log,该参数在5.1.29版本后废弃。
文学描述如果觉着不够清晰,那就看下面几个例子再强化一下吧,比如说:
仅启用普通查询日志,并记录到mysql日志文件和日志表,则启动mysql服务时设置参数如下:
--log-output=table,file --general_log
启用普通查询日志和慢查询日志,日志记录到数据库中的日志表,启动mysql服务时设置参数如下:
--log-output=table --general_log --slow_query_log
仅启用慢查询日志,记录到日志文件,设置参数如下:
--log-output=file --slow_query_log
仅启用慢查询日志,记录到日志文件,并指定输出路径,设置参数如下:
--log-output=file --slow_query_log --slow_query_log_file=/data/mysql/logs/slow.log
三、服务运行中进行配置
mysql提供了非常多的系统环境变量,用来控制mysql服务运行时的状态。
其中,有不少的系统变量与mysql命令行中的参数相似度极高,甚至包括名称、功能、参数值语法等都一模一样,如果要说有区别的话,就是命令行参数是在命令执行时调用,一经设置,除非重新运行命令行,否则无法修改,而很多系统环境变量,则支持服务运行过程中进行动态的修改,这其中,就包括与日志文件配置相关的一些参数:
log_output:
general_log&slow_query_log:
general_log_file&slow_query_log_file:
上面这几个参数均支持全局动态修改,参数的功能与前面命令行中同名参数完全相同,就不多说了,着重描述下面这个参数:
sql_log_off:可选参数值为on/off(1/0亦可,mysql系统环境变量的设置非常灵活,将另起章节专门描述),用来指定是否启用/禁用当前会话执行的语句记录到普通查询日志,默认值为off。该参数是个会话级参数,用户必须要拥有super权限才能够设置该选项。