mysql支持4种类型的日志,分别为二进制日志、错误日志、通用查询日志和慢查询日志。
该日志的内容为二进制,使用普通的文本编辑器打开文件,将会是乱码,需要使用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'
mysql错误日志默认存储在数据文件目录里,默认主机名.error
也可以指定错误存储位置
[mysqld]
error-bin[=dir\[filename]]
这种类型的日志是无法被禁止的
删除错误日志
mysqladmin -u root -p flush-logs
执行上述命令,将创建一个新的错误日志,然后自动将旧的错误日志更名为filename.err-old。如果数据库管理员任务filename.err-old文件没有任何用处,可以直接删除。
通用日志开启,默认mysql是关闭的
[mysqld]
log[=dir\[filename]]
省略目录信息,将保存在数据库数据文件里,默认主机名.log
这个配置一定程度上会影响mysql的性能
通过环境变量的方式动态修改,off为关闭
mysql> set global general_log=on;
通用日志删除,并不像错误日志那样,执行命令会自动生成旧文件,然后生成新文件,如果要备份通用日志,需要手工复制并改名。
mysqladmin -u root -p flush-logs
慢查询日志开启,如果要关闭的话,注释掉并重启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