mysql日志管理

简介

mysql支持4种类型的日志,分别为二进制日志、错误日志、通用查询日志和慢查询日志。

1、二进制日志

该日志的内容为二进制,使用普通的文本编辑器打开文件,将会是乱码,需要使用mysql对应的命令mysqlbinlog进行查看。
查看二进制日志文件

mysqlbinlog hbk-bin.000002

设置暂时停止或开启binlog

set sql_log_bin=0   #暂停
set sql_log_bin=1   #开启

删除所有二进制日志

reset master;

删除小于number的所有二进制日志文件

purge master logs to filename.number

删除指定时间之前所创建的所有二进制日志文件

purge master logs before 'yyyy-mm-dd hh:MM:ss'

2、错误日志

mysql错误日志默认存储在数据文件目录里,默认主机名.error
也可以指定错误存储位置

[mysqld]
error-bin[=dir\[filename]]

这种类型的日志是无法被禁止的

删除错误日志

mysqladmin -u root -p flush-logs

执行上述命令,将创建一个新的错误日志,然后自动将旧的错误日志更名为filename.err-old。如果数据库管理员任务filename.err-old文件没有任何用处,可以直接删除。

3、通用查询日志

通用日志开启,默认mysql是关闭的

[mysqld]
log[=dir\[filename]]

省略目录信息,将保存在数据库数据文件里,默认主机名.log
这个配置一定程度上会影响mysql的性能

通过环境变量的方式动态修改,off为关闭

mysql> set global general_log=on;

通用日志删除,并不像错误日志那样,执行命令会自动生成旧文件,然后生成新文件,如果要备份通用日志,需要手工复制并改名。

mysqladmin -u root -p flush-logs

4、慢查询日志

慢查询日志开启,如果要关闭的话,注释掉并重启mysql服务即可。

[mysqld]
log-slow-queries[=dir\[filename]]
long_query_time=n

默认是关闭的,如果没有指定目录存储位置,将存储在数据文件目录,文件名为默认主机名-show.log,如果没有设置long_query_time选项,默认时间为10秒。上述n的单位是秒

动态修改环境变量实现

mysql> set global show_query_log=on;
mysql> set global long_query_time=3;

注意:通过环境变量开启慢查询日志时,show_query_log针对当前登录的连接实时生效,而long_query_time针对当前连接并不生效,是针对新增的连接有效,如需启用修改后的变量值,需要重新连接mysql

分析慢查询日志
这个是运维管理员必须要掌握的,了解执行时间超过指定时间的查询语句,以便定位mysql服务器的性能瓶颈。mysql提供的工具为mysqldumpslow.pl
这个工具是一个perl语言编写的脚本,执行该脚本需要perl语言环境。
脚本使用参数
“-s”:为分析慢查询日志时指定的排序参数,可选的有:“al”表示平均锁定时间,“ar”表示平均返回记录数,“at”表示平均查询时间
“-t”:表示只显示指定的行数。

mysqldumpshow.pl -s at -t 1 path\to\xxx-slow.log

你可能感兴趣的:(mysql)