Mysql日志管理
Mysql日志分为:二进制文件、错误日志、删除日志文件
在Mysql软件所支持的日志文件里。除了二进制文件外,其他日志文件都是文本文件
默认情况下。MySQL软件只会启动错误日志文件,而其他日志文件则需要手动启动才可以被启动。
- MySQL软件所支持的日志
- 二进制日志文件:该日志问价会以二进制形式记录数据库的各种操作,但却不记录查询语句
- 错误日志:该日志文件会记录MySQL服务器启动、关闭和运行时出错等信息。
- 通用查询日志:该日志记录MySQL服务器的启动和关闭信息,客户端的连接信息、更新数据记录的SQL语句和查询数据记录SQL语句
- 慢查询日志:记录执行时间超过指定时间的各种操作,通过工具分析慢查询日志可以定位 MySQL服务其性能瓶颈所在。
- 启动日志后可以实现对服务器进行维护,但是会降低MySQL软件的执行速度
一、操作二进制日志
(一)启动二进制日志
- 默认情况下,二进制日期是关闭的,如果想启动二进制日志,可以通过设置MySQL服务器的配置文件my.ini来实现
- 如果mysql数据库意外停止,可以通过二进制日志文件来查看用户执行了哪些操作。对数据库服务器进行了哪些修改,然后根据二进制文件中的记录来恢复数据库服务器
[mysqld]
log-bin[=dir[filename]]
在上述语句中,参数dir用来指定,二进制文件的存储路径,参数filename用来指定二进制文件的文件名,具体的格式为filename.number,其中
eg:
[mysqld]
log-bin=D:mysqlloginlog
(二)查看二进制日志
mysqlbinlog filename.number
在上述命令中,参数filename.number表示所要查看的二进制日志
注意:要进入存放二进制日志的目录,再执行该命令
(三)停止二进制日志
SET SQL_LOG_BIN=0
SET SQL_LOG_BIN=1
当设置SQL_LOG_BIN的值为0时,表示暂停二进制日志功能,当设置SQL_LOG_BIN的值为1时,表示重新开启二进制功能。
注意:只有拥有SUOER权限的用户,才可以执行SET语句
(四)删除二进制日志
RESET MASTER;
执行上述命令可以删除所有二进制文件
PURGE MASTER LOGS TO filename.number
执行上述命令,可以删除编号小于number的所有二进制日志文件
PURGE MASTER LOGS BEFORE 'yyyy-mm-dd hh:MM:ss'
执行上述命令,可以删除指定时间之前所创建的所有二进制日志文件
二、操作错误日志
在MySQL数据库服务器里,错误日志默认是开启的,同时该种类型的日志也是无法被禁止的。
错误日志一般存放在Mysql服务器的数据文件夹下(C:/ProgramFilesMySQL/MySQL Server 5.0 data),错误日志文件通常的名称格式,为hostname.err,其中参数hostname表示MySQL服务器的主机名
(一)启动错误日志
- 如果想修改错误日志的存放目录,可以通过设置MySQL服务器的配置文件my.ini来实现
[mysqld]
error-bin[dir/[filename]]
(二)查看错误日志
错误日志是以文本文件的形式存储内容,所以可以直接使用普通文本工具来查看该类型的日志内容。
(三)删除错误日志
mysqladmin -u root -p flush-logs
执行上述命令,MySQL首先会创建一个新的错误日志,然后将旧的错误日志更名为filename.err-old。如果数据库管理员认为filename.err-old文件没有任何用处,既没有任何存在的理由,可以直接删除。
三、通用日志查询
通用查询日志主要用来记录用户关于MySQL服务器的所有操作,包含了MySQL服务器的启动和关闭信息,客户端的连接信息,更新数据记录SQL语句和查询数据记录SQL语句。
一般建议关闭此日志,需要时可以通过设置环境变量打开。
(一)启动日志查询
默认情况下,通用查询日志是关闭的,如果想启动通用查询日志,可以通过设置Mysql服务器的配置文件my.ini来实现。
#通过设置my.ini设置文件
[mysqld]
log [=dirfilename]
#通过设置环境变量启动日志
#通过设置环境变量general_log进行通用日志的动态控制,on表示开启
mysql > set global general_log=on;
#查看相关环境变量
mysql > show varibles like '%general_log%' G
四、慢查询日志
主要用来记录执行时间超过指定时间的查询语句,通过查看该类型的日志文件,可以查找到哪些查询语句的执行效率低,以便找出MySQL服务器的性能瓶颈从而进行优化。
(一)启动慢查询日志
默认情况下,慢查询日志是关闭的,如果想启动慢查询日志,可以通过设置MySQL服务器的配置文件my.ini
[mysqld]
log-slow-queries[=dir[filename]]
long_query_time=n
#通过设置环境变量general_log进行通用日志的动态控制,on表示开启
mysql > set global slow_query_log=on;
mysql > set global long_query_time=3;
(二)分析慢查询日志
MySQL提供了对应的工具用于分析MySQL慢查询日志的内容,,对应的工具为mysqldumpslow.pl